基于狀態(tài)機的串口通信協(xié)議的研究設(shè)計
![](http://editerupload.eepw.com.cn/fetch/20140120/216473_2_0.jpg)
線程類創(chuàng)建好后,應(yīng)具體編寫TBufferThread線程類成員函數(shù)Execute的處理過程,其算法流程圖如圖3所示。
![](http://editerupload.eepw.com.cn/fetch/20140120/216473_2_1.jpg)
依據(jù)流程圖,編寫代碼如下:
![](http://editerupload.eepw.com.cn/fetch/20140120/216473_2_2.jpg)
![](http://editerupload.eepw.com.cn/fetch/20140120/216473_2_3.jpg)
![](http://editerupload.eepw.com.cn/fetch/20140120/216473_2_4.jpg)
數(shù)據(jù)包的接收進度依據(jù)于狀態(tài)指示變量sp。當數(shù)據(jù)接收順利時,sp的變化將會引導(dǎo)完成一個數(shù)據(jù)包的接收過程,這樣處理可以簡化編程的模型,使協(xié)議易于實現(xiàn);數(shù)據(jù)包接收過程中,一旦發(fā)現(xiàn)數(shù)據(jù)傳輸出錯,立即將sp置為0(空閑狀態(tài)),也就是狀態(tài)復(fù)位,使系統(tǒng)進入準備接收下一個數(shù)據(jù)包的狀態(tài),這樣可提高通信過程的可靠性及容錯能力。
為檢驗測試串通信協(xié)議的合理性及可靠性,將其應(yīng)用到某稱重儀表的上位機通信中,其上位機程序主界面如圖4所示。程序主界面的點陣字體顯示的是由下位機傳送的質(zhì)量數(shù)據(jù),而正中間顯示的是由下位機上傳的A/D數(shù)據(jù)形成的曲線,最下方顯示的是對接收的數(shù)據(jù)處理的狀態(tài)指示。經(jīng)過大量測試表明,本串口通信協(xié)議設(shè)計合理,可靠性較高。
![](http://editerupload.eepw.com.cn/fetch/20140120/216473_2_5.jpg)
4 結(jié)論
文中主要介紹串口通信協(xié)議的設(shè)計與實現(xiàn),其中包括數(shù)據(jù)包格式的定義、通信狀態(tài)機的設(shè)計以及協(xié)議的實現(xiàn),并將此協(xié)議應(yīng)用到某稱重儀表的上位機通信中。串口通信中引入狀態(tài)機方法,便于解決幀同步問題,使協(xié)議易于實現(xiàn),同時增加了系統(tǒng)的穩(wěn)定性與可靠性。因此,可廣泛用于各類儀器儀表、工業(yè)控制領(lǐng)域中,具有一定的實用價值。
評論