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

ESP8266已连接WiFi但程序未继续执行,串口无预期输出

问题解决:ESP8266 WiFi连接成功但无预期串口输出

哦,我太熟悉这个坑了!你遇到的问题核心是字符串与IPAddress对象的直接拼接导致的类型不匹配错误,这会让程序卡在输出语句那一步,虽然WiFi已经成功连接并获取到IP,但后续代码没法正常执行。

问题出在哪?

看你代码里的这一行:

Serial.println("Connected! Ip: " + WiFi.localIP());

WiFi.localIP()返回的是IPAddress类型的对象,而"Connected! Ip: "是C风格字符串,在C++里直接用+运算符把这俩拼在一起是不合法的,会触发未定义行为——比如程序卡住、输出异常,这就是你看不到预期内容的原因。

修复后的代码

只需要把IPAddress对象转换成字符串再拼接就行,用toString()方法就能搞定:

#include <ESP8266WiFi.h>
#include <WiFiClient.h>

void setup() {
  delay(1000);
  Serial.begin(115200);
  Serial.println();

  WiFi.begin("ssid", "password"); // 已编辑

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  // 把IPAddress转为字符串后再拼接输出
  Serial.println("Connected! Ip: " + WiFi.localIP().toString());
}

void loop() {
}

为什么这样能行?

WiFi.localIP().toString()会把IP地址对象转换成标准的字符串格式(比如"192.168.2.15"),这样和前面的字符串用+拼接就完全符合C++的语法规则了。从你开启调试输出看到的ip:192.168.2.15能确认设备确实已经拿到IP,只是之前的输出语句因为类型错误卡壳了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:58:54