Как создать ссылку на объект внешней печати
Сейчас у меня есть объект:
class Dog
{
public:
Dog(uint8_t I2c, Stream& feedback);
void Speak();
private:
uint8_t _I2c;
Stream& _output;
};
Dog::Dog(uint8_t I2c, Stream& feedback):_output(feedback),_I2c(I2c){}
Dog::Speak(){
_output.println("Hi There.");
}
В настоящее время это построено в моем скетче с помощью:
Dog Dug([I2cPort], Serial);
Как я могу изменить свой класс, чтобы он был совместим с последовательным объектом или ЖК-дисплеем (используя Библиотека RGB LCD от Adafruit)?
Например:
Adafruit_RGBLCDShield lcd = Adafruit_RGBLCDShield();
Dog Dug([I2cPort], Serial);
Dog Sam([I2cPort], lcd);
Дополнительная информация:
Рассматриваемый ЖК-дисплей в основном используется в качестве дисплея пользовательского интерфейса в собственной библиотеке. Эта библиотека обновляет дисплей каждые 1,5 секунды. Поскольку информация из speak();
и пользовательского интерфейса имеет одинаковый приоритет, допустимо, чтобы одна мгновенно перезаписывала другую.
Я открыт для решений, предполагающих изменение конструкции Dog
, единственное требование — это возможность указать print("[something]");
в Dog.cpp
Мне интересно задать этот вопрос об Arduino SE, поскольку я считаю, что существуют различия в том, как вы бы подошли к этому, если бы проблема возникла на традиционном компьютере.
@ATE-ENGE, 👍0
Обсуждение1 ответ
Лучший ответ:
Если ваш класс осуществляет запись только в поток, вы, вероятно, захотите, чтобы ваш класс принимал объект Print вместо объекта Stream.
Библиотека Adafruit наследуется от Print.
Это можно изменить, мне эта линия нужна только для обратной связи с моим COM-портом (последовательным) или с ЖК-дисплеем., @ATE-ENGE
оба являются производными от класса Print. https://arduinoprosto.ru/q/52563/syslogappender-for-log4esp/52575#52575, @Juraj
- lcd.clear не работает с Serial.begin(9600) на Arduino Mega 2560
- Как разделить входящую строку?
- Как эта строка кода определяет, подключен ли последовательный интерфейс?
- Какова максимальная длина провода для последовательной связи между двумя Arduino?
- Последовательная связь между двумя Arduino (запрос и получение)
- Не нашел датчик отпечатков пальцев :( Arduino Mega 2560 Adafruit Fingerprint Sensor
- Чтение SMS с помощью Arduino Uno и SIM800L и печать на LCD (16x2 буквенно-цифровых) с использованием последовательного соединения
- Модуль SIM808: команда определения местоположения GSM (AT+CIPGSMLOC=1,1) дает неверное значение после выполнения команды отправки сообщения (AT+CMGS=+91xxxxxxxx)
это не буфер. только ссылка, @Juraj
Принял к сведению, отредактировал вопрос для ясности., @ATE-ENGE
отлично. теперь вы вставили ответ в заголовок вопроса :-), @Juraj
И вот так вот, это работает. Спасибо за магию., @ATE-ENGE