Программирование последовательных портов в Linux с помощью Device :: SerialPorts - PullRequest
1 голос
/ 18 июля 2011

Я пытаюсь связаться со встроенной системой, используя коммуникационный порт COM0, который в Linux является ttyS0.Я попробовал другое программное обеспечение для Windows, и, похоже, он может нормально взаимодействовать с портом.Я пытался использовать этот код, но прямо в самой первой строке я получаю сообщение об ошибке.

use strict;
use warnings;
use Device::SerialPort;


die "Cannot Open Serial Port\n" unless my $PortObj = new Device::SerialPort ("/dev/ttyS0");

Также есть еще один более простой способ связи с последовательным портом.

1 Ответ

1 голос
/ 18 июля 2011

Похоже, вам нужен код, который выглядит следующим образом:

use strict;
use warnings;
use Device::SerialPort;

die "Cannot Open Serial Port\n"
   unless my $PortObj = Device::SerialPort->new(
      $^O eq "MSWin32" ? "com1" : "/dev/ttyS0"
   );

Обратите внимание, я не знаю, является ли com1 правильный последовательный порт для вашего кода, но я думаю, что вам нужно что-то подобное. Если у вас есть много других платформ, вам нужно иметь дело с хэшем, может быть лучшим вариантом:

use strict;
use warnings;
use Device::SerialPort;

my %port_name = (
    MSWin32 => "com1",
    linux   => "/dev/ttyS0",
);

die "I don't know what serial port to use on $^O\n"
    unless exists $port_name{$^O};    

die "Cannot Open Serial Port\n"
   unless my $PortObj = Device::SerialPort->new($port_name{$^O});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...