You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Arduino串口监视器中获取可动态修改的字符串输入?

Arduino串口监视器获取可修改字符串输入的实现方案

要在Arduino串口监视器实现可修改的字符串输入,核心是处理退格键(ASCII码8)——用户按退格时,不仅要删除内存里的字符,还要同步清除串口监视器上的对应字符。以下是完整的实现代码:

// 定义最大输入长度,可根据需求调整
#define MAX_INPUT_LENGTH 30

// 存储输入的字符串
char inputString[MAX_INPUT_LENGTH];
// 记录当前输入的字符数
byte inputIndex = 0;

void setup() {
  // 初始化串口,波特率9600,和串口监视器保持一致
  Serial.begin(9600);
  // 提示用户输入
  Serial.println("请输入字符串(按回车确认,按退格修改):");
}

void loop() {
  // 检查串口是否有数据可读
  if (Serial.available() > 0) {
    char receivedChar = Serial.read();
    
    // 如果是回车键(ASCII 13),确认输入完成
    if (receivedChar == 13) {
      // 在字符串末尾添加结束符
      inputString[inputIndex] = '\0';
      Serial.println("\n你输入的字符串是:");
      Serial.println(inputString);
      // 重置输入索引,准备下一次输入
      inputIndex = 0;
      Serial.println("\n请继续输入(按回车确认,按退格修改):");
    } 
    // 如果是退格键(ASCII 8),处理删除逻辑
    else if (receivedChar == 8 && inputIndex > 0) {
      // 内存中删除最后一个字符
      inputIndex--;
      // 串口发送退格+空格+退格,清除监视器上的字符
      Serial.print("\b \b");
    } 
    // 普通字符,且未达到最大长度,添加到字符串
    else if (inputIndex < MAX_INPUT_LENGTH - 1) {
      inputString[inputIndex] = receivedChar;
      inputIndex++;
      // 回显字符到监视器,让用户看到输入内容
      Serial.print(receivedChar);
    }
  }
}

关键逻辑说明:

  • 退格处理:当收到退格字符时,先将存储字符串的索引减1,再通过\b \b的组合——先退格,再输出空格覆盖原字符,最后再退格,实现监视器上的字符删除效果。
  • 输入限制:通过MAX_INPUT_LENGTH定义最大输入长度,防止数组越界。
  • 回车确认:收到回车键后,给字符串添加结束符\0,然后输出结果并重置输入状态。

使用方法:

  1. 将代码上传到Arduino板。
  2. 打开串口监视器,设置波特率为9600。
  3. 输入字符时,按退格键可删除前一个字符,输入完成后按回车键确认,程序会打印你输入的内容。

内容的提问来源于stack exchange,提问作者wout

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 22:22:42