string в eeprom
- Войдите на сайт для отправки комментариев
Пт, 09/02/2018 - 17:08
не пойму немного,
EEPROM.put(400, password);
EEPROM.get(400, password_12);
Serial.println(password_12);
// сразу после записи - код значение зачитывается правильно
// а после перезагрузки
EEPROM.get(400, password_12);
Serial.println(password_12);
// пишет уже какую то туфту
стринги не могут залезть в епром? или в чем причина....
стринги не могут залезть в епром? или в чем причина....
считайте по-байтово, чтоб проверить
блин, в общем в пустой программе все работает нормально
#include <EEPROM.h> String password = ""; String password_12 = ""; void setup() { Serial.begin(9600); password = "pissword"; EEPROM.put(600, password); EEPROM.get(600, password_12); Serial.println(password_12); } void loop() { Serial.println(password_12); }а если в свой код вставляю получаю на выходе квадраты
даже беру записываю этим скетчем а в своей программе пытаюсь считать и квадраты
хотя считываю этим скетчем (закоментировав
EEPROM.put(600, password);) все хорошо считываетсяну значит пора вылезти из коротких штанишек и научится все же пользоваться char* для строк :)
Конечно, не может. Как он туда залезет, если у него буффер динамически получен?
Запихать можно, но не так просто.
Конечно, не может.
понял, спасибо, буду делать побайтово... впринципе есть участок кода где побайтово номер телефона записывается, так что проблемм не будет, просто уточнить, может я что то не правильно делал, или реально стринги в епром не лезут адекватно
Да, если Вам проще жить со String, так проще запихать его туда. Только это не в лоб делается.
Да, если Вам проще жить со String, так проще запихать его туда. Только это не в лоб делается.
ну я в общем сделал так, добавил в строку символ \0 увидел сколько символов в строке .length(), потом записал в массив char по символу .toCharArray и потом массив записал в eeprom, вот такое решение пришло на ум
Да, если Вам проще жить со String, так проще запихать его туда. Только это не в лоб делается.
ну я в общем сделал так, добавил в строку символ \0 увидел сколько символов в строке .length(), потом записал в массив char по символу .toCharArray и потом массив записал в eeprom, вот такое решение пришло на ум
Символ \0 и так уже есть в строке. Лишние преобразования, типа toCharArray - не нужны, от слова "совсем":
Три строчки. Записывается и 0. Вычитывается - аналогично, до первого 0.
А зачем ++ в строке 4? Типа если для следующей строки использовать?
А вычитывается ещё проще. У String есть и конструктор "из флеша", и оператор присвания, т.е. всё уже украдено до нас.