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

如何延迟Arduino程序,确保串口监视器连接后再执行?

解决Arduino串口监视器乱码问题:等待串口连接后再执行代码

核心解决方案

在setup()函数中加入等待串口连接的循环,替代固定延迟。不同电脑建立串口连接的时间差异较大,固定的10ms延迟无法适配所有场景,而通过循环检测串口连接状态,能确保程序在串口完全就绪后再执行后续代码。

对于Arduino Uno和Mega(使用默认USB串口Serial),可以用以下代码实现等待:

while (!Serial) {
  // 空循环,直到串口连接建立
}

修改后的完整代码

const String str = "Hello, world"; // 存储目标字符串

void setup() {
  Serial.begin(9600); // 初始化串口波特率
  // 等待串口监视器连接完成
  while (!Serial);
}

void loop() {
  int charInMessage = 0; // 存储字符串长度
  
  // 手动遍历统计字符数
  for (int i = 0; str[i] != '\0'; i++) {
    charInMessage++;
  }

  Serial.println(charInMessage); // 输出字符数
  
  while(true); // 程序仅运行一次
}

代码优化建议

你手动遍历统计字符数的写法可行,但Arduino的String类自带length()方法,可以直接获取字符串长度,简化代码:

// 替换原有的for循环部分
int charInMessage = str.length();

修改后loop()会更简洁高效,同时兼容Uno和Mega。

兼容性说明

上述代码在Arduino Uno和Mega上均可正常工作:

  • Uno:程序会停在while (!Serial)循环,直到打开串口监视器才继续执行。
  • Mega:默认USB串口(Serial)的检测逻辑和Uno一致,同样能等待连接完成。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 12:52:45