Я использую следующий код для сохранения и загрузки учетных данных в и из 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();
}
Заранее спасибо!