#include <stdio.h> #include <errno.h> #include <sys/time.h> #include <sys/types.h> #include <fcntl.h> #include <unistd.h> #include <sys/ioctl.h> //#include <rtl_fifo.h> //#include <rtl_sched.h> //#include <rtl_time.h> #include "DIO96.h" #include "control.h" //hrtime_t samtime; //hrtime_t samtime_old = 0; int main() { unsigned char buf[10]; fd_set rfds; struct timeval tv; int retval; int fd0, fd1, ctl, sem; int n; unsigned char data_ready; struct msg_struct msg; FILE *fp0; if((fp0 = fopen("data_file", "w"))<0) { fprintf(stderr, "Error opening data_file\n"); exit(1); } if ((fd0 = open("/dev/rtf0", O_RDONLY)) < 0) { fprintf(stderr, "Error opening /dev/rtf0\n"); exit(1); } if ((fd1 = open("/dev/rtf1", O_RDONLY)) < 0) { fprintf(stderr, "Error opening /dev/rtf1\n"); exit(1); } if ((ctl = open("/dev/rtf2", O_WRONLY)) < 0) { fprintf(stderr, "Error opening /dev/rtf2\n"); exit(1); } if ((sem = open("/dev/rtf4", O_RDONLY)) < 0) { fprintf(stderr, "Error opening /dev/rtf4\n"); exit(1); } msg.command = START_TASK; msg.period = TICK_RESOLUTION; /* 1ns per tick */ msg.conf = DIO96_CONF; msg.buffer_size=BUFSIZE/2; if (write(ctl, &msg, sizeof(msg)) < 0) { fprintf(stderr, "Can't send a command to RT-task\n"); exit(1); } while(1) { FD_ZERO(&rfds); FD_SET(sem, &rfds); tv.tv_sec = 2; tv.tv_usec = 0; retval = select(sem+1, &rfds, NULL, NULL, &tv); if (retval >0) { n = read(sem, &data_ready, 1); printf("FIFO 0x%x: ", data_ready); if(data_ready==0x00) { read(fd0, buf, BUFSIZE); printf("fd0=0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x\n", buf[0],buf[1],buf[2],buf[3],buf[4],buf[5],buf[6],buf[7],buf[8],buf[9]); } if(data_ready==0x01) { read(fd1, buf, BUFSIZE); printf("fd1=0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x\n", buf[0],buf[1],buf[2],buf[3],buf[4],buf[5],buf[6],buf[7],buf[8],buf[9]); } } } close(fd0); close(fd1); close(ctl); return 0; }