Как отобразить всю входящую строку с serial monitor в arduino ide?
это мой первый вопрос на этом форуме.
Мне нужно получить строку от последовательного монитора Arduino и отобразить ее, когда связь закончится. У меня есть аналогичная проблема, подобная той, которая обсуждалась в этой теме:
https://electronics.stackexchange.com/questions/45543/how-do-i-receive-an-entire-string-as-opposed-to-1-character-at-a-time-on-the-ard
Только я использую последовательный монитор Arduino вместо RaspberryPi для отправки строк, поэтому я не могу запрограммировать отправителя на прикрепление идентификатора типа '\n' в конце строки.
char inData[20];
char inChar=-1;
byte index = 0;
while (Serial.available() > 0){
ending[1]=ending[1]+1;
if(index < 19){
inChar = Serial.read();
inData[index] = inChar;
index++;
inData[index] = '\0';
Serial.flush();
}
Serial.print(inData);Serial.print("\t");Serial.println();
}
То, что я получаю в консоли, выглядит следующим образом:
M
Me
Mes
Mess
Messa
Messag
Message
Мне нужно отобразить только последнюю строку
Message
Код должен знать, когда входящая строка закончилась, а затем отобразить ее один раз.
Я был бы очень признателен за любую помощь, которую смогу получить.
@Daniel Maydana, 👍4
Обсуждение1 ответ
Лучший ответ:
Если вам действительно нужна веревочка. Попробуйте использовать Serial.ReadString()
. Он вернет полную строку.
Код может выглядеть так:
if(Serial.available() > 0)
{
String message = Serial.readString();
Serial.println(message);
}
Стоит отметить, что Stream::ReadString()
работает с таймаутом, который по умолчанию составляет 1 секунду, но может быть изменен с помощью setTimeout()
., @Edgar Bonet
Спасибо, это именно то, что мне было нужно. Теперь вывод на последовательный монитор-это весь ввод текста. Первый пост, первая проблема решена. Я вам очень благодарна., @Daniel Maydana
- Float печатается только 2 десятичных знака после запятой
- Как получить правильный последовательный порт?
- SoftwareSerial данные недоступны
- Использование Serial.begin() дважды
- Servo_Pointer' was not declared in this scope
- Использование ESP8266 с Arduino Uno - не удается заставить AT-команду работать
- Операторы If/Else на Arduino не выполняются
- Управлять 2 сервоприводами с последовательным считыванием
У вас есть два варианта. Самое надежное-это решить, что конкретный символ будет служить индикатором окончания сообщения. "\n " - это обычный выбор, но вы можете выбрать все, что не собираетесь использовать в самом сообщении. Другой вариант - иметь тайм-аут: если в течение xxx мс больше не было получено никаких символов, то предположим, что сообщение завершено., @Edgar Bonet