[PIC®/AVR®/dsPIC®产品] 分享一段识别串口发来指令的代码

[复制链接]
1669|1
 楼主| gaoyang9992006 发表于 2021-11-8 16:35 | 显示全部楼层 |阅读模式
  1.     while (1)
  2.     {
  3.         // {AT:ABCD1234UP}
  4. while(getch()=='{')
  5.         {
  6.             cmd[0] = '{';
  7.             for(i=1;i<15;i++)
  8.                 cmd[i] = getch();
  9.             if(cmd[14]=='}')
  10.             {
  11.                 x=cmd[12];
  12.                 switch(x)
  13.                 {
  14.                 case 'U':
  15.                     up();
  16.                     printf("UP\n");
  17.                     break;
  18.                 case 'D':
  19.                     down();
  20.                     printf("DOWN\n");
  21.                     break;
  22.                 case 'L':
  23.                     left();
  24.                     printf("LEFT\n");
  25.                     break;
  26.                 case 'R':
  27.                     right();
  28.                     printf("RIGHT\n");
  29.                     break;
  30.                 case 'S':
  31.                     stop();
  32.                     printf("STOP\n");
  33.                     break;
  34.                 case 'T':
  35.                     Triangle(1);
  36.                     printf("T-UP   ");
  37.                     break;
  38.                 case 'V':
  39.                     Triangle(0);
  40.                     printf("T-DOWN ");
  41.                     break;
  42.                 }
  43.             }
  44.         }
  45.      }
大家有没有更好的方法呢,期待你的分享。
 楼主| gaoyang9992006 发表于 2021-11-8 16:37 | 显示全部楼层
{AT:ABCD1234UP}
这是我的指令格式,包含在一对大括号里。
我先识别到一个大括号开头,然后接收到完整的一个指令长度,判断结束位置是不是大括号的结尾,如果是,就从内取出对应的指令。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:如果你觉得我的分享或者答复还可以,请给我点赞,谢谢。

2053

主题

16410

帖子

222

粉丝
快速回复 在线客服 返回列表 返回顶部