zigbee的参数比较多例如panid、channel等参数需要配置,第一种是通过在代码的配置文件里写好,第二种就是通过串口发送命令实现参数配置,类似玉AT指令。然后从网上参考了他人的例子,以及自己实际情况修改。上篇**是实现的是将串口数据提取出来保存到nv数据库。接下来实现命令方式。
首先定义一个结构体,其作用是包含一个命令的信息
typedef struct {
char const *cmd_name;//命令名称
char max_args;//最大参数数目
void (*handle)(void * cmd_arg);//命令回调函数
//char *help;//帮助信息(根据需要添加)
}cmd_list_struct;
再定义一个结构体,其作用是将接收到的命令解析出来存入的地方
typedef struct{
char processed_buf[CMD_BUF_LEN];//储存加工后的命令
uint8 cmd_arg[ARG_NUM];//保存命令的参数
}cmd_analyze_struct;
结构体定义
cmd_list_struct cmd_list[]={
{"panid",0,Panid_get},
{"cpanid",1,Panid_changle},
{"channel",0,Channel_get},
{"cchannel",1,Channel_changel},
{"rset",0,rset},
};
cmd_analyze_struct cmd_analyze;
char cmd_arg_analyze(char *rec_buf,int len);//将接收到数据做处理,提取出命令及参数
void Cmd_Analyze(void);//匹配命令,如果是该命令,将调用其回调函数 void Panid_get(void *cmd_arg); void Panid_changle(void *cmd_arg); void Channel_get(void *cmd_arg); void Channel_changel(void *cmd_arg); void rset(void *cmd_arg);
|