Сочинил такую хрень:
Код: Выделить всё
#!/usr/bin/perl -w
use Device::SerialPort;
use strict;
my $port=Device::SerialPort->new("/dev/ttyUSB0");
my $pass;
my $return;
my $count;
my $inflow;
# Port settings
$port->baudrate (9600) || die "Cannot set baudrate";
$port->parity ("none") || die "Cannot set parity";
$port->databits (8) || die "Cannot set databits";
$port->stopbits (1) || die "Cannot set stopbits";
$port->handshake ("none") || die "Cannot set handshake";
$port->dtr_active (1) || die "Cannot set dtr";
#$port->write_char_time(300) || die "NO WCT";
$port->write_settings;
sleep 1;
# Main
$pass = $port->write("\n"); # Даем пинка, чтоб железка очухалась
sleep 1; # Даем время чтоб сообразила с ответом
($count, $inflow)=$port->read(4096); #Читаем ответ
print "$inflow"; #Убеждаемся что очухалась
$pass = $port->write("0\n"); #Даем команду
sleep 1;
($count, $inflow)=$port->read(4096); # Читаем ответ
print "$inflow"; # Убеждаемся что дошло
$port->close;Дык вот... Не доходит. На любую команду (одно- или многосимвольную) железка реагирует как на LF.
Причем $pass возвращает нормальное количество переданных байт.
Если кто сталкивался - поможите, плз, или хотя бы киньте ссылку на внятный пример программирования асинхронного порта.
PS. Менять LF на CR/LF не предлагать - пробовал