我正在尝试使用Win32 :: Serial端口(perl模块)与嵌入式系统上的UART进行通信。它似乎在发送数据方面工作正常,但出于任何原因它无法接收数据。我希望除了read()之外还有另一个函数可以显示读数据吗?
# Write Serial Data to Port in Little Endian Form
foreach my $intermValue (@writeData) {
my $msb = int($intermValue/256);
my $lsb = ($intermValue - $msb*256);
# Writing LSB first and MSB after (Little Endian Form)
print "Writing: LSB: ".$lsb." MSB: ".$msb."\n";
$class->{"serialPort"}->transmit_char($lsb);
$class->{"serialPort"}->transmit_char($msb);
}
# Read Data From Serial Port
my ($countIn, $recievedData) = $class->{"serialPort"}->read($expectedBytes);
由于
答案 0 :(得分:0)
我记得,在Win32 ActivePerl上你可以像这样在文件名中指定端口: 打开(我的$ fh,'+> COM1')或死“COM1:$!”; binmode($ FH);
我已经成功使用了这个,但我从未成功使用过Win32:Serial!也许有帮助?
答案 1 :(得分:0)
感谢您的回复,但事实证明库中有一个输入功能,使用它和1秒的睡眠我能够使我的模块工作。
# Write Serial Data to Port in Little Endian Form
foreach my $intermValue (@writeData) {
my $msb = int($intermValue/256);
my $lsb = ($intermValue - $msb*256);
# Writing LSB first and MSB after (Little Endian Form)
print "Writing: LSB: ".$lsb." MSB: ".$msb."\n";
$class->{"serialPort"}->transmit_char($lsb);
$class->{"serialPort"}->transmit_char($msb);
}
# Read Data From Serial Port
sleep(1);
my $recievedData = $class->{"serialPort"}->input;