4

私はモジュールを使用しようとしていますWin32::SerialPort(perl 5.10おそらく 5.14 でいくつかの問題があります)。シリアル ポートにコマンドを発行し、その出力を取得する必要があります。私は、書き込みが私のために以前の部分を行うことを理解しました。出力部分については、次のような実装を見てきました。

$port_obj->write("ATE");  #assuming we give the AT command Echo
$res = $port_obj->input;

これによりコマンドの出力が得られた場合、書き込みの出力をキャプチャして、次のように($res書き込まれたビット数を返すにもかかわらず)より直感的にできないのはなぜですか。$res

$res = $port_obj->write("ATE");

さらに、いくつかの実装も見$port_obj->read()ましたが、読み取りメソッドと入力メソッドの違いはわかりません。

助けてください。

4

1 に答える 1

0

1.) デバイスが接続されているため、書き込みから受信したデータを直接返すことは、すべての (ほとんどの?) ケースで機能するとは限りません。返信がない場合、またはすぐに返信しない場合はどうなりますか? そこには数え切れないほどのシリアルデバイスがあり、何が返ってくるかは決してわかりません.

2.)$PortObj->readはブロッキング呼び出しです。つまり、要求されたバイト数が受信されるまで待機します。$PortObj->inputノンブロッキングです。つまり、すぐに返され、受信したバイト数 (存在する場合) が通知されます。ドキュメントはその点で少しあいまいです。

乾杯。

于 2012-05-28T08:47:40.290 に答える