Web lists-archives.com

Re: Serial Ports and Perl




Andy Smith <andy@xxxxxxxxxxxxxx> 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