【问题标题】:Trouble converting an Arduino library from Arduino 0023 to 1.0将 Arduino 库从 Arduino 0023 转换为 1.0 时遇到问题
【发布时间】:2012-01-05 20:23:22
【问题描述】:

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

In file included from Final_code__1_0compatible.cpp:7:
C:\arduino-1.0\libraries\ht1632c/ht1632c.h:182: error: conflicting return type specified for 'virtual void ht1632c::write(uint8_t)'
C:\arduino-1.0\hardware\arduino\cores\arduino/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(uint8_t chr)" 这行得通吗?

我试过这样做,它可以编译,但我不知道是用“size_t”替换单词“void”,还是需要用“size_t”替换“uint8_t”。

【问题讨论】:

    标签: c++ c arduino microcontroller


    【解决方案1】:

    所以,

    size_t ht1632c::write(uint8_t chr)
    

    是正确的功能变化。您还应该添加一个

    return 1;
    

    紧接着

    sendframe();
    

    线。 write 应该返回成功写入的字符数,因为您在粘贴的代码中没有任何方法来确定写入是否有错误,您应该说它有效。

    【讨论】:

    • 太棒了,感谢您确认我的结果,感谢彼得添加对 Arduino 术语的引用!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-04
    • 1970-01-01
    • 2014-02-28
    • 2022-01-25
    相关资源
    最近更新 更多