>кто посоветует, как можно слушать СОМ порт, забирая данные построчно. Цель -
>внесение в БД. Как правильно поймать EOL?
все зависит от того, какие данные оттуда идут
у меня работает что-то вроде этого (сокращено!):
#!/usr/bin/perl
use Time::HiRes qw(sleep);
use Fcntl;
my $comflags='';
open(COMPORT,"< /dev/cuaa5") or die "Cannot open device: $!\n";
# я перевожу в неблокирующий режим, потому что мне так удобнее
fcntl(COMPORT, F_GETFL, $comflags) or die "Cannot get flags: $!\n";
$comflags |= O_NONBLOCK|O_RD;
fcntl(COMPORT, F_SETFL, $comflags) or die "Cannot set flags: $!\n";
while(1) {
while(defined($read=sysread(COMPORT, $byte, 1))) {
lalala(); # что там тебе надо сделать с байтом если надо
}
lalala(); # что тебе надо сделать со строкой, + повторить через секунду
sleep(1);
}
close(COMPORT);
а как распознать EOL? ну проверяешь пришедший байт, не является ли он EOL
как-то так в общем ;)