我有一個嵌入式Linux盒子,附帶5.10和GSM調制解調器。 我寫了一個簡單的perl腳本來通過調制解調器設備文件(/ dev/ttyACM0)讀/寫AT命令。使用Perl發送AT命令到調制解調器
如果我在調制解調器上寫入類似「ATZ \ r」的simle命令並等待響應,我會收到非常奇怪的數據,如「\ n \ n \ nATZ \ n \ n0 \ n \ nOK \ n \ n \ n \ n \ nATZ \ n \ n \ n \ n ...「並且數據不斷傳入。它似乎與其他數據混淆在一起。
我希望看到類似「ATZ \ nOK \ n」(如果啓用了回顯)的內容。
如果我用例如手動發送「ATZ」命令, minicom一切都按預期工作。
這使我認爲它可能是某種perl緩衝問題,但這只是猜測。
我喜歡這個perl的打開裝置(我沒有設備的serialport ::我的嵌入式linux perl安裝):
open(FH, "+<", "/dev/ttyACM0") or die "Failed to open com port $comport";
,並在有時間讀取響應一個字節:
while(1) {
my $response;
read(FH, $response, 1);
printf("hex response '0x%02X'\n", ord $response);
}
我錯過了一些初始化或其他東西來得到這個權利?
問候 克勞斯
試過同時與讀入行,但不幸沒有改變接收到的數據。 –
您可以嘗試使用終端仿真程序連接到設備(例如屏幕,請參閱http://www.cyberciti.biz/faq/unix-linux-apple-osx-bsd-screen-set-baud-rate/)並執行ATZ命令,並查看響應是什麼?我懷疑這可能不是一個perl問題,但是設備的輸出可能與您所期望的不同。或者,也許使用錯誤的通信設置(波特率,奇偶校驗,停止位等)。這個測試將有助於隔離問題。 – mti2935