【发布时间】:2020-04-26 12:05:49
【问题描述】:
我正在使用以下代码在 EEPROM 中保存和加载凭据:
void loadCredentials() {
EEPROM.begin(512);
EEPROM.get(0, ssid);
EEPROM.get(0+sizeof(ssid), password);
char ok[2+1];
EEPROM.get(0+sizeof(ssid)+sizeof(password), ok);
EEPROM.end();
if (String(ok) != String("OK")) {
ssid[0] = 0;
password[0] = 0;
}
Serial.println("Recovered credentials:");
Serial.println(ssid);
Serial.println(strlen(password)>0?"********":"<no password>");
}
/** Store WLAN credentials to EEPROM */
void saveCredentials() {
EEPROM.begin(512);
EEPROM.put(0, ssid);
EEPROM.put(0+sizeof(ssid), password);
char ok[2+1] = "OK";
EEPROM.put(0+sizeof(ssid)+sizeof(password), ok);
EEPROM.commit();
EEPROM.end();
Serial.print("Saving SSID: ");
Serial.println(ssid);
Serial.print("Password: ");
Serial.println(password);
Serial.println("Done");
}
但是,loadCredentials() 始终返回空凭据或无效凭据。我不太明白为什么saveCredentials() 似乎运行正常,而WiFi.begin(ssid, passaord) 工作没有任何问题(直到你重置)
这是用于将凭据设置到变量中的代码:
if(ssidchange){
a = String(a);
a.toCharArray(tempssid, 50);
ssid = tempssid;
Serial.print("Done, SSID changed to ");
Serial.println(ssid);
ssidchange = false;
}
else if(passchange){
char temppass[50];
String a2 = String(a);
a2.toCharArray(temppass, 50);
ssid = tempssid;
password = temppass;
Serial.print("SSID changed to ");
Serial.println(tempssid);
Serial.print("and pass changed to ");
Serial.println(password);
saveCredentials();
delay(3000);
ESP.restart();
}
非常感谢您!
【问题讨论】:
标签: arduino arduino-esp8266 eeprom