基于ZigBee的航標(biāo)遙測(cè)終端
3.2 通信功能模塊設(shè)計(jì)
終端的通信具有ZigBee,CDMA兩種通信方式,由通信處理線程實(shí)現(xiàn)。具體完成ZigBee,CDMA模塊的初始化、數(shù)據(jù)發(fā)送與接收、智能切換通信方式以及模塊工作狀態(tài)的監(jiān)測(cè)等功能。
通信線程的處理機(jī)制是利用信號(hào)的異步通知機(jī)制,通過(guò)安裝信號(hào)處理函數(shù),當(dāng)某一通信方式出現(xiàn)異常時(shí)就發(fā)送信號(hào)并攜帶相關(guān)的信息,從而觸發(fā)信號(hào)處理函數(shù)進(jìn)入中斷處理異常信息,并根據(jù)信息來(lái)選擇重建當(dāng)前通信或建立另一種通信方式或重啟系統(tǒng)。在此主要介紹雙模通信中的ZigBee通信方式。
當(dāng)選擇ZigBee通信方式時(shí),必須對(duì)ZigBee進(jìn)行初始化,其初始化流程圖如圖3所示。本文引用地址:http://butianyuan.cn/article/156591.htm
部分初始化程序如下:
fd表示的是連接ZigBee/CDMA與ARM的串口的文件句柄;sendPort相當(dāng)于UNIX中的write()函數(shù),即將Send_buf中的數(shù)據(jù)寫入到串口。
因?yàn)樵?a class="contentlabel" href="http://butianyuan.cn/news/listbylabel/label/終端">終端中用的ZigBee通信模塊有其固定的幀格式,所以需要將采集到的數(shù)據(jù)進(jìn)行打包,然后才能傳輸,利用一個(gè)函數(shù)send_prepare(int mode,unsignedchar send_buf[512],int length)實(shí)現(xiàn)數(shù)據(jù)的打包。其中,mode表示的是ZigBee和CDMA中的一種模式;send_buf[]表示需要發(fā)送的有效數(shù)據(jù),此函數(shù)的主要功能是將有效數(shù)據(jù)加入到ZigBee和CDMA能識(shí)別的幀格式中。然后調(diào)用發(fā)送函數(shù)sendPort(fd_com,send _buf)將數(shù)據(jù)通過(guò)ZigBee或CDMA發(fā)送到控制中心。當(dāng)數(shù)據(jù)發(fā)送到控制中心,控制中心模塊會(huì)給終端一個(gè)應(yīng)答。通過(guò)對(duì)此幀的解析,可以看出發(fā)送是否成功。例如,在ZigBee通信方式中,狀態(tài)/標(biāo)志位為00時(shí)表示發(fā)送成功,否則表示發(fā)送失敗。
3.3 遙測(cè)遙控功能模塊設(shè)計(jì)
3.3.1 遙測(cè)功能模塊
遙測(cè)包括數(shù)據(jù)采集與數(shù)據(jù)傳輸兩部分。數(shù)據(jù)采集包括航標(biāo)燈數(shù)據(jù)和GPS數(shù)據(jù)的采集。航標(biāo)燈是一種請(qǐng)求-應(yīng)答式的設(shè)備,要采集航標(biāo)燈數(shù)據(jù)就必須通過(guò)處理器或是控制中心發(fā)送采集命令。在終端上采用定時(shí)的方式,當(dāng)設(shè)置時(shí)間到時(shí),終端就會(huì)自動(dòng)發(fā)送遙測(cè)命令給航標(biāo)燈,當(dāng)航標(biāo)燈收到數(shù)據(jù)并通過(guò)CRC檢驗(yàn)后,航標(biāo)燈將其實(shí)時(shí)的數(shù)據(jù)發(fā)送給處理器,然后通過(guò)通信模塊發(fā)送到控制中心。GPS數(shù)據(jù)是通過(guò)讀取GPS-OEM板自動(dòng)輸出的NMEA-0183格式數(shù)據(jù)獲得的,在程序中采用中斷方式接收,每1 s接收一次數(shù)據(jù)。GPS和航標(biāo)燈數(shù)據(jù)采集流程圖如圖4,圖5所示。
當(dāng)采用ZigBee通信方式時(shí),由于ZigBee模塊發(fā)送數(shù)據(jù)的最大長(zhǎng)度為63個(gè)字節(jié),所以將終端發(fā)給服務(wù)器的有效數(shù)據(jù)分為兩幀發(fā)送,在兩幀之間加上一個(gè)標(biāo)志0x21,有助于服務(wù)器端解析終端數(shù)據(jù)。
評(píng)論