Я работаю над администрированием для своего IoT на базе ESP8266.
Я могу редактировать некоторые настройки через веб-сервер и сохранять их в EEPROM.
Но я застрял при установке значения формы ввода по умолчанию, которое я читаю из EEPROM. Я сохранил SSID в EEPROM, я могу прочитать его обратно и подключиться к нему, так что я знаю, что он написан правильно.
Serial.print();
печать: секретный WiFi (SSID Wi-Fi).
Но как только я пытаюсь установить его как значение по умолчанию для текстового поля формы ввода, я получаю:
���?etwi0��?�!@P��?`��?0��?B!@���?���?��?���?
void EEPROMwriteChar(int address, String to_save) {
int how_long= to_save.length();
EEPROM.write(address, how_long); // zápis délky řetězce na nultou adresu
EEPROM.commit();
for ( int i = 0; i <= how_long; i++) {
if (i < delka) {
EEPROM.write((address+ 1 + i), to_save[i]);
}
else {
EEPROM.write((address+ 1 + i), '\0'); // ukončení řetězce
}
EEPROM.commit();
}
}
char* EEPROMreadChar(int address) {
int how_long = EEPROM.read(address);
char value[how_long];
if (how_long > 0) {
for (int i = 0; i <= how_long; i++) {
value[i] = EEPROM.read((address + 1 + i));
}
return value;
}
}
Это функции чтения и записи.
Функция вывода HTML:
String formWifiSettings() {
char* WSSID = EEPROMreadChar(0);
Serial.print("SSID HTML:");
Serial.println(WSSID);
String html = "<form action='/wifi' method='POST' id='wifi_form'> \n";
//...some more html code...
html += "<td><input name='WIFI_SSID' type='text' id='WIFI_SSID' size='40' maxlength='63' ";
html += "value='";
html += String(WSSID);
html += "'";
html += " /></td> \n";
//...some more html code again...
return html;
}
Серийный выход:
SSID HTML:secretwifi
html:
input name="WIFI_SSID" id="WIFI_SSID" size="40" maxlength="63" value="���?etwi0��?�!@P��?`��?0��?B!@���?���?��?���?" type="text"
Даже без String();
конверсия это фигня.
Может быть, это глупый вопрос, но я два дня гуглю его, как сумасшедший, но безуспешно.
Задача ещё не решена.
Других решений пока нет …