应用场景:现场协调器坏了,更换协调器,只改panid、加密信息、信道等是不行的
因为之前坏掉的协调器已经创建了一个网络,即使旧协调器坏了,网络还在,新协调器如果开机前没有之前的网络设备处于开启状态,它可以创建网络,但是开机前如果有开启的(这个是更正常的,不可能把所有子设备/终端都重启)新协调器的panid会加一,这样就无法通信了;类似原因https://bbs.csdn.net/topics/360182803
不能更换协调器的一个原因http://bbs.eeworld.com.cn/forum.php?mod=viewthread&tid=1061986
解决方法是任意一个带有旧网络信息的设备重新/擦除烧写一下程序;或者用 zgWriteStartupOptions(ZG_STARTUP_SET, ZCD_STARTOPT_DEFAULT_NETWORK_STATE); SystemReset()(参考https://www.docin.com/p-1124248179.html)函数清掉子设备NV掉电保存的旧网络信息;或者若是已经编译了NV_RESTORE,可以尝试使用FLASH工具把旧协调器hex文件读出来,烧入新的协调器中
新协调器加入已组好网的网络中http://bbs.eeworld.com.cn/forum.php?mod=viewthread&tid=447450
我理解的原理是清掉一个后,这个设备和新协调器建立连接,其它设备再通过这个设备和新协调器连接
在使能NV_RESTORE的情况,协调器断电重新上电以后,和网络里面其他的设备再次通信是完全没有问题的。
需要NV_RESTORE的原因:http://blog.sina.com.cn/s/blog_a21b99bf0101blq6.html
如果对协调器重新下载了程序,或者更换了新的协调器,还要和原来的网络通信的话,那么新上电的协调器就需要把之前的网络参数都恢复出来,比方说channel,panid,ExtendPANID,security key等等。这些信息应该是从原先的协调器上获得的,保存下来的。
原理参考http://www.ghostyu.com/kb/31
一种借助扩展panid的方法:https://blog.csdn.net/xingqingly/article/details/47207597
如图不是旧协调器坏掉,更换新新协调器烧写程序时将erase flash去掉勾选即可如下图
注意将新协调器烧录相同hex程序后,仍然需要将终端重启一遍,否则协调器只能收不能发