做的项目中的终端设备需要移动,想要在设备移动的过程中,移出一个网络的范围移入另一个网络范围后,可以自动加入的另一个网络中,该如何实现呢?
非常感谢!
Susan Yang:
不要预编译NV_RESTORE选项
Viki Shi:
zigbee节点未经设置的话,本身就会搜索周围网络加入。前提是这些网络都允许加入节点
Zhenxing Zhang1:
回复 Susan Yang:
没有预编译NV_RESTORE选项,想要终端设备在离开一个网络的范围进入另一个网络中后自动切换到该网络中
Zhenxing Zhang1:
回复 Viki Shi:
两个协调器和一个终端,设置在同一频段,俩协调器分别不同的PAN ID,打开两个协调器和终端,当终端加入到其中一个协调器的网络中后,将该协调器断电后,终端无法在不重启的情况下自动加入到另一个协调器的网络中,重新给断电的协调器上电后,终端后自动加入上电后的协调器中。
也就是说,终端只能自动加入到原来加入后断开的网络中,不能自动加入的新的网络网络中。
请问这种问题可以解决吗?
非常感谢!
VV:
回复 Zhenxing Zhang1:
节点在加入一个网络以后,由于某些原因,父节点掉电或者移动到原网络覆盖的范围外,这样就会导致断线,断线以后会自动的去搜索网络,
这个时候你可以开启一个定时器,如果在定时器事件触发时,节点还处于搜索网络状态,那么可以开始一次新的入网操作。
1)如果是开启了NV_RESTORE的,那么需要擦除NV里面原先网络的信息,然后重新加网
2)如果没有开启NV_RESTORE的,那么直接调用复位函数,程序重新启动就可以了。
Zhenxing Zhang1:
回复 VV:
谢谢VV,
我试过在断线后调用复位函数是可以的,但是我的设备上还有其他外设,不想其他外设也复位,只希望复位设备的网络设置,从而达到加入新网络的目的。
经过测试,我发现当设备掉线后会进入ZDApp.c中的ZDApp_ProcessOSALMsg()的ZDO_NWK_JOIN_REQ选项中执行代码,因此我在该选项下去掉原先代码,加上ZDOInitDevice(0);或ZDApp_Init(ZDAppTaskID);,但是都没有到达掉线后重新加入新的网络的效果,在此处加上系统复位函数是可以复位后加入新网络的,但是这不是我想要的结果。
还有您说的开始新的入网操作是调用的哪个函数呢?
非常期待您的回复,谢谢!
fdar jc:
回复 Zhenxing Zhang1:
嗨!Zhenxing Zhang1:
以上问题有解决吗?有时间可以讨论下。我的QQ:289113226
li Gong2:
回复 Zhenxing Zhang1:
挺有意思的一个问题,最近我也在研究。
其实说到底就是zigbee协议是否能像2/3/4G无线通信协议一样支持漫游和切换。
关注中。
fdar jc:
回复 li Gong2:
嗨!li Gong2 你是不是说上面的问题,怎么个研究?有结果了吗。
li Gong2:
回复 fdar jc:
没有,我昨天也发了个帖子来求助,大家一起讨论