Serial как параметр.
- Войдите на сайт для отправки комментариев
Чт, 28/08/2014 - 14:48
Есть код для Mega, в котором для 4 аппаратных и одного программного Serial выполняется ряд одинаковых для всех портов действий. Код обработки полученных данных от номера порта не зависит, и его я вынес в отдельную функцию.
Возможно ли передать Serial, Serial1...Serial3 в качестве параметра функции?
Как то так
void foo(Serial *p_Serial)
для ленивых, но не рекомендуется:
void foo(Serial &p_Serial)
Буду пробовать. Надеюсь, что ничего не сломаю. :)
Для SoftwareSerial не прокатит, или я ошибаюсь?
Вместо Serial, возможно придётся передавать Stream, это базовый класс для обоих вариантов сериала
В смысле _void foo(Stream *p_Stream)
Нашел класс HardwareSerial. Сделал с ним функцию, но работает она нормально только для одного Serial. Если пишу два её вызова для разные Serial, то ничего чтение происходит только один раз. Остальные порты, для которых оставил код как есть, всё работает. Температура с давлением в цикле тоже читаются.
Сделал в вызове &Serial, а в функции заменил точки на стрелки. Заработало для всех аппаратных.
Я не телепат, если нужна помощь, выкладывайте скетч, только по читайте как его правильно вставить в сообщение, иначе я даже смотреть не буду
Разобрался со всем. :)
Спасибо за пинок в нужном направлении. Результат по ссылки из первого сообщения.
Рекомендую описывать параметр как const String &, иначе у Вас передаётся копия строки, а это лишняя память и когда то её не хватит. Trim можно сделать снаружи.