2011-07-20 51 views
1

我想与使用Win32 ::串行端口(perl模块)的嵌入式系统上的UART进行通信。它似乎在发送数据方面工作得很好,但由于什么原因它无法接收数据。我希望除read()之外还有另外一个函数会显示读取的数据吗?Win32 ::串行二进制通信

# 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

感谢您的回复,但事实证明图书​​馆里有一个输入功能,使用该功能和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; 
0

我记得,在Win32的activeperl你可以在这样的文件名指定端口: 打开(我的$跳频, '+> COM1')或死亡 “COM1:$!” ; binmode($ fh);

我已经成功地使用了这个,但是我从来没有成功地使用过Win32:Serial!也许它有帮助?