协议栈中码进了串口配置内容,通过串口发送固定字符修改节点panid,但是当节点类型为Coordinator时,修改没问题。节点是Router时,修改完用后无法串口修改panid,但是如果先让Router入网后,串口修改可以成功,不过修改完成以后用抓包工具查看Router节点变成了Coordinate功能,请教这是怎么回事
第一张图片是路由器刚下载完程序抓包的图
第二张图是先让路由节点加入协调器的网,再通过串口修改,修改完以后发现路由和协调器的包一样了
xiaoye Lu:
TI的工作人员呢 求帮助啊
VV:
如果路由有串口的话,是可以修改的。
你是需要通过串口配置路由设备,让它加入到特定的网络吗?
你可以使能NV_INIT和NV_RESTORE
通过串口把panid信息写到zgConfigPANID,然后保存到ZCD_NV_PANID,再重启就可以了。
xiaoye Lu:
回复 VV:
是的 想通过串口修改加入所需网络。
但是我在配置过程中遇到了一下两个问题:
1.利用_NIB.nwkPanId = new_panid; NLME_UpdateNV(0x01); osal_start_timerEx(SerialApp_TaskID,Serial_SYS_RESET,2000);
配置协调器时,重启,配置成功;但是配置路由器时都不重启,感觉最后一条指令不执行。
2.让路由器先加入协调器的网络中,再用上面的方法配置,这时候路由器重启,配置成功,但是给协调器发送消息时,协调器无法收到,而且重新上电后,就算周围没有网络,依然自动默认为路由器
VV:
回复 xiaoye Lu:
你可以按照下面的步骤试下,
1, 使能,HOLD_AUTO_START,目的是设备在上电处于hold状态,不会主动发起加网,等待串口接收命令
2,串口发送命令,把收到的PANID值赋值给zgConfigPANID
3,在发送串口命令调用ZDOInitDevice( 0),开始搜网,这样节点就可以加入到zgConfigPANID配置的PANID网络中去了。
xiaoye Lu:
回复 VV:
先谢谢你的回答。
我使能了HOLD_AUTO_START,设备是等待入网,但是这时候也无法收到消息,我的板子没有加入按钮,因为打算在高空使用,因此不适用按键式操作,有没有办法直接用串口对router节点进行配置,不入网的情况下?