EEPROM ESP8266 — перевернутый знак вопроса

Я застрял здесь. Я пытаюсь сохранить / загрузить конфигурацию платы в EEPROM в ESP8266, используя мою модифицированную версию этот пример.

Вот мой фактический код:

char ssid[32] = "";
char password[32] = "";
char device_type[1] = "";
char device_name[32] = "";

/** Load WLAN credentials from EEPROM */
void loadBoardConfig()
{

EEPROM.begin(512);

int addr = 0;
EEPROM.get(0, ssid);

addr += sizeof(ssid);
EEPROM.get(addr, password);

addr += sizeof(password);
EEPROM.get(addr, device_type);

addr += sizeof(device_type);
EEPROM.get(addr, device_name);

addr += sizeof(device_name);

char ok[2 + 1];
EEPROM.get(addr, ok);

EEPROM.end();

if (String(ok) != String("OK"))
{
ssid[0] = 0;
password[0] = 0;
device_type[0] = 0;
device_name[0] = 0;
}
}

/** Store Board Config to EEPROM */
void saveBoardConfig()
{

EEPROM.begin(512);

int addr = 0;
EEPROM.put(addr, ssid);

addr += sizeof(ssid);
EEPROM.put(addr, password);

addr += sizeof(password);
EEPROM.put(addr, device_type);

addr += sizeof(device_type);
EEPROM.put(addr, device_name);

addr += sizeof(device_name);
char ok[2 + 1] = "OK";
EEPROM.put(addr, ok);

EEPROM.commit();
EEPROM.end();
}

Я понял, что это не правильно подключается к WiFi, поэтому я добавил этот код для проверки:

Serial.print("EEPROM CONFIG: [{ SSID: ");
Serial.printf("%c",ssid);
Serial.print(" },\n{ Password: ");
Serial.print(password);
Serial.print(" },\n{ Device Type: ");
Serial.print(device_type);
Serial.print(" },\n{ Device Name: ");
Serial.print(device_name);
Serial.println(" }]");
Serial.print("STATUS: ");
Serial.println(ok);

Вот результат, который я получаю в Serial Monitor:

EEPROM CONFIG: [{ SSID: ⸮ },
{ Password: ⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮ },
{ Device Type: ⸮ },
{ Device Name: ⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮ }]
STATUS: ⸮⸮⸮?x⸮ @⸮⸮⸮?

Есть идеи, почему это происходит?

0

Решение

Я обнаружил проблему. Код в порядке, но ESP8266 не имеет фактической EEPROM. Вместо этого он эмулируется, сохраненный во флэш-памяти, и у меня были настройки для удаления всего содержимого флэш-памяти. Я просто переключился на «Только эскиз», и это сработало!
Спасибо!

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]