




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
ZigBee協(xié)議棧實(shí)驗(yàn):廣播與單播實(shí)驗(yàn)主講:張老師一、實(shí)驗(yàn)原理二、重點(diǎn)代碼解析三、實(shí)驗(yàn)結(jié)果驗(yàn)證標(biāo)題四、數(shù)據(jù)接收一、實(shí)驗(yàn)原理——基礎(chǔ)知識(shí)儲(chǔ)備Zigbee網(wǎng)絡(luò)中進(jìn)行數(shù)據(jù)通信主要有三種類型:廣播、單播、組播。一、實(shí)驗(yàn)原理——通信方式的協(xié)議棧實(shí)現(xiàn)參數(shù)1:afAddrType_t*dstAddr該參數(shù)包含了目的節(jié)點(diǎn)的網(wǎng)絡(luò)地址、端點(diǎn)號(hào)及數(shù)據(jù)傳送的模式,如單播、廣播或多播等。typedefstruct
{
Union
{
uint16shortAddr;
//用于標(biāo)識(shí)該節(jié)點(diǎn)網(wǎng)絡(luò)地址的變量
}addr;afAddrMode_taddrMode;
//用于指定數(shù)據(jù)傳送模式,單播、多播還是廣播
byteendPoint;
//端點(diǎn)號(hào)
}afAddrType_t;
//
其定義在AF.h中afAddrType_t是個(gè)結(jié)構(gòu)體如下:一、實(shí)驗(yàn)原理——通信方式的協(xié)議棧實(shí)現(xiàn)
ZigBee協(xié)議棧將數(shù)據(jù)通信過程高度抽象,使用一個(gè)函數(shù)完成數(shù)據(jù)的發(fā)送,以不同的參數(shù)來選擇數(shù)據(jù)發(fā)送方式(廣播、組播還是單播)。afStatus_tAF_DataRequest(afAddrType_t*dstAddr,//目的地址指針endPointDesc_t*srcEP,
//發(fā)送節(jié)點(diǎn)的端點(diǎn)描述符指針uint16cID,
//ClusID簇ID號(hào)uint16len,
//發(fā)送數(shù)據(jù)的長度uint8*buf,
//指向存放發(fā)送數(shù)據(jù)的緩沖區(qū)指針uint8*transID,//傳輸序列號(hào),該序列號(hào)隨著信息的發(fā)送而增加
uint8options,//發(fā)送選項(xiàng)uint8radius
//最大傳輸半徑(發(fā)送的跳數(shù))
)ZigBee協(xié)議棧中數(shù)據(jù)發(fā)送函數(shù)原型如下:一、實(shí)驗(yàn)原理——通信方式的協(xié)議棧實(shí)現(xiàn)
上述結(jié)構(gòu)體中的afAddrMode_taddrMode就是用于指定數(shù)據(jù)傳送模式,是個(gè)枚舉類型,可以設(shè)置為以下幾個(gè)值。typedefenum{
afAddrNotPresent=AddrNotPresent,
//表示通過綁定關(guān)系指定目的地址
afAddr16Bit=Addr16Bit,
//單播發(fā)送
afAddrGroup=AddrGroup,
//組播
afAddrBroadcast=AddrBroadcast//廣播}afAddrMode_t;Enum{
AddrNotPresent=0,
AddrGroup=1,
Addr16Bit=2,
Addr64Bit=3,
AddrBroadcast=15};一、實(shí)驗(yàn)原理——單播注意,其實(shí)單播有兩種方式一種是綁定傳輸,一種是目標(biāo)地址的單播傳輸。my_DstAddr.addrMode=(afAddrMode_t)AddrNotPresent,一種是直接指定目標(biāo)地址的單播傳輸,比如協(xié)調(diào)器就是0x0000。①單播綁定傳輸my_DstAddr.addrMode=(afAddrMode_t)Addr16Bit;
//單播發(fā)送my_DstAddr.endPoint=GENERICAPP_ENDPOINT;
//目的端口號(hào)my_DstAddr.addr.shortAddr=0;
//按照綁定的方式進(jìn)行單播,不需要指定目標(biāo)地址,需要先將兩個(gè)設(shè)備綁定,將兩個(gè)設(shè)備綁定后即可通信②直接指定目標(biāo)地址的單播傳輸:是標(biāo)準(zhǔn)尋址模式,它將數(shù)據(jù)包發(fā)送給一個(gè)已經(jīng)知道網(wǎng)絡(luò)地址的網(wǎng)絡(luò)設(shè)備,將afAddrMode設(shè)置為Addr16Bit并且在數(shù)據(jù)包中攜帶目標(biāo)設(shè)備地址。my_DstAddr.addrMode=(afAddrMode_t)Addr16Bit;
//單播發(fā)送my_DstAddr.endPoint=GENERICAPP_ENDPOINT;
//目的端口號(hào)my_DstAddr.addr.shortAddr=0x0000;
//目標(biāo)設(shè)備網(wǎng)絡(luò)地址一、實(shí)驗(yàn)原理——廣播當(dāng)應(yīng)用程序需要將數(shù)據(jù)包發(fā)送給網(wǎng)絡(luò)的每一個(gè)設(shè)備時(shí),使用這種模式。地址模式設(shè)置為AddrBroadcast。目標(biāo)地址my_DstAddr.addr.shortAddr可以根據(jù)需求設(shè)置為下面廣播地址的一種。NWK_BROADCAST_SHORTADDR_DEVALL(0xFFFF)——數(shù)據(jù)包將被傳送到網(wǎng)絡(luò)上的所有設(shè)備,包括睡眠中的設(shè)備。對于睡眠中的設(shè)備,數(shù)據(jù)包將被保留在其父親節(jié)點(diǎn)直到查詢到它,或者消息超時(shí)(NWK_INDIRECT_MSG_TIMEOUT在f8wConifg.cfg中)。NWK_BROADCAST_SHORTADDR_DEVRXON(0xFFFD)——數(shù)據(jù)包將被傳送到網(wǎng)絡(luò)上的所有在空閑時(shí)打開接收的設(shè)備(RXONWHENIDLE),也就是說,除了睡眠中的所有設(shè)備。NWK_BROADCAST_SHORTADDR_DEVZCZR(0xFFFC)——數(shù)據(jù)包發(fā)送給所有的路由器,包括協(xié)調(diào)器。my_DstAddr.addrMode=(afAddrMode_t)AddrBroadcast;//廣播發(fā)送my_DstAddr.endPoint=GENERICAPP_ENDPOINT;
//目的端口號(hào)my_DstAddr.addr.shortAddr=0xFFFF;
//協(xié)調(diào)器網(wǎng)絡(luò)地址一、實(shí)驗(yàn)原理——實(shí)驗(yàn)效果及原理圖
實(shí)驗(yàn)效果預(yù)設(shè)為:協(xié)調(diào)器周期性以廣播的形式向終端節(jié)點(diǎn)發(fā)送數(shù)據(jù),終端節(jié)點(diǎn)收到數(shù)據(jù)后,使開發(fā)板上的LED狀態(tài)翻轉(zhuǎn),同時(shí)向協(xié)調(diào)器發(fā)送字符串“EndDevicereceived!”,協(xié)調(diào)器收到終端節(jié)點(diǎn)發(fā)回的數(shù)據(jù)后,通過串口輸出到PC機(jī),用戶可以通過串口調(diào)試助手查看該信息。一、實(shí)驗(yàn)原理——協(xié)調(diào)器工作流程協(xié)調(diào)器周期性以廣播的形式向終端節(jié)點(diǎn)發(fā)送數(shù)據(jù),如何實(shí)現(xiàn)周期性地發(fā)送數(shù)據(jù)呢?這里又需要用定時(shí)函數(shù)osal_start-timcrEx0,定時(shí)5s,定時(shí)時(shí)間達(dá)到后,向終端節(jié)點(diǎn)發(fā)送數(shù)據(jù),發(fā)送完數(shù)據(jù)再定時(shí)5s,這樣就實(shí)現(xiàn)了周期性地發(fā)送數(shù)據(jù)。一、實(shí)驗(yàn)原理——終端節(jié)點(diǎn)工作流程終端節(jié)點(diǎn)上電后,會(huì)進(jìn)行硬件電路的初始化,然后搜索是否有ZigBee無線網(wǎng)絡(luò),如果有ZigBee無線網(wǎng)絡(luò)再自動(dòng)加入(這是最簡單的情況,當(dāng)然可以控制節(jié)點(diǎn)加入網(wǎng)絡(luò)時(shí)要符合編譯時(shí)確定的網(wǎng)絡(luò)號(hào)等),然后判斷是否收到協(xié)調(diào)器發(fā)送的數(shù)據(jù),若收到,則將LED狀態(tài)取反,然后發(fā)送數(shù)據(jù)到協(xié)調(diào)器,否則繼續(xù)等待接收數(shù)據(jù)。二、重點(diǎn)代碼解析--協(xié)調(diào)器程序設(shè)計(jì)if(events&SEND_TO_ALL_EVENT)//數(shù)據(jù)發(fā)送事件處理{GenericApp_SendTheMessage();osal_start_timerEx(GenericApp_TaskID,SEND_TO_ALL_EVENT,5000);return(events^SEND_TO_ALL_EVENT);}
當(dāng)網(wǎng)絡(luò)狀態(tài)發(fā)生變化時(shí),啟動(dòng)定時(shí)器定時(shí)5S,定時(shí)時(shí)間到達(dá)后,設(shè)置SEND_TO_ALL_EVENT事件,在SEND_TO_ALL_EVENT事件處理函數(shù)中,調(diào)用發(fā)送數(shù)據(jù)函數(shù)GenericApp_SendTheMessage(),發(fā)送完數(shù)據(jù)后,再次啟動(dòng)定時(shí)器,定時(shí)5S……二、重點(diǎn)代碼解析--協(xié)調(diào)器程序設(shè)計(jì)if(events&SEND_TO_ALL_EVENT)//數(shù)據(jù)發(fā)送事件處理{GenericApp_SendTheMessage();osal_start_timerEx(GenericApp_TaskID,SEND_TO_ALL_EVENT,5000);return(events^SEND_TO_ALL_EVENT);}
當(dāng)網(wǎng)絡(luò)狀態(tài)發(fā)生變化時(shí),啟動(dòng)定時(shí)器定時(shí)5S,定時(shí)時(shí)間到達(dá)后,設(shè)置SEND_TO_ALL_EVENT事件,在SEND_TO_ALL_EVENT事件處理函數(shù)中,調(diào)用發(fā)送數(shù)據(jù)函數(shù)GenericApp_SendTheMessage(),發(fā)送完數(shù)據(jù)后,再次啟動(dòng)定時(shí)器,定時(shí)5S……二、重點(diǎn)代碼解析--協(xié)調(diào)器程序設(shè)計(jì)voidGenericApp_MessageMSGCB(afIncomingMSGPacket_t*pkt){unsignedcharbuf[20];unsignedcharbuffer[2]={0x0A,0x0D};switch(pkt->clusterId){caseGENERICAPP_CLUSTERID:osal_memcpy(buf,pkt->cmd.Data,20);HalUARTWrite(0,buf,20);HalUARTWrite(0,buffer,2);break;}}當(dāng)收到終端節(jié)點(diǎn)發(fā)回的數(shù)據(jù)后,讀取該數(shù)據(jù),然后發(fā)送到串口。二、重點(diǎn)代碼解析--協(xié)調(diào)器程序設(shè)計(jì)voidGenericApp_SendTheMessage(void){unsignedchar*theMessageData="Coordinatorsend!";afAddrType_tmy_DstAddr;my_DstAddr.addrMode=(afAddrMode_t)AddrBroadcast;my_DstAddr.endPoint=GENERICAPP_ENDPOINT;my_DstAddr.addr.shortAddr=0xFFFF;AF_DataRequest(&my_DstAddr,&GenericApp_epDesc,GENERICAPP_CLUSTERID,osal_strlen(theMessageData)+1,theMessageData,&GenericApp_TransID,AF_DISCV_ROUTE,AF_DEFAULT_RADIUS);}使用廣播方式發(fā)送數(shù)據(jù),注意,此時(shí)發(fā)送模式是廣播,如下代碼所示:my_DstAddr.addrMode=(afAddrMode_t)AddrBroadcast;相應(yīng)的網(wǎng)絡(luò)地址可以設(shè)為0xFFFF,如下代碼所示:my_DstAddr.addr.shortAddr=0xFFFF;二、重點(diǎn)代碼解析—終端節(jié)點(diǎn)程序設(shè)計(jì)voidGenericApp_MessageMSGCB(afIncomingMSGPacket_t*pkt){char*recvbuf;unsignedcharbuffer[2]={0x0A,0x0D};switch(pkt->clusterId){caseGENERICAPP_CLUSTERID:osal_memcpy(recvbuf,pkt->cmd.Data,osal_strlen("Coordinatorsend!")+1);if(osal_memcmp(recvbuf,"Coordinatorsend!",osal_strlen("Coordinatorsend!")+1)){HalUARTWrite(0,recvbuf,18);
HalUARTWrite(0,buffer,2);GenericApp_SendTheMessage();}}}上述代碼是對接收到的數(shù)據(jù)進(jìn)行處理,當(dāng)正確接收到協(xié)調(diào)器發(fā)送的字符串"Coordinatorsend!"時(shí),調(diào)用函數(shù)GenericApp_SendTheMessage()發(fā)送返回消息。二、重點(diǎn)代碼解析—終端節(jié)點(diǎn)程序設(shè)計(jì)voidGenericApp_SendTheMessage(void){unsignedchar*theMessageData="EndDevicereceived!";afAddrType_tmy_DstAddr;my_DstAddr.addrMode=(afAddrMode_t)Addr16Bit;my_DstAddr.endPoint=GENERICAPP_ENDPOINT;my_Dst
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 浙江汽車職業(yè)技術(shù)學(xué)院《影視后期設(shè)計(jì)與制作》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣州科技職業(yè)技術(shù)大學(xué)《運(yùn)營管理模擬》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025屆江蘇省徐州市睢寧高中南校高三2月月考試卷物理試題含解析
- 陜西鐵路工程職業(yè)技術(shù)學(xué)院《醫(yī)學(xué)生物學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 古代教育理念對當(dāng)代的啟示
- 公建項(xiàng)目物業(yè)招標(biāo)流程及標(biāo)準(zhǔn)
- 澳門廢氣處理施工方案
- 2024年三季度報(bào)湖南地區(qū)A股應(yīng)收賬款周轉(zhuǎn)率排名前十大上市公司
- 遼寧省遼陽市2024-2025學(xué)年高三(上)期末生物試卷(含解析)
- 河北省保定市2024-2025學(xué)年高一上學(xué)期1月期末英語試題(B)【含答案】
- 廣告安裝施工及方案
- 應(yīng)急第一響應(yīng)人理論考試試卷(含答案)
- 2024年海南省公務(wù)員錄用考試《行測》試題及答案解析
- 《預(yù)防未成年人犯罪》課件(圖文)
- 上下級關(guān)系與領(lǐng)導(dǎo)力管理制度
- 九年級化學(xué)人教版跨學(xué)科實(shí)踐3水質(zhì)檢測及自制凈水器教學(xué)設(shè)計(jì)
- 堆垛機(jī)保護(hù)保養(yǎng)手冊
- 2024年衛(wèi)生資格(中初級)-初級藥師考試近5年真題集錦(頻考類試題)帶答案
- 2024年職業(yè)病防治考試題庫附答案(版)
- 【呋塞米合成工藝的探究進(jìn)展5300字(論文)】
- 床上用品項(xiàng)目實(shí)施方案和售后服務(wù)方案(技術(shù)方案)
評論
0/150
提交評論