📄 serialcommand.c
字号:
//*************************************************************************
//* *
//* ********************执行串口命令*********************** *
//* *
//*************************************************************************
#include "includes.h"
#define NO_COMMAND 0xFF
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
unsigned char uc_RunFlag=FALSE; //运行命令标志,TURE时表示可以运行命令
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
COMMAND st_Command1,st_Command2; //命令缓冲区
COMMAND *pst_RunCommand=&st_Command1; //指向当前可运行命令缓冲区
COMMAND *pst_GetCommand=&st_Command2; //指向当前接收命令缓冲区
COMMAND *pst_CommandTemp=&st_Command1; //指针交换中间变量
//*************************************************************************
//* *********************显示提示信息********************** *
//*************************************************************************
void vSerialIntroduce(void)
{
printp("Type In Your Command\n");
printp("(Type H For Help)\n");
printp("Number 0~7--Light the LED\n");
}
//*************************************************************************
//* *********************获取命令字符串******************** *
//*************************************************************************
void vGetString(unsigned char ucChar)
{
if(ucChar=='\n')
{
if(pst_GetCommand->ucCommandLen>0)
{
pst_RunCommand=pst_GetCommand;
pst_GetCommand=pst_CommandTemp;
pst_CommandTemp=pst_RunCommand;
pst_GetCommand->ucCommandLen=0;
uc_RunFlag=TRUE;
}
else
{
}
}
else
{
if(pst_GetCommand->ucCommandLen>=(COMMAND_LENGTH-3))
{
pst_GetCommand->ucCommandLen=0;
}
else
{
pst_GetCommand->ucaCommand[pst_GetCommand->ucCommandLen++]=ucChar;
}
}
}
//*************************************************************************
//* ***********************搜索命令************************ *
//*************************************************************************
unsigned char ucSearchCommand(unsigned char ucChar)
{
return ucChar;
}
//*************************************************************************
//* *********************执行串口命令********************** *
//*************************************************************************
unsigned char ucGetCommand(void)
{
unsigned char ucCount;
unsigned char ucCommandLen;
ucCommandLen=pst_RunCommand->ucCommandLen;
printp(">");
for(ucCount=0;ucCount<ucCommandLen;ucCount++)
{
printp("%c ",pst_RunCommand->ucaCommand[ucCount]);
}
printp("\n");
if(ucCommandLen==1)
{
return ucSearchCommand(*pst_RunCommand->ucaCommand);
}
else
{
}
return NO_COMMAND;
}
//*************************************************************************
//* *********************执行串口命令********************** *
//*************************************************************************
void vRunCommand(void)
{
if(uc_RunFlag==FALSE)
return;
else
uc_RunFlag=FALSE;
switch(ucGetCommand())
{
case 'h':vSerialIntroduce();PORTB=0x00;break;
case '0':PORTB=0xFE;break;
case '1':PORTB=0xFD;break;
case '2':PORTB=0xFB;break;
case '3':PORTB=0xF7;break;
case '4':PORTB=0xEF;break;
case '5':PORTB=0xDF;break;
case '6':PORTB=0xBF;break;
case '7':PORTB=0x7F;break;
default:printp("Command Error!\n");PORTB=0x55;break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -