my $loop = 1;
my $reader = '3M';
my $debug = 0;
+my $afi = 0x42;
GetOptions(
'loop!' => \$loop,
;
}
-my @stack;
-
sub print_card;
while ( $rfid->tags ) {
print_card;
+my $programmed;
+
do {
my @visible = $rfid->tags(
enter => sub {
my $tag = shift;
- print localtime()." enter ", tag($tag);
- push @stack, [ 'enter', $tag ];
- warn dump @stack;
+ print localtime()." enter ", eval { tag($tag) };
+ return if $@;
+
+ if ( ! $programmed->{$tag} ) {
+ my $card = shift @queue;
+ my $number = $card->[0];
+ print "PROGRAM $tag $number\n";
+ $rfid->write_blocks( $tag => RFID::Biblio::RFID501->from_hash({ content => $number }) );
+ $rfid->write_afi( $tag => chr($afi) ) if $afi;
+
+ $programmed->{$tag} = $number;
+ }
- print_card;
},
leave => sub {
my $tag = shift;
- print localtime()." leave ", tag($tag);
- push @stack, [ 'leave', $tag ];
- warn dump @stack;
+
+ print_card if $programmed->{$tag};
},
);
sub print_card {
- print "XXX print_card\n";
+ print "XXX print_card @{$queue[0]}\n";
my $p = Printer::EVOLIS::Parallel->new( '/dev/usb/lp0' );
- print "insert card ", $p->command( 'Si' );
- print "eject card ", $p->command( 'Ser' );
+ print "insert card ", $p->command( 'Si' ),$/;
+ sleep 1;
+ print "eject card ", $p->command( 'Ser' ),$/;
}