я попробовал этот пример: http://arduino.cc/en/Reference/WireRead
Но если я отправлю менее 6 байтов от подчиненного устройства, мастер все равно попытается прочитать все 6 байтов, а затем функция чтения выдаст -1/255. Так что на самом деле доступная функция в этом случае бесполезна, я мог бы использовать до 6.
Любая идея, что я делаю неправильно или как я могу решить эту проблему? Я не могу просто отфильтровать все 255 значений, потому что иногда я их отправляю. Я просто не понимаю поведение библиотеки здесь.
Изменить: странно, что функция чтения возвращает целое число, а не байт. Так что я вижу, это -1 или 255. И это определенно 255 вместо -1. Если я попытаюсь прочитать 7 раз вместо использования доступной функции, последнее чтение будет -1. Ведомый отправляет неправильные байты или мне может понадобиться подтяжка или что здесь происходит?
Мое решение состоит в том, чтобы читать до тех пор, пока чтение не станет -1, вместо использования доступной функции. Но должно быть другое решение.