ESP8266获取已连接接入点MAC地址并串口打印报错解决问询
问题原因与解决方案
1 报错核心原因
你用到的WIFI_MODE_AP是ESP32 Arduino内核的WiFi模式常量,ESP8266的WiFi库对应常量为WIFI_AP(热点模式)、WIFI_STA(站点模式)、WIFI_AP_STA(混合模式),常量不匹配才会触发未定义报错。
另外你当前的代码逻辑和需求不匹配:你要获取的是已连接的上游接入点MAC地址,但你调用的WiFi.softAPmacAddress()是获取ESP8266自身开启热点的MAC地址,完全是两个不同的对象,而且你没有等待WiFi连接完成就读取参数,也拿不到有效数据。
2 其他语法错误
- 头文件引入格式错误:
#include <"WiFi.h">应该改为#include <WiFi.h> - 全局变量定义末尾缺少分号
setup函数缺少闭合大括号- WiFi连接未做等待判断,直接读取参数大概率返回空值
3 修正后可用代码
#include <WiFi.h> const char* ssid = "NetworkSSID"; const char* pass = "NetworkPASS"; void setup(){ Serial.begin(115200); // 配置为站点模式,才可以连接其他WiFi热点 WiFi.mode(WIFI_STA); WiFi.begin(ssid, pass); // 等待WiFi连接成功 while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi连接成功"); // 读取所连接的接入点MAC地址并打印 Serial.print("所连接AP的MAC地址为:"); Serial.println(WiFi.BSSIDstr()); } void loop(){ // 无额外业务可以留空 }
核心API说明:WiFi.BSSIDstr() 就是ESP8266 WiFi库中专门用于获取已连接上游接入点MAC地址的方法,返回格式为字符串,直接打印即可。
内容的提问来源于stack exchange,提问作者Victor666
相关产品推荐
相关产品推荐

