added see also
[Biblio-RFID.git] / lib / RFID / Biblio / Reader / Serial.pm
1 package RFID::Biblio::Reader::Serial;
2
3 use warnings;
4 use strict;
5
6 use Device::SerialPort qw(:STAT);
7 use Data::Dump qw(dump);
8
9 =head1 NAME
10
11 RFID::Biblio::Reader::Serial - base class for serial RFID readers
12
13 =head1 METHODS
14
15 =head2 new
16
17 Open serial port (if needed) and init reader
18
19 =cut
20
21 sub new {
22         my $class = shift;
23         my $self = {@_};
24         bless $self, $class;
25
26         $self->port;
27
28         $self->init && return $self;
29 }
30
31
32 =head2 port
33
34   my $serial_obj = $self->port;
35
36 =cut
37
38 sub port {
39         my $self = shift;
40
41         return $self->{port} if defined $self->{port};
42
43         my $settings = $self->serial_settings;
44         my $device   = $settings->{device} ||= $ENV{RFID_DEVICE};
45         warn "# settings ",dump $settings;
46
47         if ( ! $device ) {
48                 warn "# no device, serial port not opened\n";
49                 return;
50         }
51
52         $self->{port} = Device::SerialPort->new( $settings->{device} )
53         || die "can't open serial port: $!\n";
54
55         $self->{port}->$_( $settings->{$_} )
56         foreach ( qw/handshake baudrate databits parity stopbits/ );
57
58 }
59
60 1
61 __END__
62
63 =head1 SEE ALSO
64
65 L<RFID::Biblio::Reader::3M810>
66
67 L<RFID::Biblio::Reader::CPRM01>
68
69 L<RFID::Biblio::Reader::API>
70