Initial revision
[comedilib.git] / demo / inpn.c
1 /*
2    This demo opens /dev/comedi0 and looks for an analog input
3    subdevice.  If it finds one, it measures one sample on each
4    channel for each input range.  The value NaN indicates that
5    the measurement was out of range.
6  */
7
8 #include <stdio.h>
9 #include <comedilib.h>
10 #include <fcntl.h>
11 #include <unistd.h>
12 #include <sys/ioctl.h>
13 #include <errno.h>
14 #include <getopt.h>
15 #include <ctype.h>
16
17 extern int verbose_flag;
18 extern int subdevice;
19 extern int range;
20 extern int channel;
21 extern int aref;
22 extern char *filename;
23
24 comedi_t *device;
25
26
27 int main(int argc, char *argv[])
28 {
29         int n_subdevs;
30         int n_chans,chan;
31         int n_ranges;
32         int range;
33         int rangetype;
34         int maxdata;
35         lsampl_t data;
36         double voltage;
37
38         parse_options(argc,argv);
39
40         device=comedi_open(filename);
41         if(!device){
42                 comedi_perror(filename);
43                 exit(0);
44         }
45
46         subdevice=comedi_find_subdevice_by_type(device,COMEDI_SUBD_AI,0);
47         if(subdevice<0){
48                 printf("no analog input subdevice found\n");
49                 exit(0);
50         }
51
52         n_chans=comedi_get_n_channels(device,subdevice);
53         for(chan=0;chan<n_chans;chan++){
54                 printf("%d: ",chan);
55
56                 //n_ranges=comedi_get_n_ranges(device,subdevice,chan);
57                 rangetype=comedi_get_rangetype(device,subdevice,chan);
58                 n_ranges=RANGE_LENGTH(rangetype);
59
60                 maxdata=comedi_get_maxdata(device,subdevice,chan);
61                 for(range=0;range<n_ranges;range++){
62                         comedi_data_read(device,subdevice,chan,range,aref,&data);
63                         voltage=comedi_to_phys(data,comedi_get_range(device,subdevice,chan,range),maxdata);
64                         printf("%g ",voltage);
65                 }
66                 printf("\n");
67         }
68         
69         exit(0);
70 }
71