проблемма с EEPROM или я туплю....
- Войдите на сайт для отправки комментариев
Пнд, 16/10/2017 - 10:20
Здравствуйте, подскажите что не так?
#include <EEPROM.h> String currStr = "";//Строка содержит текущую строку, полученую от сим модуля. String nomber_Phone = "";//Строка содержит номер телефона на который отправляються GPS координаты, далее Разрешенный номер. char data;//Содержит символ полученый от сим модуля. void setup() { // put your setup code here, to run once: Serial.begin(57600); } void loop() { while (Serial.available() > 0) { data = Serial.read(); // Serial.println(data); if (data == '-') { if (nomber_Phone != 0) { nomber_Phone = ""; } for (byte i = 0; i < 12; i++) //Чтение Разрешонного номера из EEPROM { data = EEPROM.read(i); nomber_Phone += data; } Serial.println(nomber_Phone); return; } } if (data == '+') { for (byte i = 0; i < 12; i++) { EEPROM.write(i, data); currStr += data; data = Serial.read(); } Serial.println("complete"); return; } }
имеем вот такой скетч, учусь записывать в EEPROM, так вот вроде запись проходит все хорошо но когда пытаюсь прочитать сдвигает символы... записываю номер +70123456789 пишет что записал complete
а когда отправляю "-" что бы прочитать из епрома, в ответ вот такое "+⸮7012345678"

если я правильно понял код,
строки цикла должны 34...44 должны быть внутри while т.е. вставить после 32 строки
в типе String кажеться персым байтом идет длина строки, вот она то наверное и записывается в eeprom и я вляется не печатным символом
переходите полностью на char
проблемма с EEPROM или я туплю....
Второе. Даже в двух местах.
1. В строке 40 Вы читаете всё подряд и потом пишете. Так вот, Ваш первый символ, это возврат каретки, оставшийся от команды "+". Вам надо там поставить проверку и то, что не является цифрой - игнорировать. Проще всего проверка делается так
2. В той же строке 40 Вы читаете не проверяя, а пришло ли что-нибудь. Рискуете начать читать, когда оно ещё не успело прийти. Тоже проверять надо.
разобрался) еепром надо было задержку поставить
разобрался) еепром надо было задержку поставить
Это не "разобрался", это вы продолжаете тупить. Задержка - костыль чистой воды. Чуть что поменяете - опять перестанет работать. Перечитайте. что написал Евгений, неужели это так сложно понять?
разобрался) еепром надо было задержку поставить
Это не "разобрался", это вы продолжаете тупить. Задержка - костыль чистой воды. Чуть что поменяете - опять перестанет работать. Перечитайте. что написал Евгений, неужели это так сложно понять?
прошу прощения, на момент когда писал, сообщений небыло...
проблемма с EEPROM или я туплю....
Второе. Даже в двух местах.
1. В строке 40 Вы читаете всё подряд и потом пишете. Так вот, Ваш первый символ, это возврат каретки, оставшийся от команды "+". Вам надо там поставить проверку и то, что не является цифрой - игнорировать. Проще всего проверка делается так
2. В той же строке 40 Вы читаете не проверяя, а пришло ли что-нибудь. Рискуете начать читать, когда оно ещё не успело прийти. Тоже проверять надо.
добавил- что то не выходит запись...
пока игрался, изменил код...
щас ввожу так: write1 +70123456789
если в коде оставляю все как есть
то все работает прекрассно
а если вот такой код, то вообще могу в порт любые крокозябры писать и все отлично работает