《無線短距離通信技術(shù)開發(fā)項目教程》(第二版) 課件 第10-12章 測誤碼率實驗、ZigBee協(xié)議棧實驗:廣播與單播實驗、ZigBee協(xié)議棧實驗:組播實驗_第1頁
《無線短距離通信技術(shù)開發(fā)項目教程》(第二版) 課件 第10-12章 測誤碼率實驗、ZigBee協(xié)議棧實驗:廣播與單播實驗、ZigBee協(xié)議棧實驗:組播實驗_第2頁
《無線短距離通信技術(shù)開發(fā)項目教程》(第二版) 課件 第10-12章 測誤碼率實驗、ZigBee協(xié)議棧實驗:廣播與單播實驗、ZigBee協(xié)議棧實驗:組播實驗_第3頁
《無線短距離通信技術(shù)開發(fā)項目教程》(第二版) 課件 第10-12章 測誤碼率實驗、ZigBee協(xié)議棧實驗:廣播與單播實驗、ZigBee協(xié)議棧實驗:組播實驗_第4頁
《無線短距離通信技術(shù)開發(fā)項目教程》(第二版) 課件 第10-12章 測誤碼率實驗、ZigBee協(xié)議棧實驗:廣播與單播實驗、ZigBee協(xié)議棧實驗:組播實驗_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

測誤碼率實驗一、實驗原理二、重點代碼解析三、數(shù)據(jù)發(fā)送標(biāo)題四、數(shù)據(jù)接收一、實驗原理——功能描述

實驗效果:兩塊WeBee模塊通信,一個模塊作發(fā)射,另外一個模塊接收,接收模塊通過串口不在PC機上顯示當(dāng)前的誤包率、RSSI值和接收到數(shù)據(jù)包的個數(shù)。

實驗?zāi)康模海篜ER(誤包率檢測)實驗是BasicRF的第二個實驗,和無線點燈一樣是沒有使用協(xié)議棧的點對點通訊。通過無線點燈大家應(yīng)該對zigbee的發(fā)射和接收有個感性的認識,本次實驗講解不會像無線點燈一樣講得那么詳細,因為接收發(fā)射的過程基本上是一樣的,但也希望初學(xué)者能自己認真學(xué)習(xí)一下這個實驗,相信會對無線傳輸會有一個更清晰的認識。一、實驗原理——實驗現(xiàn)象由于距離比較近,所以掉包不明顯的,有興趣的可以把發(fā)送節(jié)點拿到較遠的地方,然后觀察掉包率。或者先打開發(fā)送模塊,打開接收模塊來測試掉包,會顯示出掉包情況。二、重點代碼解析1.首先還是要先找到main.c

main.c做了哪些事情:①一大堆的初始化(都是必須的);②

設(shè)置信道,發(fā)射和接收模塊的信道必須一致;③選擇為發(fā)射或者接收模式。發(fā)射函數(shù)defineMODE_SEND則進入appTransmitter();接收函數(shù)沒有

defineMODE_SEND則進入appReceiver()二、重點代碼解析2.為了獲取傳輸?shù)男阅軈?shù),接收器中包含了如下幾個數(shù)據(jù)(包含在rxStats變量中,其類型為perRxStats_t)參數(shù)含義rxStats.expectedSeqNum預(yù)計下一個數(shù)據(jù)包的序號,其值等于“成功接收的數(shù)據(jù)包”+“丟失的數(shù)據(jù)包”+1rxStats.rssiSum上32個數(shù)據(jù)包的RSSI值的和rxStats.rcvdPkts每次PER測試中,成功接收到的數(shù)據(jù)包的個數(shù)rxStats.lostPkts丟失數(shù)據(jù)包的個數(shù)三、數(shù)據(jù)發(fā)送appTransmitter函數(shù)完成的任務(wù):①初始化BasicRF②設(shè)置發(fā)射功率③設(shè)定測試的數(shù)據(jù)包量④配置定時器和IO⑤初始化數(shù)據(jù)包載荷⑥進行循環(huán)函數(shù),不斷地發(fā)送數(shù)據(jù)包,每發(fā)送完一次,下一個數(shù)據(jù)包的序列號自加1再發(fā)送;四、數(shù)據(jù)接收

