Чтение с интерфейса (Serial.read()) в одну строку
- Войдите на сайт для отправки комментариев
Ср, 16/07/2014 - 14:23
Всем привет!
Есть следующий код:
void io_init() {
Serial.begin(9600);
}
void io_loop() {
String data = io_read();
if (data != "") {
Serial.println(data);
}
}
String io_read() {
String io_string = "";
while (Serial.available() > 0) {
char io_char = Serial.read();
io_string.concat(io_char);
}
return io_string;
}
void io_print(String data) {
Serial.println(data);
}
В init() выполняется io_init(), а в loop() соответсвенно io_loop(). При передаче на интерфейс текста (например: "тест"), на выходе получаю:
т
е
с
т
То есть, такое впечатление, что из io_read() я получаю лишь один символ, а не всю строку целиком. Подскажите пожалуйста, где я туплю?
Заменил код на следующую конструкцию:
void io_init() { Serial.begin(9600); } void io_loop() { String data = io_read(); if (data != "") { Serial.println(data); } } String io_read() { String io_string = ""; if (Serial.available() > 0) { io_string = Serial.readStringUntil('\n'); } return io_string; } void io_print(String data) { Serial.println(data); }Оказывается есть метод readStringUntil. Помогло. Но честно говоря, хотелось бы всё таки узнать, почему не работал мой первый вариант?
char io_char = Serial.read();char это у на что массив? или
полный он уже