zigbee zstack 通过串口修改panid channel

    当节点加入一个网络时会自动分配一个短地址,但是当节点重启后,这个节点短地址就会改变,如果不想改变这个短地址,直接恢复上一次的连接状态 这就需要设置NV_RESTORE宏来进行处理。NV_RESTORE保存的内容主要有网络层数据库NIB、设备关联表、绑定表、路由表等。
当增加此宏定义的时候,就可以通过串口动态的修改zigbee的PANID、CHANNEL。(在网上找到多种方法,如下方法验证可行)
uint16 panid;
_NIB.nwkPanId = panid;
NLME_UpdateNV(0x01);//更新到nv


uint8 channel;
_NIB.nwkLogicalChannel= channel;
NLME_UpdateNV(0x01);//更新到nv
void Get_PanId(void)
{
	uint8 char_buf[20]=0;//2017.08.23
	uint8 Cmd_Buf[3]={0};
	zb_GetDeviceInfo(ZB_INFO_PAN_ID,&Cmd_Buf);
	char_buf[0]=((Cmd_Buf[1]>>4)+'0');
	char_buf[1]=((Cmd_Buf[1]&0xf)+'0');
	char_buf[2]=((Cmd_Buf[0]>>4)+'0');
	char_buf[3]=((Cmd_Buf[0]&0x0f)+'0');
	HalUARTWrite(SERIAL_APP_PORT,"#PANID:",7);
	HalUARTWrite(SERIAL_APP_PORT,(uint8*)char_buf,strlen(char_buf));
}

void Get_Channel(void)
{	
	uint8 char_buf[20]=0;//2017.08.23
	uint8 Cmd_Buf[3]={0};
	zb_GetDeviceInfo(ZB_INFO_CHANNEL,&Cmd_Buf);
	char_buf[0]=(Cmd_Buf[0]>>4);
	char_buf[1]=(Cmd_Buf[0]&0xf);
	if(char_buf[0]<10){
		char_buf[0]=char_buf[0]+'0';
	}else{
		char_buf[0]=char_buf[0]+'a';
		}
	if(char_buf[1]<10){
		char_buf[1]=char_buf[1]+'0';
	}else{
		char_buf[1]=char_buf[1]+'a';
		}
	HalUARTWrite(SERIAL_APP_PORT,"#CHANNEL:",9);
	HalUARTWrite(SERIAL_APP_PORT,(uint8*)char_buf,strlen(char_buf));


void zb_GetDeviceInfo ( uint8 param, void *pValue )函数在Sapi.h
void NV_PanId(void)
{
	uint8 char_buf[20]=0;//2017.08.23
	uint16 tem_panid=0;//
	tem_panid=BUILD_UINT16(BUILD_UINT8(SerialApp_TxBuf[11],SerialApp_TxBuf[12]),
			       BUILD_UINT8(SerialApp_TxBuf[9],SerialApp_TxBuf[10]));
	_NIB.nwkPanId = tem_panid;
	NLME_UpdateNV(0x01);
	sprintf(char_buf, "#P IS SET:%x\r\n",tem_panid);
	HalUARTWrite(SERIAL_APP_PORT,(uint8*)char_buf,strlen(char_buf));
	}

void NV_Channel(void)
{
	uint8 char_buf[20]=0;//2017.08.23
	uint8  tem_channel=0;//
	tem_channel=BUILD_UINT8(SerialApp_TxBuf[11],SerialApp_TxBuf[12]);
	_NIB.nwkLogicalChannel=tem_channel;
	NLME_UpdateNV(0x01);
	sprintf(char_buf, "#C IS SET:%x\r\n",tem_channel);
	HalUARTWrite(SERIAL_APP_PORT,(uint8*)char_buf,strlen(char_buf));
}
以上基本就是从串口接收到数据写入nv和从nv获取数据

猜你喜欢

转载自blog.csdn.net/wwy__/article/details/79474399
今日推荐