接收函數(shù)appReceiver的作用:①串口在此初始化②初始化BasicRF③不斷地接收數(shù)據(jù)包,并檢查數(shù)據(jù)包序號是否為期望值,作出相應(yīng)處理④串口打印出,接收包的個數(shù)\誤包率及上32個數(shù)據(jù)包的RSSI值的平均值ZigBee協(xié)議棧實驗:廣播與單播實驗主講:張老師一、實驗原理二、重點代碼解析三、實驗結(jié)果驗證標(biāo)題四、數(shù)據(jù)接收一、實驗原理——基礎(chǔ)知識儲備Zigbee網(wǎng)絡(luò)中進行數(shù)據(jù)通信主要有三種類型:廣播、單播、組播。一、實驗原理——通信方式的協(xié)議棧實現(xiàn)參數(shù)1:afAddrType_t*dstAddr該參數(shù)包含了目的節(jié)點的網(wǎng)絡(luò)地址、端點號及數(shù)據(jù)傳送的模式,如單播、廣播或多播等。typedefstruct

{

Union

{

uint16shortAddr;

//用于標(biāo)識該節(jié)點網(wǎng)絡(luò)地址的變量

}addr;afAddrMode_taddrMode;

//用于指定數(shù)據(jù)傳送模式,單播、多播還是廣播

byteendPoint;

//端點號

}afAddrType_t;

//

其定義在AF.h中afAddrType_t是個結(jié)構(gòu)體如下:一、實驗原理——通信方式的協(xié)議棧實現(xiàn)

ZigBee協(xié)議棧將數(shù)據(jù)通信過程高度抽象,使用一個函數(shù)完成數(shù)據(jù)的發(fā)送,以不同的參數(shù)來選擇數(shù)據(jù)發(fā)送方式(廣播、組播還是單播)。afStatus_tAF_DataRequest(afAddrType_t*dstAddr,//目的地址指針endPointDesc_t*srcEP,

//發(fā)送節(jié)點的端點描述符指針uint16cID,

//ClusID簇ID號uint16len,

//發(fā)送數(shù)據(jù)的長度uint8*buf,

//指向存放發(fā)送數(shù)據(jù)的緩沖區(qū)指針uint8*transID,//傳輸序列號,該序列號隨著信息的發(fā)送而增加

uint8options,//發(fā)送選項uint8radius

//最大傳輸半徑(發(fā)送的跳數(shù))

)ZigBee協(xié)議棧中數(shù)據(jù)發(fā)送函數(shù)原型如下:一、實驗原理——通信方式的協(xié)議棧實現(xiàn)

