#!/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);