updated status of 6713
[comedilib.git] / perl / mode1.perl
1
2 #   A little input demo
3
4 use Comedi::Trigger;
5
6 use Comedilib qw( :DEFAULT :Constants :Ioctls ) ;
7
8 use constant (
9   AI_DEV => 0,
10   AI_SUB => 0,
11   AO_DEV => 0,
12   AO_SUB => 1,
13 );
14
15 $fn = '/dev/comedi0';
16
17 # create a channel list
18 #
19 @ch = ( CR_PACK(0, 0, AREF_GROUND),
20         CR_PACK(1, 0, AREF_GROUND) );
21
22 $d = comedi_open($fn) || die "Can't open '$fn': " . comedi_error();
23
24 $freq = $opt_f || 1000;
25
26 comedi_loglevel(4);
27
28 # convert the requested frequency into a timer value
29 #
30 ($ret = comedi_get_timer($d, AI_SUB, $freq, $ticks, $actual_freq)) == 0 ||
31     die "Can't get timer: " . comedi_strerror($ret);
32
33 $buf = pack('S*', 100..119);
34
35 # create a trigger object
36 #
37 $it = new Comedi::Trigger(
38    mode => 1,
39    chanlist => \@ch,
40    n => 20,
41    data => \$buf,
42    major => $ticks);
43
44
45 die "Mode 1 doesn't work yet...";
46
47 ($ret = comedi_trigger($d, $it)) > 0 ||
48     die "Analog input error: " . comedi_strerror(comedi_errno()) ;
49
50 foreach (unpack('S*', ${$it->data})) {
51     printf("%d\n", $_);
52 }
53
54