[原创] NwkAddrReq()函数使用浅谈

450803313   2014-8-20 16:25 楼主
留个帖子方便以后自己查找。前段时间编过关于调用ZDP_IEEEAddrReq()的串口发送父设备的扩展地址,当然就是经典的ZDP_IEEEAddrReq(0x0000,0,0,0)喽,后来也成功了。然后再这个API库里面(就在此函数定义的ZDProfile.c中),又看到该函数旁边有个函数叫ZDP_NwkAddrReq(A,B,C,D),大体就是ZDP_IEEEAddrReq(a,B,C,D)的反推看起来。然后我就试着照猫画虎来用已知设备的扩展地址(MAC)来得到,然后我就改了改:


注册NWK_addr_rsp;


使用ZDP_NwkAddrReq(A,B,C,D),A的输入是重点,函数描述指定是一个指针,而IEEE地址高达64位,所以做了一个数组指针MAC_data(不是指针数组..)


正序排列的IEEE地址


触动事件ZDO_CB_MSG后进入ZDOMsg中


事件ZDO_CB_MSG的处理函数(向串口发送数据)

当我轻而易举的完成上述步骤后,实验结果一如既往的没有让我失望,串口接收区干干净净,什么也没有。然后找问题,通过万能的LED小灯,发现程序是无法进入“ZDOMsg的处理函数”,就是"事件ZDO_CB_MSG"好像根本就没有被触发,即本节点根本没有收到正确远程节点的返回信息下图(两节点交流图)
我俩的交流过程.PNG

后来问题锁定在ZDP_NwkAddrReq( MAC_data,0,0,0 ) ; 后来一百度,查论坛社区,都有讲该函数如何使用,通篇一律翻译了下TI里面的函数说明...
后来将MAC_data数据进行由低位到高位排列即:
uint8 MAC_data[8]={0xec,0x52,0xae,0x04,0x00,0x4b,0x12,0x00}; //由低位到高位
//uint8 MAC_data[8]={0x00,0x12,0x4b,0x00,0x04,0xae,0x52,0xec};//原先的,实际IEEE地址为 0x 00 12 4b 00 04 ae 52 ec

再尝试发现成功了,灯NM闪起来了,串口开始发送网络地址信息(意味着"事件ZDO_CB_MSG" 得到指派);

奇怪之处:下次再考程序,发现时常又无法进入"事件ZDO_CB_MSG"


回复评论 (7)

图片误删,见下:
  • MAC_data.PNG
  • ZDOMsg.PNG
  • ZDP_NwkAddrReq().PNG
  • 事件ZDO_CB_MSG.PNG
  • 注册.PNG
点赞  2014-8-20 16:28
LZ我改了一下 也还不行啊!没发生响应哦!

        case AF_DATA_CONFIRM_CMD:
和远程节点这里也有一定关系吧
点赞  2014-8-22 10:12
引用: 450803313 发表于 2014-8-20 16:28
图片误删,见下:

您好,请问能否分享一下关于绑定应用的一些经验?
RTEMS
点赞  2014-10-16 22:53
讲解真详细,赞!
51嵌入式,嵌入式开发的家园!
点赞  2014-10-17 07:17
引用: 54chenjq 发表于 2014-10-16 22:53
您好,请问能否分享一下关于绑定应用的一些经验?
SORRY,大四后来一直忙着各类杂事,没再上过论坛。。。关于绑定我的经验还不够足。推荐你看看其他技术帖,或者问问论坛的水哥wateras1,他蛮懂得理解挺深,也许可以帮助你。



点赞  2015-2-7 00:29
引用: tanguicaicai 发表于 2014-8-22 10:12
LZ我改了一下 也还不行啊!没发生响应哦!

        case AF_DATA_CONFIRM_CMD:
和远程节点这里也有一定关系吧
关于 case AF_DATA_CONFIRM_CMD,请说说你的意见。



点赞  2015-2-7 00:33
引用: 450803313 发表于 2015-2-7 00:33
关于 case AF_DATA_CONFIRM_CMD,请说说你的意见。

ZDO的消息发送,AF_DATA_CONFIRM_CMD没啥用。
点赞  2015-5-8 23:21
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复