Вывод в порт
- Войдите на сайт для отправки комментариев
Втр, 24/03/2020 - 09:40
Задача: функция должна уметь выводить как в аппаратный Serial так и в SoftwareSerial массив из 8 байт в текстовом читабельном виде. Так будет работать?
#include <SoftwareSerial.h>
SoftwareSerial ss(9, 10);
void octaprint(Stream* uart, byte* arr) {
for (byte _i = 0; _i < 8; _i++) {
if (arr[_i] < 0x10) uart->write('0');
uart->print(arr[_i], HEX);
if (_i < 7) uart->write(' ');
}
}
//...
byte sid[8] = {0,1,2,3,4,5,6,7};
octaprint(&Serial, sid);
octaprint(&ss, sid);
//....
Если уж на NULL не проверяешь, то лучше так
тогда точно ничего пустое не передашь.
Ну т.е. если объявить формальный параметр типа Stream (или Print) то и в Serial и SoftwareSerial вывод будет работать? Собственно в этом вопрос. Просто проверить сейчас нет возможности, а "правильнописание хромает" © ))
Ну т.е. если объявить формальный параметр типа Stream (или Print) то и в Serial и SoftwareSerial вывод будет работать?
вывод будет правильно работать в любого потомка Stream (или Print). Проверено
Если наследуются от Stream - то можно, работать будет. Более того - можно написать свой наследник от Stream - и тоже скармливать туда, если вдруг надо (например, для юнит-теста).
Спасибо ребята, вопрос закрыт.