Про язык C некоторые не понимают, вопрос в Arduino

Я использую "SparkFun Qwiic Keypad" и изучаю библиотеку, предоставленную SparkFun

В этой функции void receiveEvent(int numberOfBytesReceived) (строки 212)

"numberOfBytesReceived" Какое окончательное значение?

Эта функция используется в другой функции void startI2C() (строки 295).

Но я все еще не знаю, в чем ценность?

Пожалуйста, помогите мне, спасибо вам большое.

https://github.com/sparkfun/Qwiic_Keypad/blob/master/Firmware/Qwiic_KeyPad/Qwiic_KeyPad.ino

1 ответ

Итак, вы сказали: "Эта функция используется другой функцией", что не совсем верно. Что происходит в строке 305:

Wire.onReceive(receiveEvent);

, заключается в том, что receiveEvent передается указателем на функцию. Документация поясняет это дополнительно ( https://www.arduino.cc/en/Reference/WireOnReceive):

Wire.onReceive(handler)

Описание:

Регистрирует функцию, которая будет вызываться, когда ведомое устройство получает передачу от ведущего.

Обработчик параметров:

функция, вызываемая при получении данных ведомым устройством; это должно принимать один параметр int (количество байтов, прочитанных от мастера) и ничего не возвращать, например: void myHandler(int numBytes)

Возврат: Нет

Таким образом, всякий раз, когда ведомое устройство получает передачу от ведущего, вызывается зарегистрированная функция, в данном случае - receiveEvent, входной параметр - это количество байтов, прочитанных с ведущего устройством.

Другие вопросы по тегам