--- 3m-810.pl 2008/10/03 21:47:24 21
+++ 3m-810.pl 2009/03/28 03:47:10 23
@@ -8,6 +8,16 @@
use Carp qw/confess/;
use Getopt::Long;
+use IO::Socket::INET;
+
+my $meteor = IO::Socket::INET->new( '192.168.1.13:4671' ) || die "can't connect to meteor: $!";
+
+sub meteor {
+ my ( $item, $html ) = @_;
+ warn ">> meteor $item $html\n";
+ print $meteor "ADDMESSAGE test $item|" . localtime() . "
$html\n";
+}
+
my $debug = 0;
my $device = "/dev/ttyUSB0";
@@ -30,7 +40,7 @@
};
GetOptions(
- 'd|debug+' => \$debug,
+ 'd|debug+' => \$debug,
'device=s' => \$device,
'baudrate=i' => \$baudrate,
'databits=i' => \$databits,
@@ -39,6 +49,8 @@
'handshake=s' => \$handshake,
) or die $!;
+my $verbose = $debug > 0 ? $debug-- : 0;
+
=head1 NAME
3m-810 - support for 3M 810 RFID reader
@@ -81,7 +93,7 @@
$parity=$port->parity($parity);
$stopbits=$port->stopbits($stopbits);
-print "## using $device $baudrate $databits $parity $stopbits\n";
+print "## using $device $baudrate $databits $parity $stopbits debug: $debug verbose: $verbose\n";
# Just in case: reset our timing and buffers
$port->lookclear();
@@ -96,7 +108,9 @@
cmd( 'D5 00 05 04 00 11 8C66', 'hw version',
'D5 00 09 04 00 11 0A 05 00 02 7250', sub {
- print "hardware version ", join('.', unpack('CCCC', skip_assert(3) )), "\n";
+ my $hw_ver = join('.', unpack('CCCC', skip_assert(3) ));
+ print "hardware version $hw_ver\n";
+ meteor( -1, "Found reader $hw_ver" );
});
cmd( 'D6 00 0C 13 04 01 00 02 00 03 00 04 00 AAF2','FIXME: stats?',
@@ -105,17 +119,14 @@
# start scanning for tags
cmd( 'D6 00 05 FE 00 05 FA40', "scan for tags, retry $_",
- 'D6 00 07 FE 00 00 05 00 C97B', sub {
- assert();
- print "no tag in range\n";
-
- },
'D6 00 0F FE 00 00 05 ', sub { # 01 E00401003123AA26 941A # seen, serial length: 8
my $rest = shift || die "no rest?";
my $nr = ord( substr( $rest, 0, 1 ) );
if ( ! $nr ) {
print "no tags in range\n";
+ update_visible_tags();
+ meteor( -1, "No tags in range" );
} else {
my $tags = substr( $rest, 1 );
@@ -126,26 +137,50 @@
my @tags;
push @tags, uc(unpack('H16', substr($tags, $_ * 8, 8))) foreach ( 0 .. $nr - 1 );
warn "## tags ",as_hex($tags), " [$tl] = ",dump( $tags ) if $debug;
- print "seen $nr tags: ", join(',', @tags ) , "\n";
+ print "$nr tags in range: ", join(',', @tags ) , "\n";
+
+ update_visible_tags( @tags );
+
+ my $html = join('', map { "