Perl Win32::串行二进制通信
我正在尝试使用Win32::Serial port perl模块与嵌入式系统上的UART通信。就发送数据而言,它似乎工作得很好,但不管出于什么原因,它都无法接收数据。我希望除了读取之外还有其他功能可以显示读取的数据吗Perl Win32::串行二进制通信,perl,serial-port,perl-module,Perl,Serial Port,Perl Module,我正在尝试使用Win32::Serial port perl模块与嵌入式系统上的UART通信。就发送数据而言,它似乎工作得很好,但不管出于什么原因,它都无法接收数据。我希望除了读取之外还有其他功能可以显示读取的数据吗 # Write Serial Data to Port in Little Endian Form foreach my $intermValue (@writeData) { my $msb = int($intermValue/256); my $lsb = (
# 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);
我记得,在Win32 ActivePerl上,您可以在文件名中指定端口,如下所示: openmy$fh,“+>COM1”或die COM1:$!; binmode$fh
我已经成功地使用了这个,但是我从来没有成功地使用过Win32:Serial!也许会有帮助?谢谢你的回复,但事实证明,库中有一个输入函数,使用它和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;