📄 cmdexc.c
字号:
#include "..\inc\include.h"
#include "..\inc\cmdexc.h"
#include <string.h>
#define cmdCount 7
char prompt='#';
STATUS GETCMD(char *);
typedef struct __COMMAND
{
char strCMD[255];
STATUS staCMD;
}CMD;
typedef struct __CMDTABLE
{
char strCMD[255];
CMDFUN pFUN;
}CMDEXECTABLE;
CMD myCMD={"",1};
CMDEXECTABLE tableCMD[cmdCount]=
{
{"reboot",REBOOT},
{"hello",HELLO},
{"start",START},
{"sysinfo",SYSINFO},//collect system info
{"data",DATA},
{"time",TIME},
{"ver",VERSION}
};
STATUS cmdEXEC(char *cmd)
{
char tempcmd[32]="";//stor the command(coresponding to the first word)
char *parameter=0;
U8 i=0;
if (!GETCMD(cmd))
{
return PEND;
}//last command is pending
else
{
while ((myCMD.strCMD[i]!=' ')&&(myCMD.strCMD[i])&&(i<32))
{
tempcmd[i]= myCMD.strCMD[i];
i++;
}
//CMD.strCMD[i] should '\0' or space here
if (myCMD.strCMD[i]!=' '&&myCMD.strCMD[i]!='\0')
{
Uart_Printf("Error command! Command too long.\r\n");
}
else
{
while (myCMD.strCMD[i++]==' ');
if (myCMD.strCMD[i]) //have parameters
parameter=&(myCMD.strCMD[i]);
for (i=0;i<cmdCount;i++)
{
if(strcmp(tempcmd,tableCMD[i].strCMD)==0)
{
//start do command here;
tableCMD[i].pFUN(parameter);
}
else
{
Uart_Printf("Error command!\r\n");
}
}
}
myCMD.staCMD=EXEC;
Uart_Printf("%c",prompt);
return EXEC;
}
}
STATUS GETCMD(char *str)
{
if (!myCMD.staCMD)
{
return PEND;
}
else
{
myCMD.staCMD=PEND;
strcpy(myCMD.strCMD,str);
//myCMD.staCMD=EXEC;
return EXEC;
}
}
void HELLO(char *paramet)
{
char param[223];
strcpy(param,paramet);
myCMD.staCMD=EXEC;
Uart_Printf("Hello ARM! %s\r\n",paramet);
}
void START(char *paramet)
{
char param[223];
strcpy(param,paramet);
myCMD.staCMD=EXEC;
Uart_Printf("Start ARM! %s\r\n",paramet);
}
void REBOOT(char *paramet)
{
char param[223];
strcpy(param,paramet);
myCMD.staCMD=EXEC;
if(param[0])
Uart_Printf("Error parameter!\r\n");
REBOOT_SYSTEM();
}
void SYSINFO(char*p)
{
char param[223];
strcpy(param,p);
myCMD.staCMD=EXEC;
}
void DATA(char*p)
{
char param[223];
strcpy(param,p);
myCMD.staCMD=EXEC;
}
void TIME(char*p)
{
char param[223];
strcpy(param,p);
myCMD.staCMD=EXEC;
}
void VERSION(char*p)
{
char param[223];
strcpy(param,p);
myCMD.staCMD=EXEC;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -