2021年4月20日 星期二

Com port log 解析小技巧

人不舒服智商果然會下降?

上星期請假前的程式修改,到昨天才發現為什麼跟預期結果不符。

今天又再接再勵的想要加上錯誤行數顯示,但執行結果非常奇怪,行數與我在 UltraEdit 看到的行數不一致?

在只有平常三成功力的狀態下,辛苦的奮戰許久終於讓我找到原因。

Windows 下的 UltraEdit 在遇到 \r (0x0D) 時,不會把它當做換行字元,但 Python 在 call readline 時,預設會把 \r or \n or \r\n 都當做換行字元,故導致顯示行數不一致。

當然最根本的原因還是使用 com port 抓 log 時,很容易會掉資料,導致只剩下一個 \r。故這實在不是一個好的除錯方式,也增加了後續開發工具的潛在 bug。

解決方式也很簡單,指定換行字元即可。

f = open(filename, 'r', errors='ignore', newline='\n')

沒有留言:

張貼留言