1 package Biblio::RFID::Reader::Serial;
6 use Device::SerialPort qw(:STAT);
7 use Biblio::RFID::Reader::INET;
8 use Data::Dump qw(dump);
12 Biblio::RFID::Reader::Serial - base class for serial or serial over TCP RFID readers
18 Open serial port (if needed) and init reader
27 $self->port && return $self;
33 Tries to open usb serial ports C</dev/ttyUSB*> and serial ports C</dev/ttyS*>
35 my $serial_obj = $self->port;
37 To try just one device use C<RFID_DEVICE=/dev/ttyUSB1> enviroment variable
39 If you want to define serial connection over TCP socket, you have to export
40 enviroment variable C<RFID_TCP=hostname:port>.
49 warn "## port ",dump( $self->{port} );
51 return $self->{port} if defined $self->{port};
53 if ( my $tcp = $ENV{RFID_TCP} ) {
54 my $port = Biblio::RFID::Reader::INET->new(
58 warn "## TCP $tcp ", ref($port);
59 $self->{port} = $port;
64 my $settings = $self->serial_settings;
65 my @devices = $ENV{RFID_DEVICE} ? ( $ENV{RFID_DEVICE} ) : glob '/dev/ttyUSB* /dev/ttyS*';
66 warn "# port devices ",dump(@devices);
68 foreach my $device ( @devices ) {
70 next if $serial_device->{$device};
72 if ( my $port = Device::SerialPort->new($device) ) {
74 foreach my $opt ( qw/handshake baudrate databits parity stopbits/ ) {
75 $port->$opt( $settings->{$opt} );
78 $self->{port} = $port;
80 warn "# probe by init $device ",ref($self);
82 warn "init OK ", ref($self), " $device settings ",dump $settings;
83 $serial_device->{$device} = $port;
91 warn "# serial_device ",dump($serial_device);
101 L<Biblio::RFID::Reader::3M810>
103 L<Biblio::RFID::Reader::CPRM01>
105 L<Biblio::RFID::Reader::API>