Я пытаюсь адаптировать библиотеки Arduino HardwareSerial и Print, чтобы они печатали в моем UDP. myudpSerial.print () и .println () работают хорошо, но вызов myupdSerial.write (c) - нет. Соответствующий код в Print.h:
class Print:
{
virtual ~Print() {}
virtual size_t write(uint8_t) = 0; // I suspect I have to do something with this
size_t write(const char *str)
{
if(str == NULL) {
return 0;
}
return write((const uint8_t *) str, strlen(str));
}
virtual size_t write(const uint8_t *buffer, size_t size);
size_t write(const char *buffer, size_t size)
{
return write((const uint8_t *) buffer, size);
}
}
Мой собственный класс выглядит следующим образом:
class UdpSerial: public HardwareSerial{
using HardwareSerial::HardwareSerial;
public:
size_t write(const uint8_t *buffer, size_t size) override;
//size_t write(uint8_t) override = 0; // I suspect I have to override this
};
Это работает, потому что класс Print имеет перегрузки, которые все в конечном итоге используют функцию write (). Но когда я звоню myupdSerial.write('B');
, он говорит мне
error: no matching fucntion call to 'myudpSerial::write(char&)'
и предлагает size_t write(const uint8_t *buffer, size_t size) override;
в качестве кандидата.
Как я уже говорил, я подозреваю, что должен переопределить size_t write(uint8_t) = 0
, но =0
в конце сбивает меня с толку, и я не знаю, как это сделать, и как называется эта конструкция, чтобы я мог ее погуглить.
Предложения приветствуются.