1 package Biblio::RFID::Reader::INET;
4 use base 'IO::Socket::INET';
7 use Time::HiRes qw(ualarm);
8 use Data::Dump qw(dump);
10 my $debug = $ENV{DEBUG};
14 Biblio::RFID::Reader::INET - emulate serial port over TCP socket
20 $self->_check_connected;
21 warn ">> write ",dump(@_) if $debug;
22 my $count = $self->SUPER::print(@_);
24 #warn "XX ",ref($self), " write response: $count ", dump(@_);
28 our $read_char_time = 1;
29 sub read_char_time { $read_char_time = $_[1] * 1_000 || 1_000_000 };
30 sub read_const_time {};
34 my $len = shift || die "no length?";
36 #warn "XX ",ref($self), " read $len timeout $read_char_time";
39 local $SIG{ALRM} = sub { die "read timeout" };
41 #warn "## read_serial $len timeout $read_char_time\n";
43 ualarm $read_char_time;
44 $len = $self->SUPER::read( $buffer, $len );
52 $self->_check_connected;
54 warn "<< read $len ",dump($buffer) if $debug;
55 return ( $len, $buffer );
58 sub _check_connected {
60 return if $self->connected;
62 warn "LOST TCP Connection";
71 L<Biblio::RFID::Reader::Serial>