Проблемы с преобразованием библиотеки Arduino из Arduino 0023 в 1.0 - PullRequest
2 голосов
/ 06 января 2012

Я использую библиотеку, которая, к сожалению, похоже, что разработчик больше не работает или не отвечает на проблемы в своем репозитории Git. Библиотека используется для привода HT1632C светодиодных матричных драйверов, и, хотя она работает в 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)" что это будет работать?

Я пытался это сделать, и он компилируется, но я не знаю, заменяю ли я слово «void» на «size_t» или мне нужно заменить «uint8_t» на «size_t».

1 Ответ

2 голосов
/ 06 января 2012

так,

size_t ht1632c::write(uint8_t chr)

- это правильное изменение функции.Вы также должны добавить

return 1;

сразу после строки

sendframe();

.Ожидается, что write вернет количество успешно написанных символов, так как в коде нет никакого способа вставки, чтобы определить, есть ли ошибка в записи, вы должны просто сказать, что она сработала.

...