上述結(jié)構(gòu)體中的afAddrMode_taddrMode就是用于指定數(shù)據(jù)傳送模式,是個枚舉類型,可以設(shè)置為以下幾個值。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};一、實驗原理——單播注意,其實單播有兩種方式一種是綁定傳輸,一種是目標(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;

//目的端口號my_DstAddr.addr.shortAddr=0;

//按照綁定的方式進行單播,不需要指定目標(biāo)地址,需要先將兩個設(shè)備綁定,將兩個設(shè)備綁定后即可通信②直接指定目標(biāo)地址的單播傳輸:是標(biāo)準尋址模式,它將數(shù)據(jù)包發(fā)送給一個已經(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;

//目的端口號my_DstAddr.addr.shortAddr=0x0000;

//目標(biāo)設(shè)備網(wǎng)絡(luò)地址一、實驗原理——廣播當(dāng)應(yīng)用程序需要將數(shù)據(jù)包發(fā)送給網(wǎng)絡(luò)的每一個設(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é)點直到查詢到它,或者消息超時(NWK_INDIRECT_MSG_TIMEOUT在f8wConifg.cfg中)。NWK_BROADCAST_SHORTADDR_DEVRXON(0xFFFD)——數(shù)據(jù)包將被傳送到網(wǎng)絡(luò)上的所有在空閑時打開接收的設(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;

//目的端口號my_DstAddr.addr.shortAddr=0xFFFF;

//協(xié)調(diào)器網(wǎng)絡(luò)地址一、實驗原理——實驗效果及原理圖

實驗效果預(yù)設(shè)為:協(xié)調(diào)器周期性以廣播的形式向終端節(jié)點發(fā)送數(shù)據(jù),終端節(jié)點收到數(shù)據(jù)后,使開發(fā)板上的LED狀態(tài)翻轉(zhuǎn),同時向協(xié)調(diào)器發(fā)送字符串“EndDevicereceived!”,協(xié)調(diào)器收到終端節(jié)點發(fā)回的數(shù)據(jù)后,通過串口輸出到PC機,用戶可以通過串口調(diào)試助手查看該信息。一、實驗原理——協(xié)調(diào)器工作流程協(xié)調(diào)器周期性以廣播的形式向終端節(jié)點發(fā)送數(shù)據(jù),如何實現(xiàn)周期性地發(fā)送數(shù)據(jù)呢?這里又需要用定時函數(shù)osal_start-timcrEx0,定時5s,定時時間達到后,向終端節(jié)點發(fā)送數(shù)據(jù),發(fā)送完數(shù)據(jù)再定時5s,這樣就實現(xiàn)了周期性地發(fā)送數(shù)據(jù)。一、實驗原理——終端節(jié)點工作流程終端節(jié)點上電后,會進行硬件電路的初始化,然后搜索是否有ZigBee無線網(wǎng)絡(luò),如果有ZigBee無線網(wǎng)絡(luò)再自動加入(這是最簡單的情況,當(dāng)然可以控制節(jié)點加入網(wǎng)絡(luò)時要符合編譯時確定的網(wǎng)絡(luò)號等),然后判斷是否收到協(xié)調(diào)器發(fā)送的數(shù)據(jù),若收到,則將LED狀態(tài)取反,然后發(fā)送數(shù)據(jù)到協(xié)調(diào)器,否則繼續(xù)等待接收數(shù)據(jù)。二、重點代碼解析--協(xié)調(diào)器程序設(shè)計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ā)生變化時,啟動定時器定時5S,定時時間到達后,設(shè)置SEND_TO_ALL_EVENT事件,在SEND_TO_ALL_EVENT事件處理函數(shù)中,調(diào)用發(fā)送數(shù)據(jù)函數(shù)GenericApp_SendTheMessage(),發(fā)送完數(shù)據(jù)后,再次啟動定時器,定時5S……二、重點代碼解析--協(xié)調(diào)器程序設(shè)計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ā)生變化時,啟動定時器定時5S,定時時間到達后,設(shè)置SEND_TO_ALL_EVENT事件,在SEND_TO_ALL_EVENT事件處理函數(shù)中,調(diào)用發(fā)送數(shù)據(jù)函數(shù)GenericApp_SendTheMessage(),發(fā)送完數(shù)據(jù)后,再次啟動定時器,定時5S……二、重點代碼解析--協(xié)調(diào)器程序設(shè)計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é)點發(fā)回的數(shù)據(jù)后,讀取該數(shù)據(jù),然后發(fā)送到串口。二、重點代碼解析--協(xié)調(diào)器程序設(shè)計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ù),注意,此時發(fā)送模式是廣播,如下代碼所示:my_DstAddr.addrMode=(afAddrMode_t)AddrBroadcast;相應(yīng)的網(wǎng)絡(luò)地址可以設(shè)為0xFFFF,如下代碼所示:my_DstAddr.addr.shortAddr=0xFFFF;二、重點代碼解析—終端節(jié)點程序設(shè)計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ù)進行處理,當(dāng)正確接收到協(xié)調(diào)器發(fā)送的字符串"Coordinatorsend!"時,調(diào)用函數(shù)GenericApp_SendTheMessage()發(fā)送返回消息。二、重點代碼解析—終端節(jié)點程序設(shè)計voidGenericApp_SendTheMessage(void){unsignedchar*theMessageData="EndDevicereceived!";afAddrType_tmy_DstAddr;my_DstAddr.addrMode=(afAddrMode_t)Addr16Bit;my_DstAddr.endPoint=GENERICAPP_ENDPOINT;my_DstAddr.addr.shortAddr=0x0000;AF_DataRequest(&my_DstAddr,&GenericApp_epDesc,GENERICAPP_CLUSTERID,osal_strlen(theMessageData)+1,theMessageData,&GenericApp_TransID,AF_DISCV_ROUTE,AF_DEFAULT_RADIUS);HalLedSet(HAL_LED_2,HAL_LED_MODE_TOGGLE);}向協(xié)調(diào)器發(fā)送單播數(shù)據(jù),注意加粗字體部分的代碼實現(xiàn)的是單播通信。注意:HalLedSet()函數(shù)可以設(shè)置LED的狀態(tài)進行翻轉(zhuǎn)。三、實驗結(jié)果驗證--終端節(jié)點的串口發(fā)送設(shè)置好串口調(diào)試助手,打開協(xié)調(diào)器電源,然后打開兩個終端節(jié)點的電源,此時可以看到如下實驗現(xiàn)象:①每隔5S,終端節(jié)點的串口顯示一個字符串"Coordinatorsend!"②同時終端節(jié)點的LED每隔5S點亮一次。三、實驗結(jié)果驗證--協(xié)調(diào)器節(jié)點的串口發(fā)送設(shè)置好串口調(diào)試租手,打開協(xié)調(diào)器電源,然后打開兩個終端節(jié)點的電源,此時可以看到如下實驗現(xiàn)象:①每隔5S,串口會顯示三個字符串"EndDevicereceived!";②同時終端節(jié)點的LED每隔5S點亮一次。ZigBee協(xié)議棧實驗:組播實驗主講:張老師一、實驗原理二、重點代碼解析三、實驗結(jié)果驗證標(biāo)題四、數(shù)據(jù)接收一、實驗原理--加入組的流程

