https://www.cnblogs.com/achao123456/p/6036543.html
在最近的小項目中,單片機中斷優先級的問題,串口發送到上位機的數據有時會出現發送的數據被中斷打斷的問題。
於是,在上位機機上就容易出現錯誤,原來讀取的方法是read()的方法,反覆修改發送數據的格式依然沒有好轉。
後來講將上位機的讀取方式換成readline()問題得到了解決,且百發百中,問題可能歸結於readline方法自身的特性吧。
readline會一直在那裏等候,知道接收到換行符"\r\n",所以在沒有接收到完整數據時,會一直在那裏等候數據的到來,不離不棄。
如果設置了timeout時間,在指定時間裏未收到"\r\n",會報錯timeout。
即便下位機的數據發送過程被其他中斷打斷。
readline返回的是字符串,所以接收變量也應該是字符串變量即可,然後分解數據包,其他的處理過程是一樣的。