ZigBee编译NV_RESTORE后,联网问题
时间:10-02
整理:3721RD
点击:
都进行NV_RESTORE,初始状态一个协调器,一个路由,三个终端1,2,3,连接情况是路由连接到协调器,终端1,2连接到路由,终端3连接到协调器,三个设备可以接收到协调器的控制命令并执行了,协调器掉电重启后,终端1,2,3连接到路由上,然后协调器给三个终端发送控制指令,终端1,2可以通信并执行动作,终端3就不可以接收指令了,这是为什么.试验好几次了
原因是因为对于终端Coordinator来说,在重启上电以后认为E3还是他的子设备,所以在发送数据的时候,仍然把数据buffer在底层,等待E3发送data request来取数据。但是你E3已经更换了父设备,而且更换父设备的时候Coordinator也不知道,所以为什么Coordinator发送给E3的数据,没办法收到了。
请问你们使用的协议栈版本是哪个?
如果在高版本的协议栈里面,Coordinator收到E3发过来的数据,并且通过其他的路由作为父设备发出来的,那么Coordinator就知道E3换父设备了,然后把E3从子设备列表里面清楚,下一次在发数据的时候,就不会把数据一直buffer在底层了,直接通过路由发现去寻找这个节点了。
另外可以在Coordinator里面设置,如果发送数据几次都没有成功或者没有回复,可以把子设备信息从关联表里面移除。void NLME_RemoveChild( uint8* extAddr, uint8 dealloc )