ESP32-C3, esp-idf 4.3.5,tcp client wifi连接超时设置
时间: 2023-08-24 22:06:21 浏览: 184
在 ESP32-C3 上,你可以通过以下代码来设置 TCP 客户端在连接 WiFi 时的超时时间:
```c
#include "esp_wifi.h"
// 设置 WiFi 连接超时时间为 10 秒
#define WIFI_CONNECT_TIMEOUT_MS (10000)
// 在连接 WiFi 时设置超时时间
esp_err_t wifi_connect(const char *ssid, const char *password) {
esp_err_t ret = ESP_OK;
wifi_config_t wifi_config = { 0 };
strncpy((char *)wifi_config.sta.ssid, ssid, sizeof(wifi_config.sta.ssid));
strncpy((char *)wifi_config.sta.password, password, sizeof(wifi_config.sta.password));
ret = esp_wifi_set_mode(WIFI_MODE_STA);
if (ret != ESP_OK) {
return ret;
}
ret = esp_wifi_set_config(ESP_IF_WIFI_STA, &wifi_config);
if (ret != ESP_OK) {
return ret;
}
ret = esp_wifi_start();
if (ret != ESP_OK) {
return ret;
}
uint32_t start_time = esp_timer_get_time();
wifi_ap_record_t ap_info = { 0 };
while (true) {
ret = esp_wifi_sta_get_ap_info(&ap_info);
if (ret == ESP_OK) {
break;
}
uint32_t time_elapsed = (esp_timer_get_time() - start_time) / 1000;
if (time_elapsed >= WIFI_CONNECT_TIMEOUT_MS) {
ESP_LOGE(TAG, "WiFi connection timeout");
return ESP_ERR_TIMEOUT;
}
vTaskDelay(pdMS_TO_TICKS(100));
}
ESP_LOGI(TAG, "Connected to WiFi AP %s", ap_info.ssid);
return ESP_OK;
}
```
在这个代码中,`WIFI_CONNECT_TIMEOUT_MS` 宏定义了 WiFi 连接的超时时间。在 `wifi_connect()` 函数中,我们使用了 `esp_wifi_sta_get_ap_info()` 来获取连接的 WiFi AP 信息,如果在超时时间内没有获取到 AP 信息,则会返回超时错误。你可以根据需要来调整超时时间。
阅读全文