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