我将一个按钮连接到 Raspberry Pi GPIO 端口:
pi-gpio node js 模块只允许拉取当前状态,而不是等待状态改变:
gpio.read(16, function(err, value) {
if(err) throw err;
console.log(value); // The current state of the pin
});
有没有异步绑定事件的解决方案?
在此示例中,这将是每当按下按钮时。
我将一个按钮连接到 Raspberry Pi GPIO 端口:
pi-gpio node js 模块只允许拉取当前状态,而不是等待状态改变:
gpio.read(16, function(err, value) {
if(err) throw err;
console.log(value); // The current state of the pin
});
有没有异步绑定事件的解决方案?
在此示例中,这将是每当按下按钮时。
不幸的是,使用硬件 GPIO 时没有生成事件。您可以使用发射器创建一个事件,并setInterval
创建一个每隔一段时间检查状态的计时器,然后将一个事件发射到您的应用程序。
var ee = new process.EventEmitter(),
buttonState;
ee.on('stateChange', function(previousValue, value){
console.log('button state changed from', previousValue, 'to', value);
});
setInterval(function(){
gpio.read(16, function(err, value) {
if(err){
ee.emit('error', err);
} else{
if(buttonState !== value){
var previousState = buttonState;
buttonState = value;
ee.emit('stateChange', previousState, value);
}
}
});
}, 50); //check button state every 50ms
您可以根据需要调整计时器。我认为 50 毫秒是一个很好的数字,因为如果它更快,人眼就无法检测到差异。