00001
00011 #include <sys/types.h>
00012
00013 #include <stdlib.h>
00014 #include <math.h>
00015 #include <unistd.h>
00016 #include <stdint.h>
00017
00018 #include "di194.h"
00019
00021 bool do_exit;
00022
00023
00034 void sighandler(int signal)
00035 {
00036 char me[] = "sighandler";
00037
00038 fprintf(stderr, "\n%s: Got signal %d, exiting\n", me, signal);
00039 fflush(stderr);
00040
00041 do_exit = true;
00042
00043 return;
00044 }
00045
00046
00067 int main(int argc, char *argv[])
00068 {
00069 int rc;
00070 daq_reading_t data;
00071 int DI_FD = -1;
00072 time_t last_read, delta_t;
00073 int num_bits = 8;
00074
00075
00076 printf("\nInstalling signal handler.");
00077 do_exit = false;
00078 signal(SIGINT, sighandler);
00079 signal(SIGPIPE, sighandler);
00080
00081 printf("\nOpening device");
00082 fflush(stdout);
00083
00084 DI_FD = di_open(NULL, &num_bits);
00085 if(DI_FD <= 0)
00086 {
00087 fprintf(stderr, "\nError %d opening device\n", rc);
00088 di_close(DI_FD);
00089
00090 return(rc);
00091 }
00092
00093 printf("\nStarting DAQ running, we have %d bits of precision",
00094 num_bits);
00095
00096 rc = di_start(DI_FD);
00097 if(rc != 0)
00098 {
00099 fprintf(stderr, "\nError %d starting DAQ\n", rc);
00100 di_close(DI_FD);
00101
00102 return(rc);
00103 }
00104
00105
00106 rc = di_daq_sync(DI_FD);
00107 if(rc != 0)
00108 {
00109 fprintf(stderr, "\nError %d syncing DAQ\n", rc);
00110 di_close(DI_FD);
00111
00112 return(rc);
00113 }
00114
00115 last_read = time(NULL);
00116
00117
00118 while(do_exit == false)
00119 {
00120
00121 rc = di_read(DI_FD, &data, num_bits);
00122 if(rc != 0)
00123 {
00124 fprintf(stderr, "\nError %d reading data", rc);
00125 break;
00126 }
00127
00128
00129 delta_t = time(NULL) - last_read;
00130 if(delta_t > 0)
00131 {
00132 printf("\n%5.2f %5.2f %5.2f %5.2f %1d %1d %1d",
00133 data.analog[0],
00134 data.analog[1],
00135 data.analog[2],
00136 data.analog[3],
00137 data.digital[0],
00138 data.digital[1],
00139 data.digital[2]);
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149
00150 last_read = time(NULL);
00151 fflush(stdout);
00152 }
00153 }
00154
00155 di_close(DI_FD);
00156 return(0);
00157 }