要在NVS(Non-Volatile Storage)中存取多组WiFi的SSID和密码,你可以按照以下步骤进行:
1. 定义一个结构体来存储WiFi信息,包括SSID和密码。例如:
```c
typedef struct {
char ssid[32];
char password[64];
} WiFiConfig;
```
2. 为每组WiFi配置定义一个唯一的键。例如,你可以使用"WiFi1"、"WiFi2"等作为键名。
3. 使用`esp_err_t nvs_set_str(nvs_handle_t handle, const char* key, const char* str)`函数来存储SSID和密码。例如:
```c
WiFiConfig wifiConfig1 = {"SSID1", "PASSWORD1"};
WiFiConfig wifiConfig2 = {"SSID2", "PASSWORD2"};
nvs_handle_t handle;
esp_err_t ret = nvs_open("wifi_config", NVS_READWRITE, &handle);
if (ret == ESP_OK) {
ret = nvs_set_str(handle, "WiFi1", wifiConfig1.ssid);
if (ret == ESP_OK) {
ret = nvs_set_str(handle, "WiFi2", wifiConfig1.password);
}
// 存储第二组WiFi配置
ret = nvs_set_str(handle, "WiFi3", wifiConfig2.ssid);
if (ret == ESP_OK) {
ret = nvs_set_str(handle, "WiFi4", wifiConfig2.password);
}
}
```
4. 使用`esp_err_t nvs_get_str(nvs_handle_t handle, const char* key, char* out_str, size_t* length)`函数来读取SSID和密码。例如:
```c
char ssid[32], password[64];
nvs_get_str(handle, "WiFi1", ssid, NULL);
nvs_get_str(handle, "WiFi2", password, NULL);
// 读取第二组WiFi配置
nvs_get_str(handle, "WiFi3", ssid, NULL);
nvs_get_str(handle, "WiFi4", password, NULL);
```
5. 在需要的时候,使用这些存储的SSID和密码连接到相应的WiFi网络。
通过这种方式,你可以在NVS中存储多组WiFi的SSID和密码,并在需要时进行读取和使用。