jan*_*mon 24 node.js raspberry-pi
我将一个按钮连接到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
});
Run Code Online (Sandbox Code Playgroud)
有没有任何异步绑定事件的解决方案?
在这个例子中,每当按下按钮时都是如此.
Rus*_*rry 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
Run Code Online (Sandbox Code Playgroud)
您可以根据需要调整计时器.我认为50ms是一个很好的数字,因为如果它更快,人眼不可能发现差异.
归档时间: |
|
查看次数: |
10620 次 |
最近记录: |