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