尝试在程序运行过程中修改协调器和终端的Panid,浏览了很多网上的资料都提到一下方法可行。
pan_id = 0x1122;
_NIB.nwkPanId = pan_id;
NLME_UpdateNV(0x01);
zb_SystemReset();//这里我用SystemReset替代。
实验过程我是在协调器上组建网络成功后5秒,调用上面的代码,每次组建网络成功后我会读取_NIB.nwkPanId的值通过串口打印。
但是实际每次读取的_NIB.nwkPanId的值并没有改成我希望的值。
当-DZDAPP_CONFIG_PAN_ID = 0xFFFF时,读取的_NIB.nwkPanId的值如手册上所说每次是一个随机值。
当-DZDAPP_CONFIG_PAN_ID = 0x1234,配置为一个非0xFFFF的值时,读取的_NIB.nwkPanId就是设定的固定值。
所以我有个疑问:
在调用SystemReset前可能修改了_NIB.nwkPanId的值,但是一旦调用复位函数,系统应该像第一次上电启动一样,更具-DZDAPP_CONFIG_PAN_ID的值来确定PanID,那我上次改变的PanID不就又无效了吗?
还是说调用上面这段代码需要添加其他的预编译选项吗?
还希望有大神帮我解答一下。
lei:
我使用的协议栈版本是2.5.3的
VV:
在编译选项里面,NV_RESTORE有没有加进去。
xiaoye Lu:
回复 VV:
你好 我加入了NV_RESTORE编译项之后,配置路由器时,无法成功修改,而且路由器的无线包和协调器的无线包竟然几乎一样了,请教这个怎么回事啊,路由器没组网时不能配置?