樹莓派(Linux) 上使用 minicom 發送 AT 指令給子產品
文章目錄
- 樹莓派(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”),然後才是去響應(内部代碼比較指令是否正确等)。
了解了上述我說的這些。那麼序列槽方面的通信也就不會再有什麼能使你困惑的異常現象找不出來了。
因為上面已經說了上位機的序列槽實作機制。
最後一小段還将要說了一下子產品内部一般是如何實作的。