Итак, у меня есть программа на С ++, использующая wiringPi для ожидания потока до нажатия кнопки (на rapsberryPi с использованием GPIO), но при нажатии кнопки она может часто печатать сообщение несколько раз. Я попытался исправить это, поспав несколько секунд в цикле, но это не помогло мне поверить, что это как-то связано с тем, как генерация прерываний вызывает функцию. Любой совет, как я могу решить эту проблему, чтобы функция запускалась только один раз за нажатие кнопки?
#include <stdlib.h>
#include <iostream>
#include <wiringPi.h>
#include <unistd.h>
void printMessage(void) {
std::cout << "Button pressed! hooray" << std::endl;
}
int main(int argc, char const *argv[]) {
wiringPiSetup();
while(true) {
wiringPiISR(3, INT_EDGE_FALLING, &printMessage);//3 is the wiringPi pin #
sleep(3);
}
}