serialport的readline()方法(注意timeout問題)

https://www.cnblogs.com/achao123456/p/6036543.html

在最近的小項目中,單片機中斷優先級的問題,串口發送到上位機的數據有時會出現發送的數據被中斷打斷的問題。

於是,在上位機機上就容易出現錯誤,原來讀取的方法是read()的方法,反覆修改發送數據的格式依然沒有好轉。

後來講將上位機的讀取方式換成readline()問題得到了解決,且百發百中,問題可能歸結於readline方法自身的特性吧。

readline會一直在那裏等候,知道接收到換行符"\r\n",所以在沒有接收到完整數據時,會一直在那裏等候數據的到來,不離不棄。

在這裏插入圖片描述
如果設置了timeout時間,在指定時間裏未收到"\r\n",會報錯timeout。

即便下位機的數據發送過程被其他中斷打斷。

readline返回的是字符串,所以接收變量也應該是字符串變量即可,然後分解數據包,其他的處理過程是一樣的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章