したがって、ボタンが押されるまで(GPIOを使用するrapsberryPiで)wiringPiを使用してスレッドをスリープさせるC ++プログラムがありますが、ボタンが押されると、メッセージが複数回出力されることがよくあります。ループ内で数秒間スリープすることでこれを改善しようとしましたが、これは、割り込み生成が関数を呼び出す方法に関係があると信じるのに役立ちませんでした。ボタンを押すたびに関数が1回だけ実行されるように、これを解決する方法についてのアドバイスはありますか?
#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);
}
}