我将一个按钮连接到Raspberry Pi GPIO端口:
pi-gpio节点js模块仅允许拉出当前状态但不等待 为了改变状态:
gpio.read(16, function(err, value) {
if(err) throw err;
console.log(value); // The current state of the pin
});
是否存在异步绑定事件的任何解决方案?
在这个例子中,每当按下按钮时都会这样。
答案 0 :(得分:11)
答案 1 :(得分:10)
遗憾的是,使用硬件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
您可以根据需要调整计时器。我认为50ms是一个很好的数字,因为如果它更快,人眼就不可能发现差异。
答案 2 :(得分:3)
答案 3 :(得分:0)