亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

Arduino UNO命令行界面(CLI)实现:轻量级串口交互指南

为什么需要Arduino命令行界面?

在Arduino开发中,经常需要实时调试:读取传感器数值、控制电机动作、修改运行时变量、设置数字电位器参数等。通过串口监视器输入文本命令是最直观的交互方式。本文介绍一个简洁、高效、内存占用极小的命令行解析器,可在几分钟内集成到任何Arduino项目中。

核心设计特点

快速集成步骤

  1. 在Arduino IDE中创建新标签页,命名为CommandLine.h
  2. 将完整代码复制粘贴进去
  3. 在主程序中包含:#include "CommandLine.h"
  4. 在loop()中调用两个核心函数:
    void loop() {
      bool received = getCommandLineFromSerialPort(CommandLine);
      if (received) DoMyCommand(CommandLine);
    }
    

核心代码架构解析

1. 缓冲区与解析器配置


#define COMMAND_BUFFER_LENGTH 25  // 命令缓冲区长度
char CommandLine[COMMAND_BUFFER_LENGTH + 1];
const char *delimiters = " , \n"; // 分隔符:空格、逗号、换行

2. 串口命令获取 getCommandLineFromSerialPort()

异步读取串口数据,处理退格键(\b)、回车(\r)、换行(\n),组装完整命令行至缓冲区,遇到结束符返回true。自动转小写统一大小写。

3. 参数解析辅助函数


// 读取下一个数字参数
int readNumber() {
  char *numTextPtr = strtok(NULL, delimiters);
  return atoi(numTextPtr);
}

// 读取下一个单词参数
char *readWord() {
  return strtok(NULL, delimiters);
}

利用C标准库strtok()实现令牌化解析,首次调用传入字符串指针,后续调用传NULL继续解析。

4. 命令分发执行 DoMyCommand()

使用strtok()提取命令名,通过strcmp()匹配预定义命令令牌,调用对应处理函数,支持add、sub等示例命令,未知命令调用nullCommand()报错。

内置示例命令

命令格式功能示例
addadd 数1, 数2两数相加add 5, 10 → > The sum is = 15
subsub 数1, 数2两数相减sub 10, 5 → > The difference is = 5

添加自定义命令指南

  1. 在CommandLine.h顶部定义命令令牌常量:
    const char *myCommandToken = "mycmd"; //Modify here
    
  2. 实现命令处理函数:
    
    int myCommand() {
      int arg1 = readNumber();
      char *arg2 = readWord();
      // 业务逻辑...
      return result;
    }
    
  3. 在DoMyCommand()中添加分支:
    
    if (strcmp(ptrToCommandName, myCommandToken) == 0) {
      result = myCommand();
      print2("> Result: ", result);
    }
    

调试宏与实用技巧

定义了print2(label, value)宏,一行代码打印标签和值,极大简化调试输出:


#define print2(x,y) (Serial.print(x), Serial.println(y))
// 使用示例:
print2("sensorVal = ", sensorVal);
// 输出:sensorVal = 512

进阶优化方向

完整代码获取

完整CommandLine.h源码包含在文章代码区,已添加详细注释标记//Modify here指示自定义位置。直接复制到新标签页即可使用,无需额外库依赖。

制造工艺

  1. 长车道无线监测方案:树莓派集成低成本驱动道传感器
  2. 树莓派纯数字引脚实现低成本红外测距传感器:RC 计时法
  3. ANDY:多功能人形机器人
  4. Simple Pi Robot:用树莓派打造 2WD 自主巡航车
  5. 钢卷分条生产线详解:将钢卷转化为精密钢带
  6. 定尺剪切生产线(CTL)主流制造商全景指南
  7. 压力机生产线自动化:现代制造效能跃升指南
  8. 掌握 C# 注释:类型、最佳实践与 XML 文档注释
  9. 掌握 C# 接口:定义、实现与实战场景全解析
  10. C 语言命令行参数完全指南:argc 与 argv 实战详解
  11. C# 接口完全指南:定义契约、实现多态与解耦设计
  12. 精通 Java 接口:概念、实现与最佳实践