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