ESP32 无法连接长 wifi SSID。
使用更长的 SSID 名称和密码创建 WiFi 热点。
示例:
ssid="abcdefghijklmnopqrstuvwxyz1234"
密码=“TestPassword@abcdefghijklmnopqrstuvwxyz1234”
下面的代码适用于小型 WiFi SSID [最多约 25 个字符长]。但无法连接更长的WiFi SSID
ReturnCode WifiMgr::StartConnect(char* ssid, char* pw) {
esp_err_t err = ESP_OK;
wifi_config_t wifi_config{};
strlcpy(reinterpret_cast<char*>(wifi_config.sta.ssid), ssid);
strlcpy(reinterpret_cast<char*>(wifi_config.sta.password), pw);
if (err == ESP_OK) {
err = esp_wifi_set_config(WIFI_IF_STA, &wifi_config);
if (err != ESP_OK) {
LogError(("esp_wifi_set_config() failed: %s", esp_err_to_name(err)));
}
}
if (err == ESP_OK) {
connecting_ = true;
LogInfo(("StartConnect(): Attempting to connect to ssid: %s", wifi_config.sta.ssid));
err = esp_wifi_connect();
if (err != ESP_OK) {
LogError(("esp_wifi_connect() failed: %s", esp_err_to_name(err)));
connecting_ = false;
}
}
return (err == ESP_OK) ? ReturnCode::kSuccess : ReturnCode::kFailure;
}
Wifi 事件处理程序代码如下
void WifiMgr::WifiEventHandler(int32_t event_id, void* event_data) {
.....My tre code .....
switch (event_id) {
case WIFI_EVENT_SCAN_DONE:
.....My tre code .....
break;
case WIFI_EVENT_STA_START:
.....My tre code .....
break;
case WIFI_EVENT_STA_STOP:
.....My tre code .....
break;
case WIFI_EVENT_STA_CONNECTED:
///// print connected
break;
case WIFI_EVENT_STA_DISCONNECTED:
LogInfo(("WIFI_EVENT_STA_DISCONNECTED: ssid: %.*s reason: %d", info.disconnected->ssid_len, reinterpret_cast<char*>(info.disconnected->ssid), info.disconnected->reason));
.....My tre code .....
break;
default:
break;
}
.....My tre code .....
}
根据文档,SSID 值的最大长度为 32,密码的最大长度为 64。