基于狀態(tài)機的串口通信協(xié)議的研究設計

線(xiàn)程類(lèi)創(chuàng )建好后,應具體編寫(xiě)TBufferThread線(xiàn)程類(lèi)成員函數Execute的處理過(guò)程,其算法流程圖如圖3所示。

依據流程圖,編寫(xiě)代碼如下:



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

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