ZigBee IEEE地址说明

通过已知的IEEE地址获得该节点的网络地址:

1、将某终端的IEEE地址保存至数组(与用SmartRF Flash读出的长地址顺序相反)

uint8 pDestination[] ={0x34,0xB1,0xC4,0x08,0x00,0x4B,0x12,0x00};

2、在应用层调用查询网络地址函数:

DP_NwkAddrReq(pDestination,ZDP_ADDR_REQTYPE_SINGLE,0,0);

3、消息会以广播的形式发给网络中所有未休眠的节点,拥有该IEEE地址的终端收到请求后会将网络地址发回给请求方,请求方可以在ZDO层的处理函数中进行处理。在case NWK_addr_rsp下调用消息解析函数ZDO_ParseAddrRsp(); 提取出消息中的短地址:

ZDApp_ProcessOSALMsg();->case ZDO_CB_MSG:   ZDApp_ProcessMsgCBs();

case NWK_addr_rsp:

{            

  ZDO_NwkIEEEAddrResp_t  *My_pAddrRsp= ZDO_ParseAddrRsp(inMsg);

  mu_addr=My_pAddrRsp->nwkAddr; //把短地址保存起来

  break;    

 }

目前已实现用IEEE地址获取休眠节点的网络地址,并进行通讯。

直接使用IEEE地址进行发送数据:

1、将某终端的IEEE地址保存至数组(与用SmartRF Flash读出的长地址顺序相反)

uint8 pDestination[] ={0x34,0xB1,0xC4,0x08,0x00,0x4B,0x12,0x00};

2、创建地址结构体并进行填充:

afAddrType_t SampleApp_IEEE_DstAddr;   //长地址发送

SampleApp_IEEE_DstAddr.addrMode = (afAddrMode_t)Addr64Bit; //长地址发送

SampleApp_IEEE_DstAddr.endPoint = SAMPLEAPP_ENDPOINT; 

osal_memcpy( &(SampleApp_IEEE_DstAddr.addr.extAddr),pDestination,8); 

3、调用AF函数对数据进行发送:

AF_DataRequest(&SampleApp_IEEE_DstAddr,&SampleApp_epDesc,SAMPLEAPP_P2P_CLUSTERID,4,data,&SampleApp_TransID,AF_DISCV_ROUTE,AF_DEFAULT_RADIUS )

PS:此方法只能用于与子节点的通讯。




已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页