當(dāng)應(yīng)用程序需要將數(shù)據(jù)包發(fā)送給網(wǎng)絡(luò)上的一組設(shè)備時,使用組播模式。地址模式設(shè)置為afAddrGroup,并且addr.shortAddr設(shè)置為組ID。使用組播的方式需要加入特定的組。加入組的流程如下:①首先聲明一個組對象aps_Group_tSampleApp_Groupaps_Group_t結(jié)構(gòu)體的定義:typedefstruct{

uint16ID;

//Uniquetothistable

uint8

name[APS_GROUP_NAME_LEN];//#defineAPS_GROUP_NAME_LEN

16}aps_Group_t;每個組有個特定的ID跟組名,組名存放在name數(shù)組中,name數(shù)組的第一個元素是組名的長度,第二個元素開始存放組名字符串。一、實驗原理--加入組的流程

②對SampleApp_Group賦值//Bydefault,alldevicesstartoutinGroup1SampleApp_Group.ID=0x0003;

//初始化組IDosal_memcpy(SampleApp_G,"Group3",7);

//將組名的長度寫入name數(shù)組的第一個元素位置處。

③在本任務(wù)里將端點加入到組中aps_AddGroup(SAMPLEAPP_ENDPOINT,&SampleApp_Group);一、實驗原理--加入組的流程

④設(shè)定通信的目標(biāo)地址及模式//Setupfortheflashcommand'sdestinationaddress-Group1SampleApp_Flash_DstAddr.addrMode=(afAddrMode_t)afAddrGroup;SampleApp_Flash_DstAddr.endPoint=SAMPLEAPP_ENDPOINT;SampleApp_Flash_DstAddr.addr.shortAddr=SampleApp_Group.ID;通信時候,發(fā)送設(shè)備的輸出cluster設(shè)定為接收設(shè)備的輸入cluster,另外profileID設(shè)定相同,即可通信。一、實驗原理--加入組的流程⑤若要把一個設(shè)備加入到組中的端點從組中移除,調(diào)用aps_RemoveGroup:aps_Group_t*grp;grp=aps_FindGroup(SAMPLEAPP_ENDPOINT,SAMPLEAPP_FLASH_GROUP);if(grp){

