2014-09-06 93 views
0

我在樹莓派和模塊onoff上使用節點來獲取輸入。 我只想運行函數B,如果A功能是在一分鐘內按頻率過濾輸入

var gpio = require('onoff').Gpio; 
var sensor = new gpio(7, 'in', 'falling'); 
var timeout = 60000; 
var timeOfLastChange; 
sensor.watch(function(err, value) { 
    console.log('Sensor value is now '+ value); 
    var currentTime = new Date(); //2 tick filter 
    if(value == false && timeOfLastChange < currentTime - timeout) var timeOfLastChange = new Date(); 
    if(timeOfLastChange > currentTime - timeout) functionB(); 
}); 
gpio.setup(7, gpio.DIR_IN); 

叫了兩聲但是,這是行不通的。

回答

2

如果您將日期評估更改爲毫秒以匹配您的超時(int爲int),那麼您的日期比較將起作用。是這樣的:

timeOfLastChange.getTime() > (currentTime.getTime() - timeout) 

甚至更​​好,不要使用日期對象,只是時代米利斯這樣的:

currentTime = Date.now(); 
timeOfLastChange = Date.now(); 

那麼你的「時間」是一個類似於整數的數量,匹配你的超時。