2012-01-05 67 views
2

我正在使用一個庫,不幸的是,它似乎不再適用於開發人員,或者回復他的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」。

回答

2

所以,

size_t ht1632c::write(uint8_t chr) 

是正確的功能變化。你也應該在

sendframe(); 

行之後添加

return 1; 

。寫預計會返回成功寫入的字符數,因爲在代碼中沒有任何粘貼的方式來確定寫入時是否存在錯誤,所以應該說它的工作原理。

+0

太棒了,感謝您確認我的結果,以及Peter感謝您添加對Arduino術語的引用! – 2012-01-05 22:40:36