TI中文支持网
TI专业的中文技术问题搜集分享网站

协调器无法收到终端反馈的信息

HA的系统,协调器,路由器,终端都打开了NV_RESTORE,组网完成之后通讯都正常,如果把协调器断电,通过sniffer可以看到终端都加入到路由器的网络,协调器重新上电之后各个终端无法与协调器通讯,因为各个终端还是在路由器的网络里面,请问如果让终端重新加入协调器的网络?或者让终端无法加进路由器的网络也可以?总之如何解决协调器重启之后无法和终端通讯的问题?谢谢!

junxing xia:

补充一下,协调器发送的指令都是用的AF_DataRequest使用afAddr64Bit地址模式。咨询一下如果采用16bit地址的模式,这个问题是否可以解决?

加入可以的话如果通过已经知道的64bit的获得16bit?

junxing xia:

回复 junxing xia:

更换了16地址发送信息也不行,到底是什么原因呢?

junxing xia:

回复 junxing xia:

当终端设备加到路由器以后,协调器上电的时候认为之前的终端设备还是自己的子设备,所以发数据的时候直接发出去了,这个数据时buffer在协调器的底层,等待自己的子设备通过data request来获取。原因是这个,可是如何解决呢?有哪位大侠指点一下迷津吧。

zhongwei xu1:

回复 junxing xia:

这个问题我之前也问过,V大神也回答了,和你说的差不多,但是没有提出怎么解决,这个问题很常见了,

我认为除非把不是自己的子节点的关联表方面删除了应该就可以了,没有论证,参考下!

VV:

回复 zhongwei xu1:

当协调器给end device发数据不成功的时候,可以判断该节点是否是子设备byte AssocIsRFChild( uint16 shortAddr ),

然后把这个子设备删除掉byte AssocRemove( byte *extAddr )

junxing xia:

回复 VV:

已经按照这个方案试过了,发现和原来不同的地方是协调器重启之后,终端把信息发给路由器,路由器把信息再发给协调器,但是协调器还是没有把消息发给终端,此时可以看到终端有向路由器请求数据的log.请帮忙再看一下,谢谢!

现在终于可以看到路由器实际功能的log,还是很感谢的!

VV:

回复 junxing xia:

你把协调器关联表中该节点的信息删除掉以后,给这个节点发数据还不行吗?

junxing xia:

回复 VV:

是的,还是不行!请帮忙在看看。

VV:

回复 junxing xia:

nwkNeighborFind( uint16 nwkAddr, uint16 panID );

nwkNeighborRemove( uint16 NeighborAddress, uint16 PanId );

如果这个节点在邻居表里面的话,也把他清楚掉

junxing xia:

回复 VV:

试了上面两个函数,还是不行,请再帮忙看看。谢谢!

赞(0)
未经允许不得转载:TI中文支持网 » 协调器无法收到终端反馈的信息
分享到: 更多 (0)