Какова цель целого числа howMany в функции wire.onReceive() из примера кода?
В примере чтения master write / slave для проводной библиотеки объявлено целое число howMany, которое никогда не используется.
void setup() {
Wire.begin(8); // присоединиться к шине i2c с адресом #8
Wire.onReceive(receiveEvent); // событие регистрации
Serial.begin(9600); // запустить последовательный для вывода
}
void receiveEvent(int howMany) {
while (1 < Wire.available()) { // перебираем все, кроме последнего
char c = Wire.read(); // получить байт в виде символа
Serial.print(c); // вывести символ
}
int x = Wire.read(); // получить байт как целое число
Serial.println(x);
}
Поскольку функция не работает без нее, я хотел бы знать, какова ее точная цель.Я бы предположил, что это что-то связанное с размером буфера.
@Bogdan Ionescu, 👍0
Обсуждение2 ответа
Лучший ответ:
Он сообщает вам, сколько байтов было получено и, следовательно, сколько вы можете прочитать с помощью Wire.read()
.
Прежде чем вы прочитаете что-либо с помощью Wire.read()
Wire.available()
вернет то же значение. По мере чтения из буфера Wire.available()
будет уменьшаться, но количество останется прежним.
Справочная страница https://www.arduino.cc/en/Reference/WireOnReceive государства:
Параметры
обработчик: функция, которая вызывается, когда подчиненное устройство получает данные; это должно принимать один параметр int (количество байтов, считанных с ведущего устройства) и ничего не возвращать, например:
void MyHandler(int numBytes)
Я предлагаю вам в будущем ознакомиться со справочными страницами для этих функций, прежде чем спрашивать, что они делают.
- Отправка и получение различных типов данных через I2C в Arduino
- Как работают функции вне цикла void?
- Как отображать переменные на 0,96-дюймовом OLED-дисплее с библиотекой u8glib?
- Как отправить строку на мастер с помощью i2c
- Как выбрать альтернативные контакты I2C на ESP32?
- Что означает в I2C «NACK получен»?
- NodeMCU с RFID RC522 и LCD-модулем интерфейса I2C вместе
- Несколько датчиков I2C с одинаковым адресом
Описание проводных команд крайне скудно. Для меня здесь тоже много загадок. Без примеров кодов из foren для меня невозможно сгенерировать работающий код. По этой причине вопрос о том, сколько именно, очень актуален., @User111