Возникли проблемы с пониманием того, что делает "#define GET_STATUS"

Я пытаюсь использовать 4,2-дюймовый электронный бумажный дисплей Waveshare с Adafruit Feather Adalogger M0, но у меня возникли проблемы с двумя отдельными экземплярами #define GET_STATUS, определяемыми по-разному в разных местах. В частности, в Демо-библиотеке (скачать) для дисплея Waveshare один файлов (epd4in2.h) определяет GET_STATUS как 0x71. Однако в файле (USBCore.h), который я загрузил из диспетчера плат в ArduinoIDE, чтобы иметь возможность поддерживать Feather Adalogger, GET_STATUS определяется как 0.

Я пробовал возиться со значениями, чтобы посмотреть, решит ли проблема их совпадение (как 0x71, так и 0), но это ничего не изменило. Я не могу найти никакой информации о том, что GET_STATUS вообще, поэтому я не уверен, что я могу даже попытаться исправить эту проблему. Кроме того, я не могу найти ни одного случая использования GET_STATUS, поэтому я не уверен, каково его значение. Итак, в основном, мои вопросы таковы: 1) каково значение GET_STATUS и 2) как я могу согласовать его использование по-разному в двух разных местах?

Ниже приведен код, который я пытаюсь запустить (это демонстрационный код с Waveshare), и библиотеки, отличные от "<SPI.h>" находятся в демонстрационной библиотеке, загруженной с Waveshare.

#include <SPI.h>
#include "epd4in2.h"
#include "imagedata.h"
#include "epdpaint.h"

#define COLORED     0
#define UNCOLORED   1

void setup() {
  // поместите сюда код установки для однократного запуска:
  Serial.begin(9600);
  Epd epd;

  if (epd.Init() != 0) {
    Serial.print("e-Paper init failed");
    return;
  }

  /* This clears the SRAM of the e-paper display */
  epd.ClearFrame();

/**
* Из-за недостатка оперативной памяти в Arduino UNO буфер кадров не допускается.
* В этом случае выделяется меньший буфер изображения, и вы должны
* обновить частичное отображение несколько раз.
* 1 байт = 8 пикселей, поэтому вам нужно установить 8*N пикселей за раз.
*/
  unsigned char image[1500];
  Paint paint(image, 400, 28);    // ширина должна быть кратна 8

  paint.Clear(UNCOLORED);
  paint.DrawStringAt(0, 0, "e-Paper Demo", &Font24, COLORED);
  epd.SetPartialWindow(paint.GetImage(), 100, 40, paint.GetWidth(), paint.GetHeight());

  paint.Clear(COLORED);
  paint.DrawStringAt(100, 2, "Hello world", &Font24, UNCOLORED);
  epd.SetPartialWindow(paint.GetImage(), 0, 64, paint.GetWidth(), paint.GetHeight());
  
  paint.SetWidth(64);
  paint.SetHeight(64);

  paint.Clear(UNCOLORED);
  paint.DrawRectangle(0, 0, 40, 50, COLORED);
  paint.DrawLine(0, 0, 40, 50, COLORED);
  paint.DrawLine(40, 0, 0, 50, COLORED);
  epd.SetPartialWindow(paint.GetImage(), 72, 120, paint.GetWidth(), paint.GetHeight());
  
  paint.Clear(UNCOLORED);
  paint.DrawCircle(32, 32, 30, COLORED);
  epd.SetPartialWindow(paint.GetImage(), 200, 120, paint.GetWidth(), paint.GetHeight());

  paint.Clear(UNCOLORED);
  paint.DrawFilledRectangle(0, 0, 40, 50, COLORED);
  epd.SetPartialWindow(paint.GetImage(), 72, 200, paint.GetWidth(), paint.GetHeight());

  paint.Clear(UNCOLORED);
  paint.DrawFilledCircle(32, 32, 30, COLORED);
  epd.SetPartialWindow(paint.GetImage(), 200, 200, paint.GetWidth(), paint.GetHeight());

  /* This displays the data from the SRAM in e-Paper module */
  epd.DisplayFrame();

  /* This displays an image */
  epd.DisplayFrame(IMAGE_BUTTERFLY);

  /* Deep sleep */
  epd.Sleep();
}

void loop() {
  // поместите сюда ваш основной код для многократного запуска:

}

Когда я запускаю код, я получаю следующие сообщения

In file included from /home/beingpool/Arduino/epd4in2-demo/epd4in2-demo.ino:28:
/home/<user>/Arduino/libraries/epd4in2/epd4in2.h:64: warning: "GET_STATUS" redefined
   64 | #define GET_STATUS                                  0x71
      | 
In file included from /home/beingpool/.arduino15/packages/adafruit/hardware/samd/1.7.11/cores/arduino/Arduino.h:157,
                 from /home/beingpool/.var/app/cc.arduino.IDE2/cache/arduino/sketches/96EFEDEA56FF573B678089A960FFC685/sketch/epd4in2-demo.ino.cpp:1:
/home/beingpool/.arduino15/packages/adafruit/hardware/samd/1.7.11/cores/arduino/USB/USBCore.h:23: note: this is the location of the previous definition
   23 | #define GET_STATUS     0
      | 

, 👍2

Обсуждение

Я обновил вопрос, чтобы включить сообщение об ошибке, которое я получаю при компиляции кода. Честно говоря, я не слишком много знаю о проблеме, которую я пытаюсь решить, я в первую очередь пытаюсь понять, в чем проблема. Мне кажется, что эти два файла, которые определяют GET_STATUS, должны иметь два разных значения, и я не знаю, как заставить их работать вместе с одним определением., @BeingPool

прочитать вторую строчку сообщения, @jsotola


1 ответ


Лучший ответ:

0

В GET_STATUS нет общего значения. По-видимому, обе библиотеки используют один и тот же идентификатор для разных целей.

Если вы не используете GET_STATUS в своем скетче, вы можете удалить определение перед включением "epd4in2.h", например так:

#include <SPI.h>
#undef GET_STATUS
#include "epd4in2.h"

// ...
,

Спасибо, это ответ на мой вопрос, @BeingPool