📄 cmdproc.c
字号:
#include<ctype.h>
#include<string.h>
#include "tdp.h"
/* Define prompt of Help */
static pdata char helptext[]=
"\r\n"
"HELP:\r\n"
"STCLK hhmmss -- Set Clock Time\r\n"
"RDCLK -- Display Clock Time\r\n"
"SCCLK ON|OFF -- Display CLock Time Every Second\r\n"
"STALM hhmm -- Set Alarm\r\n"
"RDALM -- Display Alarm Time\r\n"
"CLALM -- Clear Alarm Time\r\n";
enum{
CID_SET_CLK,
CID_READ_CLK,
CID_SCAN_CLK,
CID_SET_ALM,
CID_READ_ALM,
CID_CLR_ALM,
CID_LAST
};
struct cmd_st {
const char *cmdstr;
unsigned char id;
};
static pdata struct cmd_st cmd_tbl [] = {
{ "STCLK", CID_SET_CLK },
{ "RDCLK", CID_READ_CLK },
{ "SCCLK", CID_SCAN_CLK },
{ "STALM", CID_SET_ALM },
{ "RDALM", CID_READ_ALM },
{ "CLALM", CID_CLR_ALM },
};
#define CMD_TBL_LEN (sizeof (cmd_tbl) / sizeof(cmd_tbl[0]))
static unsigned char cmdid_search(char *cmdstr) {
struct cmd_st *ctp;
for (ctp = cmd_tbl; ctp <&cmd_tbl[CMD_TBL_LEN]; ctp++) {
if(strcmp(ctp->cmdstr,cmdstr) ==0)
return(ctp->id);
}
return(CID_LAST);
}
char *strupr(char *src) {
char *s;
for (s = src; *s != '\0'; s++)
*s = toupper(*s);
return(src);
}
/* Command Processing */
void cmd_proc(const char *cmd) {
xdata char cmdstr_buf[1 + MAX_CMD_LEN];
xdata char argstr_buf[1 + MAX_CMD_LEN];
char *argsep;
unsigned char id;
strncpy(cmdstr_buf, cmd, sizeof(cmdstr_buf) - 1);
cmdstr_buf[sizeof(cmdstr_buf) - 1] = '\0';
strupr(cmdstr_buf);
argsep = strchr(cmdstr_buf, ' ');
if(argsep == NULL) {
argstr_buf[0] = '\0';
}
else {
strcpy(argstr_buf,argsep + 1);
*argsep = '\0';
}
id = cmdid_search(cmdstr_buf);
switch (id) {
unsigned long tm;
case CID_SET_CLK:
if(strtotm(&tm, argstr_buf) != 0)
goto CMDERR;
clock_set(tm * 100);
break;
case CID_READ_CLK:
clock_out_time();
break;
case CID_SCAN_CLK:
if(strcmp(argstr_buf,"ON") ==0 )
clock_scan(1);
else if (strcmp(argstr_buf,"OFF") == 0)
clock_scan(0);
else
goto CMDERR;
break;
case CID_SET_ALM:
strcat(argstr_buf, "00");
if(strtotm(&tm,argstr_buf) != 0)
goto CMDERR;
alarm_set(tm / 60);
break;
case CID_READ_ALM:
alarm_out_time();
break;
case CID_CLR_ALM:
alarm_clr();
break;
case CID_LAST:
CMDERR:
com_puts(helptext);
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -