如何在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,然后输出结果并重置输入状态。
使用方法:
- 将代码上传到Arduino板。
- 打开串口监视器,设置波特率为9600。
- 输入字符时,按退格键可删除前一个字符,输入完成后按回车键确认,程序会打印你输入的内容。
内容的提问来源于stack exchange,提问作者wout
相关产品推荐
相关产品推荐

