Вывод в порт
- Войдите на сайт для отправки комментариев
Втр, 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 - и тоже скармливать туда, если вдруг надо (например, для юнит-теста).
Спасибо ребята, вопрос закрыт.