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

📄 hyperterminal.lst

📁 超级终端的proteus仿真keil与proteus联调程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 157   4                                      SerialSendByte(0x08);
 158   4                              }
 159   3                              SerialBuffer[CursorPosion] = '\0';
 160   3                              break;
 161   3                      case '\r':
 162   3                      case '\n':
 163   3                      case '\0':
 164   3                              SerialSendByte('\r');
 165   3                              SerialSendByte('\n');
 166   3                              ExecCommandFlag = 1;
 167   3                              break;
 168   3                      case '\t':
 169   3                              break;
 170   3                      default:
 171   3                              if(CursorPosion < MAX_SERIAL_BUFFER_SIZE)
 172   3                              {
 173   4                                      SerialBuffer[CursorPosion] = SbufTemp;
 174   4                                      SerialSendByte(SbufTemp);
 175   4                                      CursorPosion++;
 176   4                              }
 177   3                              else
 178   3                              {
 179   4                                      CursorPosion = 0;
C51 COMPILER V7.09   HYPERTERMINAL                                                         01/03/2007 02:19:15 PAGE 4   

 180   4                                      memset(&SerialBuffer[0],'\0',MAX_SERIAL_BUFFER_SIZE);
 181   4                                      SerialSendStr("\r\n Warnning:Your command string is too long!\r\n\r\n");
 182   4                                      SerialSendStr(&PromptBuffer[0]);
 183   4                              }
 184   3                              break;
 185   3                      }
 186   2              }
 187   1      }
 188          
 189          void ParseArgs(char *argstr,char *argc_p,char **argv, char **resid)
 190          {
 191   1              char argc = 0;
 192   1              char c;
 193   1              PARSESTATE stackedState,lastState = PS_WHITESPACE;
 194   1      
 195   1              while ((c = *argstr) != 0)
 196   1              {
 197   2                      PARSESTATE newState;
 198   2      
 199   2                      if (c == ';' && lastState != PS_STRING && lastState != PS_ESCAPE)
 200   2                              break;
 201   2      
 202   2                      if (lastState == PS_ESCAPE)
 203   2                      {
 204   3                              newState = stackedState;
 205   3                      }
 206   2                      else if (lastState == PS_STRING)
 207   2                      {
 208   3                              if (c == '"')
 209   3                              {
 210   4                                      newState = PS_WHITESPACE;
 211   4                                      *argstr = 0;
 212   4                              }
 213   3                              else 
 214   3                              {
 215   4                                      newState = PS_STRING;
 216   4                              }
 217   3                      }
 218   2                      else if ((c == ' ') || (c == '\t'))
 219   2                      {
 220   3                              *argstr = 0;
 221   3                              newState = PS_WHITESPACE;
 222   3                      }
 223   2                      else if (c == '"') 
 224   2                      {
 225   3                              newState = PS_STRING;
 226   3                              *argstr++ = 0;
 227   3                              argv[argc++] = argstr;
 228   3                      }
 229   2                      else if (c == '\\') 
 230   2                      {
 231   3                              stackedState = lastState;
 232   3                              newState = PS_ESCAPE;
 233   3                      }
 234   2                      else 
 235   2                      {
 236   3                              if (lastState == PS_WHITESPACE) 
 237   3                              {
 238   4                                      argv[argc++] = argstr;
 239   4                              }
 240   3                              newState = PS_TOKEN;
 241   3                      }
C51 COMPILER V7.09   HYPERTERMINAL                                                         01/03/2007 02:19:15 PAGE 5   

 242   2      
 243   2                      lastState = newState;
 244   2                      argstr++;
 245   2              }
 246   1      
 247   1              argv[argc] = NULL;
 248   1              if (argc_p != NULL)
 249   1                      *argc_p = argc;
 250   1      
 251   1              if (*argstr == ';') 
 252   1              {
 253   2                      *argstr++ = '\0';
 254   2              }
 255   1              *resid = argstr;
 256   1      }
 257          
 258          void ExecCommand(char *buf)
 259          {
 260   1              char argc,*argv[8],*resid,i;
 261   1              COMMAND *Command = 0;
 262   1      
 263   1              while(*buf)
 264   1              {
 265   2                      memset(argv,0,sizeof(argv));
 266   2                      ParseArgs(buf, &argc, argv, &resid);
 267   2                      if(argc > 0)
 268   2                      {
 269   3                              for(i = 0; i < MAX_COMMAND_NUM; i++)
 270   3                              {
 271   4                                      Command = &CommandList[i];      
 272   4                                      if(strncmp(Command->CommandName,argv[0],strlen(argv[0])) == 0)
 273   4                                              break;
 274   4                                      else
 275   4                                              Command = 0;
 276   4                              }
 277   3                              if(Command == 0)
 278   3                              {
 279   4                                      SerialSendStr(" Could not found \"");
 280   4                                      SerialSendStr(argv[0]);
 281   4                                      SerialSendStr("\" command\r\n");
 282   4                                      SerialSendStr(" If you want to konw available commands, type 'help'\r\n\r\n"); 
 283   4                              }
 284   3                              else
 285   3                              {
 286   4                                      Command->CommandFunc(argc,argv);
 287   4                              }
 288   3                      }
 289   2                      buf = resid;
 290   2              }
 291   1      }
 292          
 293          void RunHyperTerminal(void)
 294          {
 295   1              if(ExecCommandFlag)
 296   1              {
 297   2                      ExecCommand(&SerialBuffer[0]);
 298   2                      SerialSendStr(&PromptBuffer[0]);
 299   2                      memset(&SerialBuffer[0],'\0',MAX_SERIAL_BUFFER_SIZE);
 300   2                      CursorPosion = 0;
 301   2                      ExecCommandFlag = 0;
 302   2              }
 303   1      }
C51 COMPILER V7.09   HYPERTERMINAL                                                         01/03/2007 02:19:15 PAGE 6   



MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1263    ----
   CONSTANT SIZE    =    735    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     36      54
   IDATA SIZE       =     26    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -