Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

Вопрос Пропадают спецсимволы

Тема в разделе "Раздел для начинающих", создана пользователем Vypra, 12 фев 2019.

  1. Vypra

    Vypra Новичок

    Сообщения:
    49
    Симпатии:
    0
    У меня задача ввести на смартфоне емейл через поле ввода приложения RemoteXY, записать в EEPROM NodeMCU по нажатию кнопки в RemoteXY, считать с памяти EEPROM и вывести обратно через текстовую строку RemoteXY на смартфон. Все работает, но после вывода в текстовую строку убираются с емейла символы @ и точка. На каком этапе символы убираются и как с этим бороться?
    Часть кода записи/чтения:
    Код (Text):
    1.  
    2. void EEPROM_write()
    3. {
    4.   RemoteXY_Handler ();
    5.   if (RemoteXY.REC == 1)
    6.   {
    7.     String email_from_in(RemoteXY.email_from_in);
    8.     if (email_from_in != "")
    9.     {
    10.       EEPROM_ESP8266_WRITE (email_from_in, 14);
    11.     }
    12. }
    13.  
    14. // запись
    15. void EEPROM_ESP8266_WRITE(String buffer, int N)
    16. {
    17.   EEPROM.begin(512);
    18.   delay(10);
    19.   for (int L = 0; L < 32; ++L) {
    20.     EEPROM.write(N + L, buffer[L]);  // EEPROM.write(address, value)
    21.   }
    22.   EEPROM.commit();
    23. }
    24.  
    25.  
    26. void EEPROM_read()
    27. {
    28.   RemoteXY_Handler ();
    29.   String email_from_m = EEPROM_ESP8266_READ(14, 39);
    30.   email_from_m.toCharArray(RemoteXY.email_from_m, 26);
    31. }
    32.  
    33.  
    34. // чтение
    35. String EEPROM_ESP8266_READ(int min, int max)
    36. {
    37.   EEPROM.begin(512);
    38.   delay(10);
    39.   String buffer;
    40.   for (int L = min; L < max; ++L)
    41.     if (isAlphaNumeric(EEPROM.read(L)))
    42.       buffer += char(EEPROM.read(L));
    43.   return buffer;
    44. }
     
  2. Юрий Ботов

    Юрий Ботов Moderator Команда форума

    Сообщения:
    994
    Симпатии:
    169
    Код (Text):
    1. if (isAlphaNumeric(EEPROM.read(L))
    2.        buffer += char(EEPROM.read(L));
    Собственно вот тут и убираются. Бороться - закомментировать строку с if.
    Но насколько корректно будет при этом работать конструктор интерфейсов - не знаю.
     
    Последнее редактирование: 12 фев 2019
    Vypra нравится это.
  3. Vypra

    Vypra Новичок

    Сообщения:
    49
    Симпатии:
    0
    isAlphaNumeric не понимает спецсимволы как буквы? Интересно. Я думал что он приравнивает их к буквам. Значит я ошибался.
    Спасибо, попробую.
     
  4. Юрий Ботов

    Юрий Ботов Moderator Команда форума

    Сообщения:
    994
    Симпатии:
    169
    isAlphaNumeric - это только цифры и буквы алфавита, большие и маленькие. Ничего больше... ( [0-9A-Za-z] )
     
  5. nikolz

    nikolz Гуру

    Сообщения:
    3.277
    Симпатии:
    363
    если надо найти конец строки то поставьте if (EEPROM.read(L)!=0) buffer += char(EEPROM.read(L);
    если надо найти конкретный символ то сравнивайте с ним.
    если надо убрать служебные символы и пробелы то поставьте if (EEPROM.read(L)>32) buffer += char(EEPROM.read(L);
     
  6. Vypra

    Vypra Новичок

    Сообщения:
    49
    Симпатии:
    0
    Закомментировал, все прекрасно работает. Спасибо.
     

Поделиться этой страницей