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
相关产品推荐
相关产品推荐

