在使用zstack协议栈(版本zstack mesh 1.0.0)实现Addr64Bit通信时,协调器和终端采用直连方式(协调器COO <–> 终端END)
在COO中调用Addr64Bit方式,发送到END,成功,但是在NED 中向COO采用Addr64Bit发送却失败(AF_DataRequest 返回值是faild)
请问是什么宏设置不对,还是什么原因,请各位朋友指导一下,谢谢!
PS:我有一份2.1.4 的版本参考,在app层可以实现双方互相发送,直接移植到了mesh 版本下,却只能实现单相,故怀疑是宏设置问题
Susan Yang:
您现在为何要使用长地址进行通信呢?
长地址模式发送,在底层页是通过长地址找到短地址,然后通过短地址把数据发送出去。也就是说ZIgBee网络里面,真正在空中通信的数据报文永远是短地址。
所以一般不建议您直接使用长地址进行通信。
zhen zhang14:
回复 Susan Yang:
我也不想啊,客户要求,都快搞疯了,麻烦帮忙看一下最新zstack mesh 1.0.0 要实现,是否需要设置那个宏参数。手上有一份2.3.0-1.40 的参考例程是可以的,app层已经一字不差移植了,只能实现单边(COO->END)
我不想用文件对比整个工程文件啊
user1999055:
回复 zhen zhang14:
使用MAC地址进行通信是不能够经过路由的。
zhen zhang14:
回复 user1999055:
这个我知道,我是直连,终端直接连协调器,协调器与终端通过MAC地址通信,在2.3.0-1.4.0 下是可以的,但是用mesh 1.0.0 就不行(2.5.1a也不行)
ps:均是在官方协议栈GenericApp 例程下进行的移植
user1999055:
回复 zhen zhang14:
Mesh1.0.0是可以的,你自己再检查下代码,另外,不建议使用MAC地址通信。
Aries Lord:
回复 zhen zhang14:
用ZDP_NwkAddrReq把长地址换算成短地址,再用短地址来通信。