2011-07-20 53 views
1

Win32 :: Serialポート(perlモジュール)を使用して、組み込みシステム上でUARTと通信しようとしています。データの送信という点ではうまくいくようですが、何らかの理由でデータを受信できない場合があります。 readデータを表示する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の上であなたは、このようなファイル名でポートを指定することができます。 オープン(私の$ fhは、 '+> COM1')または死ぬ "COM1:!$を" ; binmode($ fh);

私は正常にこれを使用しましたが、Win32:Serial!多分それは助ける?