2012-05-22 70 views
4

我一直試圖在perl 5.10中使用模塊Win32::SerialPort(可能它與5.14有一些問題)。我將不得不向串行端口發出命令並獲得它們的輸出。我已經認識到寫作會爲我做更早的部分。對於輸出部分,我已經見過這樣實現:perl Win32 :: SerialPort:讀取和輸入方法之間的區別

$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(),但實現我不知道是什麼的讀取和輸入方法之間的差異。

請幫忙。

回答

0

1.)由於連接了設備,直接從寫入接收的數據不會在所有(大多數?)情況下工作。如果它沒有回覆,或者沒有立即回覆,該怎麼辦?那裏有不計其數的串口設備,你永遠不會知道什麼期望回來。

2.)$PortObj->read是一個阻塞呼叫,即它等待直到接收到請求的字節數。 $PortObj->input是非阻塞的,即它立即返回,告訴你接收到多少字節(如果有的話)。這一點上的文檔有些模糊。

乾杯。

+0

我發現輸入只不過是在後臺讀取,如果在調用之前給予足夠的睡眠,效果會很好。 – CuriousSid

相關問題