基于ZigBee Mesh網絡的無線串口設計
Z—Stack采用操作系統的思想來構建,采用任務輪循機制,當各層初始化之后,系統進入低功耗模式,當任務有事件發(fā)生時,喚醒系統,開始進入中斷處理任務事件,結束后繼續(xù)進入低功耗模式。如果同時有幾個事件發(fā)生,判斷優(yōu)先級,逐次處理事件。Z—Stack的工作流程如圖7所示。本文引用地址:http://butianyuan.cn/article/156264.htm
3.3 無線串口程序流程
因為Z—Stack是采用任務輪循機制,GenericApp是屬于其中的一個任務,在文件GenericApp.c中的任務初始化函數GenericApp_Init()中添加串口初始化代碼,在GenericApp_ProcessEven()函數中添加無線串口收發(fā)事件Serial_RecEven和Serial_TranEven的處理函數。圖8和圖9是GenericApp_Init()函數流程圖和GenericApp_ProcessEven()函數流程圖。
圖中初始化NV Flash是用以儲存其他節(jié)點網絡地址名字對應表。
當節(jié)點上電加入ZigBee網絡后,便會執(zhí)行GenericApp_Init()函數,初始化串口,并向網絡中的其他節(jié)點以廣播的方式發(fā)送其網絡地址和名字。
當網絡中的其他節(jié)點接收到數據時,便會觸發(fā)接收數據事件,GenericApp_ProcessEven()函數判斷是串口接收數據命令還是儲存網絡地址命令,如果是前者,便將數據寫到串口;如果是后者則先判斷是否來自于廣播方式發(fā)送來的數據:若是則儲存該網絡地址和名字,并且以單播的方式回饋本節(jié)點的網絡地址,保證網絡中的各個節(jié)點都知道其他節(jié)點的地址和名字;若不是就儲存該網絡地址和名字,不用反饋本節(jié)點的網絡地址和名字。
當GenericApp_ProcessEven()函數檢測到Serial_TranEven事件發(fā)生時,便讀串口并將數據按照約定的格式發(fā)送出去。
評論