perl demo
authorDavid Schleef <ds@schleef.org>
Mon, 18 Mar 2002 21:52:13 +0000 (21:52 +0000)
committerDavid Schleef <ds@schleef.org>
Mon, 18 Mar 2002 21:52:13 +0000 (21:52 +0000)
demo/perl/inp.pl

index d838a0b68b79a01e9e19ad2de29d10e6bb454e8d..ce8fd6925e284cd2267b3864ff5421ee5b603de3 100755 (executable)
@@ -1,2 +1,52 @@
 #!/usr/bin/perl
+#
+# same at inp.c, with the addition of -x/--convert option which will give output
+# in volts
+#
+
+use strict;
+use Comedi::Lib;
+use Getopt::Long;
+
+my $dev = 0;
+my $subd = 0;
+my $chan = 0;
+my $range = 0;
+my $aref = 0;
+my $convert = 0;
+my $verbose = 0;
+my $help = 0;
+my $data = pack ('i','0');
+
+GetOptions ('dev|d=i' => \$dev, 'subd|s=i' => \$subd, 'chan|c=i' => 
+\$chan, 'range|r=i' => \$range, 'aref|a=i' => \$aref, 'convert|x' => 
+\$convert, 'verbose|v' => \$verbose, 'help|h' => \$help);
+
+if ($help == 1) {
+        print "usage: inp.pl [-d dev -s sudb -c chan -r range -a aref -v 
+-h -x]\n";
+        exit;
+}
+if ($verbose ==1) {
+        print "measuring device=$dev subdevice=$subd channel=$chan 
+range=$range analog reference=$aref\n";
+}
+
+my $it = comedi_open("/dev/comedi$dev") || die "cannot open 
+/dev/comedi$dev: $!";
+
+comedi_data_read($it, $subd, $chan, $range, $aref, $data);
+my $result = unpack('i', $data);
+
+if ($convert == "0") {
+        print "$result\n";
+} else {
+        my $maxdata = comedi_get_maxdata($it, $subd, $chan);
+        my $rng = comedi_get_range($it, $subd, $chan, $range);
+        my $v = comedi_to_phys($result, $rng, $maxdata);
+        print "$v\n";
+}
+
+comedi_close($it);
+