StepanovPlaton
@StepanovPlaton

Ошибка перевода потока байт(символов) в строку на Arduino (код прилагаю). Не понимаю, в чём проблема?

Всем привет. Тут баг какой-то подкрался, никак не могу разобраться.

String AccountsData[100][3];

for(int i=0; i < LenAccountsData; i++) {
      for(int j=0; j < 3; j++) {
        AccountsData[i][j] = ""; // Строка куда будем складывать слово(ячейка массива).
        while(true) {
          char sim = char(EEPROM.read(ReadAddressEEPROM)); // новый символ читаемый из памяти EEPROM
          ReadAddressEEPROM++;
          BootKeyboard.print(sim); // Вот этот вывод работает как надо, то есть в памяти и чтении ошибок нет
          if(sim == ',') { break; } // конец "слова" по знаку ','
          AccountsData[i][j] += sim; // Вот тут баг. Как только не пробывал. Надо эти Char'ы сложить в строку, но не работает
        }
        BootKeyboard.println(AccountsData[i][j]); // Здесь в строке оказывается только первый символ из слова. Почему???
      }
      ReadAddressEEPROM++;
      BootKeyboard.println("");
    }
  • Вопрос задан
  • 336 просмотров
Решения вопроса 2
StepanovPlaton
@StepanovPlaton Автор вопроса
Всем большое спасибо. Проблема решилась с помощью следующего кода
byte input = EEPROM.read(ReadAddressEEPROM);
char sim = char(input);

Я хотел вывести сами байты, и для этого разобрал строку

char sim = char( EEPROM.read(ReadAddressEEPROM));

В итоге всё заработало.
Если честно сам ничего не понял.

Выражаю благодарность всем кто хотел помочь)
Ответ написан
Комментировать
milssky
@milssky
Координатор племени фиолетовых обезьянок
Это просто особенности работы, которые раскрыты по первой ссылке запроса в Гугле "arduino char to string". Просто после первого символа встретился 0, который засчитался как конец строки.
Почитать раз и два
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы