清除NV区代码如下:
if(zgWriteStartupOptions( ZG_STARTUP_SET, ZCD_STARTOPT_DEFAULT_NETWORK_STATE )==ZSUCCESS){
HalUARTWrite(0,"clear NV success",16);
}
执行完上述代码,再执行修改PANID和信道代码失效。
修改PANID代码如下:
mypanid=(uart_rdata[1]<<8) + uart_rdata[2];
osal_memcpy(&_NIB.nwkPanId,&mypanid,sizeof(uint16));
NLME_UpdateNV(0x01);
osal_nv_write(ZCD_NV_PANID, 0, osal_nv_item_len( ZCD_NV_PANID ), &zgConfigPANID);
osal_start_timerEx( SampleApp_TaskID,SAMPLEAPP_RESET_EVT,1000 );
修改信道代码如下:
mychannel=uart_rdata[1];
if(mychannel<0x0B||mychannel>0x1A){
HalUARTWrite(0,"wrong channel",13);
}
else{
_NIB.nwkLogicalChannel = mychannel;
NLME_UpdateNV(0x01);
osal_start_timerEx( SampleApp_TaskID,
SAMPLEAPP_RESET_EVT,
1000 );
}
YiKai Chen:
你這樣修改,重新組網後就會被覆蓋了吧
Viki Shi:
清除NV再次组网后,这些信息会被覆盖
YIFEI YUAN:
清除NV后PANID和信道会变成0xFEFF和00,现在是设置协调器相同的PANID和信道才会组上网。
YIFEI YUAN:
回复 Viki Shi:
清除NV后没有指定PANID和信道就组不上网了
YIFEI YUAN:
可以加入指定PANID和信道的网络吗?
Viki Shi:
回复 YIFEI YUAN:
可以,你是终端节点清除NV后,想加入指定网络结果加不进?此网络开启permit join没有啊?
YIFEI YUAN:
回复 Viki Shi:
对呀,加不进,只是打开permit join也加不进。因为现在不知道有什么问题终端运行几天后会脱网,重启后也不会重新加回去,目前只有重新烧写hex,然后通过串口再次配置终端PANID和信道,协调器打开permit join,才会加回去。
YiKai Chen:
回复 YIFEI YUAN:
你Z-Stack 版本是?
YIFEI YUAN:
回复 YiKai Chen:
2.5.1a
YiKai Chen:
回复 YIFEI YUAN:
2.5.1a很舊了,建議你更新協議棧版本