下面是我的案例:
已启用Wifi NVS FLash。我正在使用esp_wifi_get_config来查看wifi配置是否保存在NVS中。我的代码是:
wifi_config_t conf;
ret = esp_wifi_get_config(ESP_IF_WIFI_STA, &conf);
if (ret == ESP_OK)
{
ESP_LOGI(TAG, "Wifi configuration already stored in flash partition called NVS");
ESP_LOGI(TAG, "%s" ,conf.sta.ssid);
ESP_LOGI(TAG, "%s" ,conf.sta.password);
}
else
{
ESP_LOGI(TAG, "Wifi configuration not found in flash partition called NVS.");
configure_wifi();
}它像预期的那样工作。然后,在上面编写的代码之前,我使用nvs_flash_erase();nvs_flash_init();擦除并初始化了我的nvs。现在我的输出是
I (697) Wifi station: Wifi configuration already stored in flash partition called NVS
I (707) Wifi station:
I (707) Wifi station:我的方法正确吗?如果没有,那么在配置wifi之前检查Wifi nvs数据的正确方法是什么?
发布于 2021-02-09 05:49:42
我遇到了同样的问题,发现无法通过检查返回值来检查从nvs加载wifi_config的成功与否。
我通过检查来自NVS的数据的字符串长度解决了这个问题,在擦除闪存后,字符串长度通常由0xff填充。
wifi_config_t wifi_config;
esp_wifi_get_config(ESP_IF_WIFI_STA, &wifi_config);
//You could check if more values are set but I figured out that only ssid
//or password is necessary to check against
if(strlen(&wifi_config.sta.ssid) == 0 || strlen(&wifi_config.sta.password) == 0) {
//do here your error handling
} else {
//use sucessfully retreived wifi_config
esp_wifi_set_config(WIFI_IF_STA, &wifi_config));
}https://stackoverflow.com/questions/65446414
复制相似问题