【问题标题】:Error in conversion from const uint8_t* to uint8_t*从 const uint8_t* 转换为 uint8_t* 时出错
【发布时间】:2022-01-22 02:15:45
【问题描述】:

尝试使用此代码为 Arduino Nano 构建代码。我从const uint8_t* 转换为uint8_t* 时出错。完全理解这个问题,但我不知道如何解决这个问题。

  myOLED.drawBitmap(0, 0, VUMeter, 128, 64);       // draws background

VUMeter 描述为:

const uint8_t VUMeter[] PROGMEM = {...}

来自库 OLED 的函数 drawBitmap:

drawBitmap(int x, int y, uint8_t* bitmap, int sx, int sy);

您能帮我理解解决问题的方法吗?

【问题讨论】:

  • 这肯定是您的库中的一个缺陷,drawBitmap 不会修改位图。一个简单的演员应该会有所帮助。
  • @datafiddler,但我猜它不会从 PROGMEM 读取数组
  • 因为它必须使用访问 PROGMEM 的函数来读取它。 arduino.cc/reference/en/language/variables/utilities/progmem
  • @SembeiNorimaki,仔细阅读
  • @MarkRansom:理论上是的。这就是编译器希望您明确确认的原因。这里是为了绕过库中的错误,而应该修复它。

标签: c++ casting arduino arduino-ide


【解决方案1】:

真正的解决方案是修复和增强您的库。改变

drawBitmap(int x, int y, uint8_t* bitmap, int sx, int sy);

drawBitmap(int x, int y,const uint8_t* bitmap, int sx, int sy);

并添加一个额外的方法

drawBitmap_P (int x, int y, const uint8_t* bitmap, int sx, int sy);

从 PROGMEM 中获取位图字节

【讨论】:

    猜你喜欢
    • 2012-06-07
    • 2012-09-08
    • 2011-10-23
    • 2019-01-09
    • 1970-01-01
    • 2021-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多