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