在实际项目中, 会有很多信息, 如设备基本信息, 协议信息, 网络配置等等, 这些信息我们可以通过 DEBUG 宏来开启或者关闭不同的 Debug 信息, 当我们需要设置模块某些参数的时候, 我们可以通过动态输入, 而不是直接在程序中写死, 大大方便了我们调试设备, 我们可以实行两种方案: 1. 串口接收 2.html 通过 socket 配置 . 由于第二种方式需要设备必须连接网线, 所以我们今天来讲解记录一下第一种人机交互方式 ------- 串口
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- #define TCLX_PLATFORM_DIAG(x) do {printf x;} while(0)
- void set(void *pbyData)
- {
- TCLX_PLATFORM_DIAG(("set function:%s\r\n",(char*)pbyData));
- }
- void reboot(void *pbyData)
- {
- TCLX_PLATFORM_DIAG(("reboot function:%s\r\n",(char*)pbyData));
- }
- void show(void *pbyData)
- {
- uint8_t byIndex = atoi(pbyData);
- switch(byIndex)
- {
- case 0:break;
- case 1:break;
- case 2:break;
- default:break;
- }
- TCLX_PLATFORM_DIAG(("show function:%s\r\n",(char*)pbyData));
- }
- typedef struct command
- {
- char *name;
- char *explain;
- void (*function)(void*);
- }command;
- void dealCommand(char *pbyData)
- {
- static command Commands[] = {
- {"show","-0:all,-1:protocol,-2:Device,-3:NetInfo",set},
- {"reboot","-0:Reboot,-1:Reboot App1,-2:Reboot App2",reboot},
- {"set","-set:did=*&;dhcp=*;mac=*.*.*.*.*.*;lip=*.*.*.*;sub=*.*.*.*;gtw=*.*.*.*;dns=*.*.*.*;",set},
- };
- if(pbyData == NULL) return;
- char byIndex = 0;
- bool bIshelp = strcmp(pbyData,"help");
- for(byIndex = 0; byIndex < (sizeof(Commands) / sizeof(command));byIndex ++)
- {
- if(bIshelp == 0)
- {
- TCLX_PLATFORM_DIAG(("-.%s:[%s]\r\n",byIndex + 1,Commands[byIndex].name,Commands[byIndex].explain));
- }
- else
- {
- if(0 == strncmp(pbyData,Commands[byIndex].name,strlen(Commands[byIndex].name)))
- {
- Commands[byIndex].function(pbyData + strlen(Commands[byIndex].name) + sizeof(':'));
- }
- }
- }
- }
以上寥寥几行代码就能将项目所需的 debug 信息输出出来, 若支持多个 App 还可以从不同的分区启动程序, 还可以将设备的配置信息通过串口解析到设备中并重启. 如 set:llip=192.168.100.101;esip1=120.192.58.188;ept1=6000;nsip1=120.192.58.188;npt1=6000;
来源: https://www.cnblogs.com/st-home/p/11734468.html