(一)技巧—— 人機交互

  • 2019 年 10 月 24 日
  • 筆記

  在實際項目中,會有很多資訊,如設備基本資訊,協議資訊,網路配置等等,這些資訊我們可以通過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:%srn",(char*)pbyData));  10 }  11 void reboot(void *pbyData)  12 {  13     TCLX_PLATFORM_DIAG(("reboot function:%srn",(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:%srn",(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]rn",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;