arduino ESP32将SSID 密码,IP,网关子网掩码,本地端口,TCP服务器IP,TCP服务器端口用结构体的方式存入flash中,用preferences库
时间: 2024-03-18 09:41:55 浏览: 137
可以使用Preferences库将这些参数以结构体的方式存入ESP32的Flash中,以下是一个示例代码:
```C++
#include <Preferences.h>
// 定义一个结构体来存储参数
struct WiFiSettings {
char ssid[32];
char password[64];
IPAddress ip;
IPAddress gateway;
IPAddress subnet;
uint16_t localPort;
IPAddress tcpServerIP;
uint16_t tcpServerPort;
};
// 创建Preferences实例
Preferences preferences;
void setup() {
// 打开Preferences存储空间,并指定名称和命名空间
preferences.begin("wifi_settings", false);
}
void loop() {
// 读取参数值
WiFiSettings wifiSettings;
preferences.getBytes("wifi_settings", &wifiSettings, sizeof(wifiSettings));
// 使用参数值连接WiFi或TCP服务器
// ...
// 存储参数值
strcpy(wifiSettings.ssid, "my_ssid");
strcpy(wifiSettings.password, "my_password");
wifiSettings.ip = IPAddress(192, 168, 1, 100);
wifiSettings.gateway = IPAddress(192, 168, 1, 1);
wifiSettings.subnet = IPAddress(255, 255, 255, 0);
wifiSettings.localPort = 1234;
wifiSettings.tcpServerIP = IPAddress(192, 168, 1, 200);
wifiSettings.tcpServerPort = 5678;
preferences.putBytes("wifi_settings", &wifiSettings, sizeof(wifiSettings));
}
```
在上面的示例代码中,我们首先定义了一个结构体`WiFiSettings`来存储WiFi和TCP服务器的参数。然后,在`setup()`函数中,我们使用`Preferences`库打开存储空间,并指定了名称和命名空间。在`loop()`函数中,我们首先读取存储在Flash中的参数值,并使用这些参数连接WiFi或TCP服务器。然后,我们将新的参数值存入Flash中,以便下次使用。注意,我们使用`putBytes()`函数将结构体的字节表示存入Flash中,而使用`getBytes()`函数将其读取回来。
阅读全文