樹莓派(Linux) 上使用 minicom 發送 AT 指令給模塊
今天在一個羣裏有人問了這個問題。剛好以前試用過 minicom, 所以回答了一下。
使用 minicom 和使用一般常用的 桌面 “串口助手” 是有所不同。
重點在於兩者機制不同。因爲我自己寫過圖形界面的串口助手來整合到我的一個項目中,所以之前在遇到使用 minicom 的時候,對這一點能比較快的發現原因所在。
重點就是:minicom 是沒有”發送按鈕“這一說的,從鍵盤,每輸入一個字符,等同於立馬從串口發送出去。
而 ”串口助手“ 這一類的工具,是有一個編輯框,所以是等輸入完成,點擊了發送按鈕,才把輸入框中的整串字符發送出去。
區分是什麼?
最大的區別就是,如果你的”模塊“,對從串口發送過來的”字符“沒有做特殊符號處理和立即回顯的話,那麼使用 minicom 就不能輸入錯誤,輸錯誤就要把整句”發送“出去,然後重來。
這一句話可能不是很好理解。
簡單說,特殊符號處理就是 ”backspace“ 鍵,”tab“ 鍵(在模塊上一般不會用到 tab 鍵),等等。
而回顯就是,你使用 minicom 輸入了一個字符,隨便比如 “A”, 這個時候一般基於串口助手這個慣例使用設計的模塊是不會發送任何內容給你的主機(樹莓派/或者說LINUX),也就是說,無法在 minicom 中看到任何內容。
這個時候再輸入 ”T“,當然,也不會有任何內容顯示。
最後你再輸入 “\r”, “\n” (使用鍵盤組合鍵輸入,請查 ASCII 碼錶!!!!),這個時候,正常情況下minicom 中就有內容顯示了
因爲我的例子是指一般情況下,模塊都會提供 "“AT\r\n” 這個測試模塊當前是否已經可以正常工作的測試命令。
如果測試指令並非這個,換一下就可以了。
相信我要說的要點應該已經很明顯了。
- 使用 minicom 調試 模塊,不會”立即“看到內容在屏幕上(因爲模塊一般不會做回顯)。
- 使用 minicom 調試模塊,輸錯指令直接再輸入 ”\r\n“,然後再重新輸入正確的指令(因爲模塊一般不支持 backspace)。
- 使用 minicom 調試模塊,遇到 ”\r“, “\n” 等等這類字符,請查 ASCII 表使用對應的組合鍵輸入。
- 個人不是很建議使用 minicom 調試模塊(因爲 minicom 適用於 ”console“ 這樣的場景)。
其中 1. 和 2. 是直接相關的。沒有”立即“回顯的機制,必然就不會支持處理 backspace 字符(backspace 也是一個字符)。
一般 “模塊” 內部機制都是不停地接收串口發送過來的字符,直到一整個完整的終止符(一般是 “\r\n”),然後纔是去響應(內部代碼比較指令是否正確等)。
理解了上述我說的這些。那麼串口方面的通信也就不會再有什麼能使你困惑的異常現象找不出來了。
因爲上面已經說了上位機的串口實現機制。
最後一小段還將要說了一下模塊內部一般是如何實現的。