基于狀態機的串口通信協議的研究設計

線程類創建好后,應具體編寫TBufferThread線程類成員函數Execute的處理過程,其算法流程圖如圖3所示。

依據流程圖,編寫代碼如下:



數據包的接收進度依據于狀態指示變量sp。當數據接收順利時,sp的變化將會引導完成一個數據包的接收過程,這樣處理可以簡化編程的模型,使協議易于實現;數據包接收過程中,一旦發現數據傳輸出錯,立即將sp置為0(空閑狀態),也就是狀態復位,使系統進入準備接收下一個數據包的狀態,這樣可提高通信過程的可靠性及容錯能力。
為檢驗測試串通信協議的合理性及可靠性,將其應用到某稱重儀表的上位機通信中,其上位機程序主界面如圖4所示。程序主界面的點陣字體顯示的是由下位機傳送的質量數據,而正中間顯示的是由下位機上傳的A/D數據形成的曲線,最下方顯示的是對接收的數據處理的狀態指示。經過大量測試表明,本串口通信協議設計合理,可靠性較高。

4 結論
文中主要介紹串口通信協議的設計與實現,其中包括數據包格式的定義、通信狀態機的設計以及協議的實現,并將此協議應用到某稱重儀表的上位機通信中。串口通信中引入狀態機方法,便于解決幀同步問題,使協議易于實現,同時增加了系統的穩定性與可靠性。因此,可廣泛用于各類儀器儀表、工業控制領域中,具有一定的實用價值。
評論