Каков наилучший способ перенаправить вывод последовательных данных, например, Serial на Serial1 - PullRequest
0 голосов
/ 03 апреля 2019

Я делаю проект, в котором интерфейс с пользователем зависит от его ситуации, используя Arduino IDE и просто стандартный ATmel328p.(микро)

Некоторые пользователи подключаются через последовательный терминал.(Используется Serial.print) Некоторые пользователи будут взаимодействовать через последовательный терминал, но с Bluetooth.(Используется Serial1.print, micro имеет 2 последовательных интерфейса). У некоторых пользователей будет ЖК-экран.(еще не реализовано)

Я ищу лучший способ перенаправить данные из моего приложения, использующего классы, в нужный интерфейс без необходимости переписывать весь код.

Я думал оиспользуя указатель на функцию и используя его в качестве аргумента в конструкторе объектов моего класса.Поэтому я просто изменяю одну функцию, и все данные направляются правильным образом.

void wrapperfunction(char* data) {Serial.print(data);}

Class SOMETHING {
SOMETHNG(void (output)(char*)){}
}

Я использую символ * для передачи данных, поэтому я отправляю несколько строк.(это выдает предупреждения компиляции для приведения строки к типу char *, но, я думаю, я могу жить с этим?).

хорошо работает со строками, но проблема в том, что моя программа также использует значения типа int и float.Так что просто изменить все операторы Serial.print, использованные для более раннего прототипирования, не работает.Сначала я должен привести все к строковому или символьному типу.

Когда я конвертирую все целые и плавающие числа в строку с помощью функции String (), я также заметил, что это довольно дорого, все строковые функции занимают около 20% моегопамять ...: (

Это заставило меня задуматься, нахожусь ли я на правильном пути для решения этой проблемы ... Я надеюсь, что некоторые более опытные программисты во встроенном C ++ могут дать мне несколько советов о том, что лучше всего делать длятакая проблема.

Заранее спасибо,

PS: мой первый вопрос о SO, мне уже жаль, если я нарушил некоторые правила; -)

...