将Arduino库从Arduino 0023转换为1.0时出现问题

Trouble converting an Arduino library from Arduino 0023 to 1.0

本文关键字:Arduino 0时 问题 库从 0023 转换      更新时间:2023-10-16

我使用的库不幸的是,开发人员似乎不再处理或回复Git存储库中的问题。该库用于驱动HT1632C LED矩阵驱动器,虽然它在0022/0023中工作,但在Arduino 1.0中不工作。编译时,我的草图会出现以下错误:

In file included from Final_code__1_0compatible.cpp:7:
C:arduino-1.0librariesht1632c/ht1632c.h:182: error: conflicting return type specified for 'virtual void ht1632c::write(uint8_t)'
C:arduino-1.0hardwarearduinocoresarduino/Print.h:48: error:   overriding 'virtual size_t Print::write(uint8_t)'

引用此网站:http://arduino.cc/forum/index.php?topic=82450.0,我发现了一个与我有同样编译错误的人的评论(但使用了另一个库)。看起来他们的解决方案是用"size_t"替换一些东西

第200行:size_t-write(uint8_t)//已更改以解决与print.h 的冲突

库的.h和.cpp文件中的冲突行看起来是:

.h:

void write(uint8_t chr);

.cpp:

void ht1632c::write(uint8_t chr)
{
    byte x, y;
    if (chr == 'n') {
        //y_cur += font_height;
    } else {
        //x_cur += putchar(x_cur, y_cur, chr, GREEN, PROPORTIONAL);
        //x_cur = 0;
        //y_cur = 0;
    }
    //sendframe();
}

我不是C/C++专家,但如果我将.h更改为"size_t write(uint8_t chr)",将.cpp更改为"size _t ht1632c::write?

我试着这样做,它编译了,但我不知道是用"size_t"替换单词"void",还是需要用"size_t"替换"uint8_t"。

因此,

size_t ht1632c::write(uint8_t chr)

是正确的功能改变。您还应该添加

return 1;

之后

sendframe();

行。write应该返回成功写入的字符数,因为您无法在粘贴的代码中确定写入中是否存在错误,您应该说它有效。