<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 手機與無線通信 > 設(shè)計應(yīng)用 > 基于ZigBee Mesh網(wǎng)絡(luò)的無線串口設(shè)計

          基于ZigBee Mesh網(wǎng)絡(luò)的無線串口設(shè)計

          作者: 時間:2011-05-24 來源:網(wǎng)絡(luò) 收藏

          Z—Stack采用操作系統(tǒng)的思想來構(gòu)建,采用任務(wù)輪循機制,當(dāng)各層初始化之后,系統(tǒng)進入低功耗模式,當(dāng)任務(wù)有事件發(fā)生時,喚醒系統(tǒng),開始進入中斷處理任務(wù)事件,結(jié)束后繼續(xù)進入低功耗模式。如果同時有幾個事件發(fā)生,判斷優(yōu)先級,逐次處理事件。Z—Stack的工作流程如圖7所示。

          本文引用地址:http://www.ex-cimer.com/article/156264.htm

          g.jpg


          3.3 程序流程
          因為Z—Stack是采用任務(wù)輪循機制,GenericApp是屬于其中的一個任務(wù),在文件GenericApp.c中的任務(wù)初始化函數(shù)GenericApp_Init()中添加初始化代碼,在GenericApp_ProcessEven()函數(shù)中添加收發(fā)事件Serial_RecEven和Serial_TranEven的處理函數(shù)。圖8和圖9是GenericApp_Init()函數(shù)流程圖和GenericApp_ProcessEven()函數(shù)流程圖。

          h.jpg

          i.jpg


          圖中初始化NV Flash是用以儲存其他節(jié)點地址名字對應(yīng)表。
          當(dāng)節(jié)點上電加入后,便會執(zhí)行GenericApp_Init()函數(shù),初始化串口,并向中的其他節(jié)點以廣播的方式發(fā)送其網(wǎng)絡(luò)地址和名字。
          當(dāng)網(wǎng)絡(luò)中的其他節(jié)點接收到數(shù)據(jù)時,便會觸發(fā)接收數(shù)據(jù)事件,GenericApp_ProcessEven()函數(shù)判斷是串口接收數(shù)據(jù)命令還是儲存網(wǎng)絡(luò)地址命令,如果是前者,便將數(shù)據(jù)寫到串口;如果是后者則先判斷是否來自于廣播方式發(fā)送來的數(shù)據(jù):若是則儲存該網(wǎng)絡(luò)地址和名字,并且以單播的方式回饋本節(jié)點的網(wǎng)絡(luò)地址,保證網(wǎng)絡(luò)中的各個節(jié)點都知道其他節(jié)點的地址和名字;若不是就儲存該網(wǎng)絡(luò)地址和名字,不用反饋本節(jié)點的網(wǎng)絡(luò)地址和名字。
          當(dāng)GenericApp_ProcessEven()函數(shù)檢測到Serial_TranEven事件發(fā)生時,便讀串口并將數(shù)據(jù)按照約定的格式發(fā)送出去。



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();