raspberry pi — Правильный способ использования стандартной функции c ++ printf () в качестве интерфейса к пользовательской библиотеке для печати на дисплее символов

Сначала немного предыстории. Я приобрел несколько из них Светодиодные дисплеи Avago HCMS-29xx. есть Arduino библиотека для управления ими, но я хочу использовать малиновый пи. Так что я раздвоенный GitHub оригинальной библиотеки и начал портировать.

Порт библиотеки в основном работает с базовым примером печати, но способ передачи строк в библиотеку в лучшем случае взломан. Так что я сделал некоторые поиски и нашел пример показывая, как использовать класс Stream в качестве основы для моего библиотечного класса и использовать printf (), чтобы напечатать символ на моем дисплее.

Вот пример:

//New class setup to drive a display
class NEWLCDCLASS : public Stream //use Stream base class
{
……
// lots of code for the new LCD class - not shown here to keep it simple
.....
//and add this to the end of the class
protected
//used by printf - supply a new _putc virtual function for the new device
virtual int _putc(int c) {
myLCDputc(c); //your new LCD put to print an ASCII character on LCD
return 0;
};
//assuming no reads from LCD
virtual int _getc() {
return -1;
}

и мой код:

#ifndef LedDisplay_h
#define LedDisplay_h
#include <cstring>
#include <cstdint>
#include <cstdio>

namespace LedDisplay
{

class LedDisplay : public Stream
{

//lots of code to drive the display
.....protected:
//used by printf - supply a new _putc virtual function for the new device
virtual int _putc(int c) {
write(c); //your new LCD put to print an ASCII character on LCD
return 0;
};
//assuming no reads from LCD
virtual int _getc() {
return -1;
}};
}
#endif

Но когда я пытаюсь скомпилировать, выдает ошибку

In file included from print.cpp:1:0:
LedDisplayPi.h:20:1: error: expected class-name before ‘{’ token
{
^
print.cpp: In function ‘int main()’:
print.cpp:38:13: error: ‘class LedDisplayNs::LedDisplay’ has no member named ‘printf’; did you mean ‘write’?
myDisplay.printf("%s",helloWorldstring.c_str());
^~~~~~

Что я делаю неправильно? это даже нормальный способ использовать стандартную функцию printf ()?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector