⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 serialcommand.c

📁 第一届华中科技大学智能车led源码
💻 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 + -