Здравствуйте, изучая работу передачи Serial данных столкнулся с одной проблемой, не получается записать принимаемые данные с Serial порта в String переменную. С порта Serial я ожидаю обычную текстовую информацию (пример:Hello Word!), размер которой заранее неизвестен. Кусок кода, как это происходит: Код (Text): ////////// char inChar[]={}; char inChar[555]; int z = 0; if (mySerial.available() > 0) { while (mySerial.available() > 0) { inChar[z] = (mySerial.read()); delay(10); z++; } } String stringOne = String(inChar); Serial.println(stringOne); Проблемы с которыми я сталкиваюсь, из mySerial.read() нельзя записывать напрямую в String переменную, потому что в неё вместо текста запишутся Char цифры, и уже из переменной String все эти цифры едва ли предоставляется возможным сконвертировать в нормальный текст. (Если это можно, то тоже подскажите) Далее, записывать можно в переменную char массивов. И вот тут проблема, если обозначить переменную для записи так: char inChar[]={}; То в неё ничего не записывается в большинстве случаев, но иногда записываются обрывки информации. Объяснение этому я так и не смог найти. Если указывать размер массива от балды, но заведомо больше чем примерно должны придти данные, допустим так: char inChar[555]; Тогда данные в него начинают записываться, но дальше, все оставшиеся байты заполняются бинарным мусором... Дальше я уже конвертирую в String всё это дело и вывожу в отладочную консоль: String stringOne = String(inChar); Serial.println(stringOne); Тут варианты... или обрезать из переменной всё, что идёт после \r\n (1310 в char), или как то иначе... Мне кажется с обрезанием это не совсем правильный путь. Буду очень рад, если подскажете как это реализовать правильно.
Может нужно так: Код (C++): String readString; void loop() { .......... char c = mySerial.read(); readString.concat(c); ............ }