Andy Smith <a...@strugglers.net> writes: > Hi Martin, > I have been using it successfully for a long time, but all I do is > read whole lines from the serial device like: > > my $dev = '/dev/ttyUSB0'; > my $port = Device::SerialPort->new($dev); > > $port->baudrate(57600); > $port->write_settings; > > open my $fh, '<', $dev or die "Can't open $dev: $!"; >
> while (<$fh>) { > print "READ: $_\n"; > } > > So, I am only using Device::SerialPort to configure the device, > while all reading is done by treating it as a normal file. > > I see you are using lookfor(), which I have never used before. From > a brief look at: > > > http://search.cpan.org/~cook/Device-SerialPort-1.002/SerialPort.pm#Methods_for_I/O_Processing > > it seems you should be setting are_match() if you want lookfor() to > match anything. > > Cheers, > Andy I think I am going to call it a day and jump back on it in the morning but opening the device is something I failed to do. A whole new rabit hole to go down and I wouldn't be surprised if that wasn't the problem all along. A perldoc of Device::SerialPort says that lookfor is supposed to block or hold until a character string emerges from the port as in /dev/ttyUSB0 or /dev/ttyS1. When I trace the code, it just loops as fast as it can and never holds to wait for anything. I thought this was strange and if I should have opened the device, this may explain all the weirdness. One of the examples I saw did have a close statement on the device. I bet I just missed the need to open a file handle. Thanks. I'll post a message if that worked. Martin McCormick