我正在尝试为Raspberry Pi的GPIO引脚创建自己的模块,但是如果事情发生了变化(如按下按钮/释放按钮),我想收到.on('something', function() { })
事件。node.js模块 - EventEmitter
python脚本每隔0.01秒发送一个值,如true或false。
module.js
var PythonShell = require('python-shell');
module.exports = {
switch_live: function(pin) {
var status = false;
this.get = (function(){
return status;
});
var options = {
mode: 'text',
args: [pin],
pythonOptions: ['-u']
};
var pyshell = new PythonShell('./data/switch_loop.py', options);
pyshell.on('message', function(message) {
if (message == 'false') {
if (status) {
// EMIT: button released
}
status = false;
} else {
if (!status) {
// EMIT: button pressed
}
status = true;
}
});
return this.status;
},
some_other_funcs: function(pin) {
// ...
}
}
app.js
var module = require('./module.js');
var button = new module.switch_live(10);
该模块可以告诉你该按钮的状态:
// get status of button
var status = button.get(); // returns "true" or "false"
但我想是这样的:
button.on('pressed', function() {
// call this function every time when button is pressed
});
button.on('released', function() {
// call this function every time when button is released
});
谢谢:)
编辑:我没有找到解决方案,因为我需要“module.exports”内的功能。
谢谢帮助我:) – user2850375
@ user2850375当然。不要忘记将答案标记为“已接受”! –
我写了另一个答案来分享我的解决方案。我投了你的答案:) – user2850375