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