基于GPRS的ZigBee協(xié)調(diào)器網(wǎng)關(guān)設(shè)計(jì)通信
數(shù)據(jù)處理程序如圖4所示。在數(shù)據(jù)處理的過(guò)程中,只需要處理數(shù)據(jù)幀,心跳幀是不用進(jìn)行處理的,因此有必要對(duì)心跳幀進(jìn)行剔除。由于下位機(jī)編程時(shí)以十六進(jìn)制FE作為每個(gè)數(shù)據(jù)幀開(kāi)始的字節(jié),而心跳幀則為十六進(jìn)制636F 6F6E,因此在服務(wù)器程序進(jìn)行數(shù)據(jù)處理前可先檢測(cè)數(shù)據(jù)的幀頭,這樣即可將數(shù)據(jù)幀和心跳幀分別開(kāi)來(lái)。具體做法便是利用String Subset函數(shù)截取每幀數(shù)據(jù)的第一個(gè)字節(jié),然后與十六進(jìn)制FE比較,再運(yùn)用Case Structure的方式組織,如果相等,則進(jìn)行處理,不相等的情況則不采取任何動(dòng)作,只需保持之前的數(shù)據(jù)即可。這樣不僅可以避免錯(cuò)誤接收結(jié)果,還可提高程序的運(yùn)行效率。本文引用地址:http://www.ex-cimer.com/article/153651.htm
數(shù)據(jù)處理部分首先利用String To Byte Array函數(shù)將接收的字符串保存為字節(jié)數(shù)組,然后利用Search1D Array函數(shù)搜索到第三個(gè)十六進(jìn)制字節(jié)46,進(jìn)一步增強(qiáng)數(shù)據(jù)讀取的可靠性,使用Index Array函數(shù)將數(shù)組中相應(yīng)的子節(jié)點(diǎn)地址、溫度、相對(duì)濕度、電壓值字節(jié)數(shù)據(jù)提取出來(lái),并利用數(shù)值運(yùn)算函數(shù)及相應(yīng)的字符串處理函數(shù)將需要的參數(shù)以十進(jìn)制字符串形式送到Chart控件中顯示波形。不同節(jié)點(diǎn)的信息需要顯示在不同的Chart控件中,此時(shí)的實(shí)現(xiàn)思路就是判斷不同節(jié)點(diǎn)的地址,然后利用Case Structure進(jìn)入不同的事件結(jié)構(gòu)。在歷史數(shù)據(jù)的存儲(chǔ)方面主要是通過(guò)Write To Spreadsheet File子VI把數(shù)據(jù)寫(xiě)入電子表格,以此來(lái)實(shí)現(xiàn)歷史數(shù)據(jù)的方便查看。
整個(gè)系統(tǒng)經(jīng)過(guò)調(diào)試后運(yùn)行正常,下位機(jī)與上位機(jī)連接良好,數(shù)據(jù)傳輸通暢,運(yùn)行效果如圖5所示。
5 結(jié)語(yǔ)
下位機(jī)設(shè)計(jì)的網(wǎng)關(guān)能夠選擇性透明發(fā)送有效數(shù)據(jù)和心跳幀字節(jié),不僅提高了發(fā)送效率,而且保障了上位機(jī)接收數(shù)據(jù)的可靠性,在服務(wù)器與GPRS模塊通信中斷后,會(huì)立即重新申請(qǐng)連接直至再次連接成功。上位機(jī)程序設(shè)計(jì)的TCP服務(wù)器界面友好而簡(jiǎn)潔,能夠分辨出有效數(shù)據(jù)和心跳幀,并可靠地解析出數(shù)據(jù)幀的信息,顯示溫度以及濕度的變化趨勢(shì),同時(shí)將歷史數(shù)據(jù)寫(xiě)入電子表格,方便保存和查看。本系統(tǒng)可移植性強(qiáng),應(yīng)用范圍廣,可用與糧情監(jiān)測(cè)以及溫室環(huán)境的監(jiān)測(cè),具有較大的實(shí)際參考價(jià)值。
tcp/ip相關(guān)文章:tcp/ip是什么
數(shù)字通信相關(guān)文章:數(shù)字通信原理
通信相關(guān)文章:通信原理
土壤濕度傳感器相關(guān)文章:土壤濕度傳感器原理
評(píng)論