我正在尝试使用通信端口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");
还有另一种更简单的方法来与串口通信。
答案 0 :(得分:1)
看起来您需要看起来像这样的代码:
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});