Про язык 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, входной параметр - это количество байтов, прочитанных с ведущего устройством.