ESP32-CAM烧录报错:SYSTEM_EVENT_AP_STACONNECTED未声明的解决求助
解决ESP32-CAM中
SYSTEM_EVENT_AP_STACONNECTED未定义的编译错误 问题原因
ESP32的Arduino核心库在版本迭代后,WiFi事件的常量命名规则发生了变更:旧版本使用SYSTEM_EVENT_*前缀,新版本统一改为WIFI_EVENT_*前缀。你代码里的旧版常量名在当前环境中已被移除,因此触发编译错误。这不是缺少文件的问题,属于库版本更新带来的命名规范调整。
解决方案
直接将代码中的SYSTEM_EVENT_AP_STACONNECTED替换为WIFI_EVENT_AP_STACONNECTED即可。同时修正WiFi.localIP()与字符串拼接的潜在类型问题,修改后的完整代码如下:
#include <WiFi.h> const char* ssid = "CarDrone"; const char* password = "08060905"; String network_ssid = "---"; String network_password = "----"; WebServer server(80); void WiFiPointConnected(WiFiEvent_t event, WiFiEventInfo_t info) { Serial.println("Connected!"); } void setup() { Serial.begin(115200); WiFi.softAP(ssid, password); // 替换为新版本的事件常量名 WiFi.onEvent(WiFiPointConnected, WIFI_EVENT_AP_STACONNECTED); Serial.println(); // 转换IP地址为字符串后再拼接 Serial.println("ESP32-CAM IP Address: " + WiFi.localIP().toString()); } void loop() {}
兼容新旧版本的可选方案
如果需要代码同时兼容旧版和新版ESP32核心库,可以添加条件编译:
#if defined(ARDUINO_ESP32_VERSION_MAJOR) && ARDUINO_ESP32_VERSION_MAJOR >= 2 #define AP_CONNECTED_EVENT WIFI_EVENT_AP_STACONNECTED #else #define AP_CONNECTED_EVENT SYSTEM_EVENT_AP_STACONNECTED #endif
之后代码中直接使用AP_CONNECTED_EVENT代替具体的常量名即可。
内容的提问来源于stack exchange,提问作者Idea Softworks
相关产品推荐
相关产品推荐

