init readers just once
authorDobrica Pavlinusic <dpavlin@rot13.org>
Tue, 27 Jul 2010 13:07:15 +0000 (15:07 +0200)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Tue, 27 Jul 2010 13:07:15 +0000 (15:07 +0200)
scripts/scan.pl

index 13fda83..572864e 100755 (executable)
@@ -15,20 +15,29 @@ GetOptions(
 ) || die $!;
 
 my @readers = ( '3M810', 'CPRM02' );
+my @rfid;
+
+foreach my $reader ( @readers ) {
+       next if $only && $only ne $reader;
+       my $module = "RFID::Serial::$reader";
+       eval "use $module";
+       die $@ if $@;
+       if ( my $rfid = $module->new( device => '/dev/ttyUSB0' ) ) {
+               push @rfid, $rfid;
+               warn "# added $module\n";
+       } else {
+               warn "# ignored $module\n";
+       }
+}
 
 use lib 'lib';
 
 do {
-       foreach my $reader ( '3M810', 'CPRM02' ) {
-               next if $only && $only ne $reader;
-               my $module = "RFID::Serial::$reader";
-               eval "use $module";
-               die $@ if $@;
-               my $rfid = $module->new( device => '/dev/ttyUSB0' );
+       foreach my $rfid ( @rfid ) {
                my $visible = $rfid->scan;
                foreach my $tag ( keys %$visible ) {
                warn "XXX $tag";
-                       print "$reader\t$tag\t", join('', @{ $visible->{$tag} }), $/;
+                       print ref($rfid),"\t$tag\t", join('', @{ $visible->{$tag} }), $/;
                }
        }