Объединить данные Serial, разделенные новыми строками?

У меня есть два Arduino, подключенных через Bluetooth. Один отправляет строку данных, аналогичную 506:507:1\r\n. Данные могут варьироваться примерно в пределах 0:1000:0\r\n. У меня уже есть функции, чтобы разбить эту строку на три переменные. Я отправляю его с одного Arduino по Bluetooth, а второй Arduino получает его через последовательный. Единственная проблема заключается в том, что второй Arduino получает следующее:

5
0
6
:
5
0
7
:
1
"\n"

В конце он добавляет пробел в конце ("\n") Как я могу проанализировать эти данные обратно в строку, аналогичную 506:507:1\r\n, которая все еще может отличаться по длине?

, 👍0

Обсуждение

Прочтите это: https://hackingmajenkoblog.wordpress.com/2016/02/01/reading-serial-on-the-arduino/, @Majenko

Я не понимаю, в чем проблема? Хотя ты, кажется, скучаешь по букве " р? И я не вижу пространства в конце? Вы можете легко сделать его строкой, добавив символы в строку, пока не получите свой конечный символ \n? Может быть https://www.arduino.cc/en/Serial/ReadStringUntil-это простое в использовании решение "все в одном" для вас., @Paul


1 ответ


1

Просто повторите шаги, которые вы предприняли на стороне отправки.

  • Создайте массив символов достаточного размера, а также переменную индекса, чтобы отслеживать ваше положение в массиве. Строка Arduino может быть более удобной, хотя они могут вызвать множество проблем.
  • В цикле используйте функцию available (), чтобы дождаться входящих символов и добавить их в созданный вами массив, используя переменную индекса.
  • Продолжайте идти в цикле, проверяя наличие этого уникального символа (возможно, \n), который сигнализирует об окончании пакета. Добавьте этот последний байт в массив, а затем завершите строку нулем или \0.

Если вы хотите повторно использовать массив для другого пакета, просто установите переменную индекса в 0 и продолжайте.

,