将Arduino库从Arduino 0023转换为1.0时遇到的麻烦

问题描述:

我正在使用一个库,不幸的是,它似乎不再适用于开发人员,或者回复他的Git存储库中的问题。该库用于驱动HT1632C LED矩阵驱动器,虽然它在0022/0023中工作,但它在Arduino 1.0中不起作用。在编译时,我Sketch提供了以下错误:将Arduino库从Arduino 0023转换为1.0时遇到的麻烦

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” 来代替的东西

Line 200: size_t write(uint8_t); //changed to resolve conflict with 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)” and .cpp is “size_t ht1632c :: write(uint8_t chr)” that this will work?

我试过了,它会编译,但我不知道是否将“void”一词替换为“size_t”,或者我需要用“size_t”替换“uint8_t”。

所以,

size_t ht1632c::write(uint8_t chr) 

是正确的功能变化。你也应该在

sendframe(); 

行之后添加

return 1; 

。写预计会返回成功写入的字符数,因为在代码中没有任何粘贴的方式来确定写入时是否存在错误,所以应该说它的工作原理。

+0

太棒了,感谢您确认我的结果,以及Peter感谢您添加对Arduino术语的引用! – 2012-01-05 22:40:36