if ($device eq undef) {
die "Usage: <app> /dev/hidrawN";
exit;
}
undef is neither a string nor a number. You have to use the defined function to test whether a variable is defined or not. Or you could just test whether @ARGV was empty or not. die exits from the program so using exit there is superfluous.
@ARGV or die "Usage: <app> /dev/hidrawN";
my $report = ord(substr($data, 1, 1));
my $status = ord(substr($data, 2, 1));
my $unit = ord(substr($data, 3, 1));
my $exp = ord(substr($data, 4, 1));
my $lsb = ord(substr($data, 5, 1));
my $msb = ord(substr($data, 6, 1));
my $weight = ($msb * 255 + $lsb) / 10;
if($exp != 255 && $exp != 0) {
$weight ^= $exp;
}
If you used unpack you could extract all your data in one statement and you wouldn't have to calculate the $weight value yourself, which is calculated wrong because you should be multiplying by 256, not 255.
my ( $report, $status, $unit, $exp, $weight ) = unpack 'xCCCCS', $
+data
$weight /= 10;
if ( $exp != 255 && $exp != 0 ) {
$weight ^= $exp;
}
| [reply] [d/l] [select] |
| [reply] |
Wow! That's definitely a CUFP! I wish I had the creativity or time to do something like that. It's about 200 steps for me to go from my office to the coffee pot and I, too, hate it when I get there and find out its empty. jwkrahn's comments are good, too. Thanks, kirillm and jwkrahn. That made for a lighter Monday morning here for me.
| [reply] |
Cool. I could probably use the same setup to track the coffee mug on my desk. | [reply] |
This reminds me of Coffee-HOW-TO. | [reply] |