首页 > 其他 > 详细

(一)技巧------ 人机交互

时间:2019-10-24 20:54:01      阅读:101      评论:0      收藏:0      [点我收藏+]

  在实际项目中,会有很多信息,如设备基本信息,协议信息,网络配置等等,这些信息我们可以通过DEBUG宏来开启或者关闭不同的Debug信息,当我们需要设置模块某些参数的时候,我们可以通过动态输入,而不是直接在程序中写死,大大方便了我们调试设备,我们可以实行两种方案:1.串口接收 2.HTML通过socket配置 。由于第二种方式需要设备必须连接网线,所以我们今天来讲解记录一下第一种人机交互方式-------串口

 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <stdlib.h> 
 4  
 5 #define TCLX_PLATFORM_DIAG(x) do {printf x;} while(0)
 6 
 7 void set(void *pbyData)
 8 {
 9     TCLX_PLATFORM_DIAG(("set function:%s\r\n",(char*)pbyData));
10 }
11 void reboot(void *pbyData)
12 {
13     TCLX_PLATFORM_DIAG(("reboot function:%s\r\n",(char*)pbyData));
14 }
15 void show(void *pbyData)
16 {
17     uint8_t byIndex = atoi(pbyData);
18     switch(byIndex)
19     {
20         case 0:break;
21         case 1:break;
22         case 2:break;
23         default:break;
24     }
25     TCLX_PLATFORM_DIAG(("show function:%s\r\n",(char*)pbyData));
26 }
27 
28 typedef struct command
29 {
30     char *name;
31     char *explain;
32     void (*function)(void*);
33 
34 }command; 
35 
36 void dealCommand(char *pbyData)
37 {
38      static command Commands[] = {
39     {"show","-0:all,-1:protocol,-2:Device,-3:NetInfo",set},
40     {"reboot","-0:Reboot,-1:Reboot App1,-2:Reboot App2",reboot},
41     {"set","-set:did=*&;dhcp=*;mac=*.*.*.*.*.*;lip=*.*.*.*;sub=*.*.*.*;gtw=*.*.*.*;dns=*.*.*.*;",set},
42     };
43 
44     if(pbyData == NULL) return; 
45     char byIndex = 0;
46     bool bIshelp = strcmp(pbyData,"help");
47     for(byIndex = 0; byIndex < (sizeof(Commands) / sizeof(command));byIndex ++)
48     {
49         if(bIshelp == 0)
50         {
51             TCLX_PLATFORM_DIAG(("%2d.%s:[%s]\r\n",byIndex + 1,Commands[byIndex].name,Commands[byIndex].explain));
52         }
53         else
54         {
55             if(0 == strncmp(pbyData,Commands[byIndex].name,strlen(Commands[byIndex].name)))
56             {
57                 Commands[byIndex].function(pbyData + strlen(Commands[byIndex].name) + sizeof(:));
58             }        
59         }    
60 
61     }
62 
63 }

 

以上寥寥几行代码就能将项目所需的debug信息输出出来,若支持多个APP还可以从不同的分区启动程序,还可以将设备的配置信息通过串口解析到设备中并重启。如set:llip=192.168.100.101;esip1=120.192.58.188;ept1=6000;nsip1=120.192.58.188;npt1=6000; set函数就通过设备运行初始化的时候,将配置信息读取到全局变量,然后

通过strstr() 将配置信息分割,从而修改全局变量的值,然后将配置信息都处理完成后,写入flash,并重启设备。

void set (void *pdata)
{
    sprintf(s_abyTmepStr,"nsip%d=",bySocketIndex + 1);
            if(((pStrStart = strstr(pData,s_abyTmepStr)) != NULL))
            {
                sscanf(pStrStart + strlen(s_abyTmepStr),"%d.%d.%d.%d",abyTemp,abyTemp + 1,abyTemp + 2,abyTemp + 3);
                s_tSerInfo.m_adwIp[NET_TRANSMIT_NB][bySocketIndex] = (abyTemp[0] << 24) + (abyTemp[1] << 16) + (abyTemp[2] << 8) + abyTemp[3];
            }
}

 

(一)技巧------ 人机交互

原文:https://www.cnblogs.com/st-home/p/11734468.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!