//Removefromthegroupaps_RemoveGroup(SAMPLEAPP_ENDPOINT,SAMPLEAPP_FLASH_GROUP);}注意組可以用來關(guān)聯(lián)間接尋址。再綁定表中找到的目標(biāo)地址可能是是單點傳送或者是一個組地址。另外,廣播發(fā)送可以看做是一個組尋址的特例。一、實驗原理——實驗效果及原理圖協(xié)調(diào)器周期性的以組播的形式向路由器發(fā)送數(shù)據(jù)路由器收到數(shù)據(jù)后,使開發(fā)板上的LED狀態(tài)翻轉(zhuǎn),同時向協(xié)調(diào)器發(fā)送字符串“Routerreceived!",協(xié)調(diào)器收到路由器發(fā)回的數(shù)據(jù)后,通過串口輸出到PC機,用戶可以通過串口調(diào)試助手查看該信息。在路由器編程時,將兩個路由器和協(xié)調(diào)器加到一個組中,剩余一個路由器不加入該組,觀察實驗現(xiàn)象。一、實驗原理——工作流程組播通信實驗協(xié)調(diào)器程序流程圖組播通信實驗路由器程序流程圖二、重點代碼解析--協(xié)調(diào)器程序設(shè)計#include"aps_groups.h"http://使用加入組函數(shù)aps_AddGroup()函數(shù),需要包含頭文件aps_Group_tGenericApp_Group;aps_Group_tGenericApp_Group;voidGenericApp_Init(bytetask_id){。。。GenericApp_Group.ID=0x0001;GenericApp_G[0]=6;osal_memcpy(&(GenericApp_G[1]),"Group1",6);}以上代碼是任務(wù)初始化代碼,主要完成端口初始化和組號的初始化。二、重點代碼解析--協(xié)調(diào)器程序設(shè)計UINT16GenericApp_ProcessEvent(bytetask_id,UINT16events){。。。caseZDO_STATE_CHANGE:GenericApp_Nwkstate=(devStates_t)(MSGpkt->hdr.status);if(GenericApp_Nwkstate==DEV_ZB_COORD)//建立網(wǎng)絡(luò)后,加入組

{aps_AddGroup(GENERICAPP_ENDPOINT,&GenericApp_Group);

osal_set_event(GenericApp_TaskID,SEND_TO_ALL_EVENT);}。。。

if(events&SEND_TO_ALL_EVENT)//發(fā)送組播數(shù)據(jù),每次發(fā)送完就定時5秒

{GenericApp_SendTheMessage();osal_start_timerEx(GenericApp_TaskID,SEND_TO_ALL_EVENT,5000);return(events^SEND_TO_ALL_EVENT);}}二、重點代碼解析--協(xié)調(diào)器程序設(shè)計voidGenericApp_SendTheMessage(void){char*theMessageData="Coordinatorsend!";afAddrType_tmy_DstAddr;my_DstAddr.addrMode=(afAddrMode_t)AddrGroup;my_DstAddr.endPoint=GENERICAPP_ENDPOINT;my_DstAddr.addr.shortAddr=GenericApp_Group.ID;AF_DataRequest(&my_DstAddr,&GenericApp_epDesc,GENERICAPP_CLUSTERID,osal_strlen(theMessageData)+1,theMessageData,&GenericApp_TransID,AF_DISCV_ROUTE,AF_DEFAULT_RADIUS);}上述函數(shù)實現(xiàn)了組播發(fā)送,此時地址模式設(shè)置為AddrGroup,網(wǎng)絡(luò)地址設(shè)置為組ID,即GenericApp_Group.ID。二、重點代碼解析--協(xié)調(diào)器程序設(shè)計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ù),注意,此時發(fā)送模式是廣播,如下代碼所示:my_DstAddr.addrMode=(afAddrMode_t)AddrBroadcast;相應(yīng)的網(wǎng)絡(luò)地址可以設(shè)為0xFFFF,如下代碼所示:my_DstAddr.addr.shortAddr=0xFFFF;二、重點代碼解析—路由器節(jié)點程序設(shè)計UINT16GenericApp_ProcessEvent(bytetask_id,UINT16events){。。。caseZDO_STATE_CHANGE:GenericAPP_NwkState=(devStates_t)(MSGpkt->hdr.status);if(GenericAPP_NwkState==DEV_ROUTER){aps_AddGroup(GENERICAPP

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論