本文主要是介绍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:此方法只能用于与子节点的通讯。
这篇关于ZigBee IEEE地址说明的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!