基于Zigbee的嵌入式自動(dòng)抄表系統的研究
?。?)鍵盤(pán)驅動(dòng)
鍵盤(pán)驅動(dòng)程序initKey.。流程圖如圖6 所示。
圖 6 鍵盤(pán)模塊初始化流程圖
4.2 zigBee 協(xié)議棧的使用
要建立一個(gè)單獨的任務(wù),必須先將 osalTaskAdd()函數所需要的參數條件定義好,這些 參數分別是初始化函數wxLesexamPle--Init,任務(wù)處理函數wXLesexamPle--event_foop 和任 務(wù)優(yōu)先級。任務(wù)初始化函數的功能是將該任務(wù)需要完成的功能的功能部件初始化,在每一個(gè) 任務(wù)的初始化函數中,必須完成的功能是要得到設置任務(wù)的任務(wù)ID。任務(wù)處理函數是對任 務(wù)發(fā)生后的事件進(jìn)行處理,一般包括網(wǎng)絡(luò )狀態(tài)的判斷(判斷設備的類(lèi)型,是協(xié)調器還是路由 器或者是終端設備)和接收到信息后的處理。任務(wù)優(yōu)先級[5]則是按照1 一256 排列,優(yōu)先級 高的排在前面。
所以協(xié)議棧的使用流程是:
4.3zigBee 用戶(hù)應用程序
根據節點(diǎn)功能的不同,需要設計相應的用戶(hù)應用程序。如果程序是在協(xié)調器上運行,那 么LRW 隊 NCOORD 俐ATOR 預定義必須在頭文件中定義;如果程序是在路由節點(diǎn)上運行, 那么LRW 隊 NROUTER 預定義必須在頭文件中定義;如果這兩個(gè)預定義都沒(méi)有定義則程序 在RFD 節點(diǎn)上運行。下面本系統中使用的電表采集節點(diǎn)和協(xié)調器節點(diǎn)上的用戶(hù)應用程序的 架構。
?。?)協(xié)調器節點(diǎn)
對協(xié)調器節點(diǎn)來(lái)說(shuō)[6],程序是在它接收到遠程控制中心的指令后從組建網(wǎng)絡(luò )開(kāi)始的,協(xié) 調器節點(diǎn)再向其通信范圍內的電表采集節點(diǎn)發(fā)送喚醒指令,同時(shí)等待新節點(diǎn)的入網(wǎng)請求。系 統啟動(dòng)后,首先初始化所有的硬件和軟件,并設定網(wǎng)絡(luò )參數,然后初始化協(xié)議棧,網(wǎng)絡(luò )建立 成功后即進(jìn)入中斷的循環(huán)檢測和處理過(guò)程。UARTI 是由遠程控制中心下達指令引起的中斷, 協(xié)調器節點(diǎn)通過(guò)uARTI 和GPRs 連接,遠程控制中心通過(guò)GPRS 下達的指令的到來(lái)就會(huì )引 起UARTI 終端事件的發(fā)生。協(xié)調器節點(diǎn)對接到的指令進(jìn)行解析后執行相應的命令。定時(shí)器 中斷主要用來(lái)向遠程控制中心發(fā)送ZigBee 網(wǎng)絡(luò )采集到的電表數據,向電表采集節點(diǎn)發(fā)送采 集數據指令及更新路由表。
?。?)電表采集節點(diǎn)
電表采集節點(diǎn)在程序啟動(dòng)后[7],也是會(huì )首先初始化所有硬件和軟件,初始化協(xié)議棧,并 試圖加入網(wǎng)絡(luò ),如果加入網(wǎng)絡(luò )不成功,則進(jìn)入休眠狀態(tài),由一個(gè)定時(shí)器定時(shí)喚醒電表采集節 點(diǎn)重新加入網(wǎng)絡(luò )。如果加入網(wǎng)絡(luò )成功,則按照其收到的終端類(lèi)型進(jìn)行相應的處理。網(wǎng)絡(luò )中電 表采集節點(diǎn)通過(guò)發(fā)送KVP 幀與協(xié)調器進(jìn)行數據交互,協(xié)調器主要發(fā)送采集電量指令和對時(shí) 指令到電表采集節點(diǎn),電表采集節點(diǎn)再根據數據的屬性進(jìn)行相應處理。程序流程圖如8 所示。
評論