EndDevice 断电后不能接收到协调器数据,都有开启NV_RESTORE
如题在开发中遇到上述情况后,只用一个协调器和一个enddevice 测试,都开启了NV_RESTORE,联网后通信正常,但终端在掉电重启后经常出现协调器再也不能发送命令给终端,看过论坛之前的帖子后根据VV的提示通过 AssocIsRFChild( uint16 shortAddr )检测发现终端已不是协调器的子设备,但两边不都是开启了NV_RESTORE么,而且频段内没有其他设备,不可能是终端加入其他设备了,为什么协调器还把终端节点删掉了,求VV大神帮忙
求大神帮忙解决一下啊,纠结了好多天了
那有没有验证过AssociateList里面还有没有这个设备。
1)节点Data Request是否正常
2)另外节点没法收到协调器的数据,协调器有没有把数据发到空中?
3)节点发送的数据,协调器是否可以收到
你可以在节点无法接收数据的时候,发送ZDApp_AnnounceNewAddress( void )出来。
If you use zstack 1.2.2, you may set RFD_RCVC_ALWAYS_ON=TRUE to test will it happen again?
谢谢VV解答
AssociateList中查过了已经没有这个设备了
1)节点的Data Request还是正常的
2)协调器应该是没有把数据发送到空中的,抓包工具不能抓取到协调器的数据包
3)节点发送的数据协调器可以收到
谢谢解答
试过你的方法了,终端加上RFD_RCVC_ALWAYS_ON=TRUE后的确没有出现协调器不能发出命令的情况,但是看到终端的Data Request都没有了,这样EndDevice设备是否就是等同于一个router设备呢?功耗会不会上升很多,毕竟用EndDevice设备就是考虑到节能的因素
So which version of zstack do you use?
Z-Stack Home 1.2.2
It seem has a bug in the maintenance of association table when parent buffed too much child message, you can try zstack 1.2.2a to test this issue or wait for VV official reply.
请使用Z-Stack Home 1.2.2a
在1.2.2里面会有一个问题,当父设备给子设备发数据的时候,如果是ZMacTransactionExpired,会把这个设备从AssociateList里面remove掉,父设备认为子设备不在了,或者更换了父设备了。但在实际的应用中,这种情况是有可能发生的,尤其是设备多,干扰多的情况下,但其实子设备还在,所以会引起误操作。
在Z-Stack Home 1.2.2a,这个部分已经删除掉了。