Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

di_simplest.c

Go to the documentation of this file.
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     // Paranoia, not really required
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     // Loop until signal handler sets 'do_exit' flag on ctrl-c
00118     while(do_exit == false)
00119     {
00120         // Read data from DI-194
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         // Print out latest data once per second
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             printf("%5.2f (%d) %5.2f (%d) %5.2f (%d) %5.2f (%d) %1d %1d %1d\n",
00142                    data.analog[0], data.raw[0],
00143                    data.analog[1], data.raw[1],
00144                    data.analog[2], data.raw[2],
00145                    data.analog[3], data.raw[3],
00146                    data.digital[0],
00147                    data.digital[1],
00148                    data.digital[2]);
00149             */
00150             last_read = time(NULL);
00151             fflush(stdout);
00152           }
00153    }
00154 
00155     di_close(DI_FD);
00156     return(0);
00157 }

Generated on Thu May 1 11:31:45 2003 for DI-194 driver by doxygen1.3