#!/usr/bin/perl -w # # temptrax.extract # # simple perl script to extract TempTrax sensor output # varhus, 20020917 use Getopt::Std; my $temptrax_output; my($mon, $mday, $year, $hour, $min) = (localtime(time))[4,3,5,2,1]; use vars qw($opt_l); my $USAGE = "usage: temptrax.extract [-l logfile]\n"; # process command-line arguments getopts('l:') or die "$USAGE"; my $SERDEV = "/dev/ttyS0"; open(SERIAL, "+< $SERDEV") or die "couldn't open $SERDEV"; my($rin) = ''; vec($rin, fileno(SERIAL), 1) = 1; for (my $i = 0; $i <= 1; $i++) { print SERIAL "\n"; last if select($rin, undef, undef, 2); } my $read; for (my $len = 0; $len < 22; $len += $read) { my $buf; $read = sysread(SERIAL, $buf, 22 - $len); $temptrax_output .= $buf; } close(SERIAL); $temptrax_output =~ m/(-{0,1}\d+\.\d)\W/gs; my $probe1 = $1; $temptrax_output =~ m/(-{0,1}\d+\.\d)\W/gs; my $probe2 = $1; if (defined $opt_l) { # my($datafile) = sprintf("%s/%s-%02s-%02s", "/var/spool/temptrax/data", # $year + 1900, $mon + 1, $mday); open(DATA, ">> $opt_l") or die "couldn't open $opt_l"; printf DATA "%02s%02s %s %s\n", $hour, $min, $probe1, $probe2; close(DATA); } else { printf "%02s%02s %s %s\n", $hour, $min, $probe1, $probe2; } exit(0);