全部學習匯總: GreyZhang/g_serial: Some serial learning notes which may be usefull in embedded system debugging. (github.com)
前面,已經借助於pyserial實現了串口信息的讀取以及顯示。其實,增加一個log文件的記錄也是很簡單的事情了。如果只是增加最原始的log信息,那麼直接用一個文件記錄一下就可以了。這裡,我實現了一個簡單的嘗試。
在設計的時候,我沒有一次打開文件之後就全都嘗試寫,而是采用了不斷打開文件追加的方式。因為,使用其他的串口工具的時候我也有一些查看log文件的嘗試,我覺得log文件如果能夠不斷刷新,不斷看到新的數據也是很好的。
這樣,在不斷記錄的同時我們可以借助於VS Code等加載刷新比較迅速的編輯器來看記錄的內容。
我之前使用Arduino的串口監控工具頻次特別多,一者是因為我接觸到的串口監控工具可能本來就不是很多,另一方面則是Arduino的串口監控工具其實已經完全滿足了我個人的需求。這樣,我也就沒有其他的驅動力去尋找使用更多的工具了。我用Arduino的串口監控工具很重要的一點在於它支持時間戳信息的展示,這樣,對於我去理解軟件執行的動作時序間隔是很有幫助的。如果,log文件裡面有這樣的信息,那麼這也是很好的。
我也用過putty這個開源軟件,用了挺長的時間。也用來記錄過log,比較方便。但是使用這個工具令我不是很滿意的一點就是log文件裡面不方便增加時間戳信息。我看了網上的說明,解釋說這樣的功能不好做。但是,網站上給出了另外一種解決方案。我沒有去研究為什麼不好做,或許在某些場景之下,這樣的實現是有挑戰度的。但是對我來說,我需要的數據量不大,或許也不是很快,簡單讀取一下系統時間作為參考就非常好用了。
為此,做了上面的設計。
當然,這個只是隨手一寫,這個設計也不是很好。主要的問題點就是重復代碼很多,其實,時間戳的處理可以孤立成一個專門的函數。但是,簡單的測試或者臨時用用,在代碼這麼簡單的情況下,這麼用著也是可以的。這裡,我不僅增加了一個寫入,也增加了一個print的過程。其實也很簡單,我想在print的過程中也看到類似Arduino串口監控工具的效果。
這樣,打印顯示的效果就有了。
再看一下log信息,基本上也符合我期望的效果。這樣的功能,後期如果集成到我的開發工作流中,對我的工作效率以及質量還是會有一些幫助的。