Несомненно из-за моего отсутствия энциклопедических знаний о C/C++, я оказался в трясине, пытаясь инициализировать несколько экземпляров класса экрана TFT. Экран TFT - Adafruit_SSD1331, и я хотел бы иметь один небольшой элемент управления эскизом более одного из них с идентичным кодом.Объявление нескольких экземпляров класса экрана TFT?
Эти ошибки я получаю:
slapbmp.ino:61:5: error: 'tft' in 'class Adafruit_SSD1331' does not name a type
slapbmp.ino:62:5: error: 'tft' in 'class Adafruit_SSD1331' does not name a type
slapbmp.ino:63:3: error: missing type-name in typedef-declaration
... когда я пытаюсь скомпилировать этот код:
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1331.h>
#include <SD.h>
#include <SPI.h>
// If we are using the hardware SPI interface, these are the pins (for future ref)
#define sclk 13
#define mosi 11
#define rst 9
#define cs 10
#define dc 8
#define cs2 5
#define dc2 4
// Color definitions
#define BLACK 0x0000
#define BLUE 0x001F
#define RED 0xF800
#define GREEN 0x07E0
#define CYAN 0x07FF
#define MAGENTA 0xF81F
#define YELLOW 0xFFE0
#define WHITE 0xFFFF
// to draw images from the SD card, we will share the hardware SPI interface
namespace STD {
typedef struct Adafruit_SSD1331
{
} tft;
}
namespace initScreens {
typedef struct {
Adafruit_SSD1331::tft scr1 = Adafruit_SSD1331(cs, dc, rst);
Adafruit_SSD1331::tft scr2 = Adafruit_SSD1331(cs2, dc2, rst);
};
};
// For Arduino Uno/Duemilanove, etc
// connect the SD card with MOSI going to pin 11, MISO going to pin 12 and SCK going to pin 13 (standard)
// Then pin 4 goes to CS (or whatever you have set up)
#define SD_CS 3 // Set the chip select line to whatever you use (4 doesnt conflict with the library)
#define SD_CS2 2
// the file itself
File bmpFile;
// information we extract about the bitmap file
int bmpWidth, bmpHeight;
uint8_t bmpDepth, bmpImageoffset;
void setup(void) { //...
Так же, как примечание, я пытаюсь использовать структуру, которая позволяет мне не изменять какие-либо файлы * .h.
Боюсь, что все было не так просто, хотя я признаю, что в его коде есть много ошибок. 'slapbmp.ino: 61: 5: ошибка: 'tft' в 'struct STD :: Adafruit_SSD1331' не называет тип slapbmp.ino: 62: 5: ошибка: 'tft' в 'struct STD :: Adafruit_SSD1331' делает не называть тип slapbmp.ino: 63: 3: ошибка: отсутствует имя типа в typedef-декларации' – gustable
@gustable, а я вижу ошибку, которую я совершил. Честно говоря, я просто изменил код здесь, как это было предложено в моем редактировании. В этом коде есть немало вещей, которые могут быть исправлены, может стать хорошим сообщением на http://codereview.stackexchange.com/, как только вы его заработаете. – shuttle87
Я просто посмотрел файл заголовка на github, и я бы, конечно же, попытался инкапсулировать это поведение, я думаю, что обсуждение выходит за рамки ответа здесь, но будет более уместным в отношении codereview, ping me, если вы закончите публикацию там. – shuttle87