2

我想为 Galileo 使用 node.js mraa 库。我需要设置一个中断。我通过以下方式实现这一目标:

 var param=1;

 var myLed = new mraa.Gpio(2); 

 myLed.dir(mraa.DIR_IN); //set the gpio direction to input

 myLed.isr(mraa.EDGE_BOTH,function f(x){},param );

我得到这个错误

 in method 'Gpio_isr', argument 3 of type 'void (*)(void *)'

此功能的文档说明

 mraa_result_t isr  (   Edge    mode,
  void(*)(void *)   fptr,
  void *    args 
   )        

 Sets a callback to be called when pin value changes

Parameters
mode    The edge mode to set
fptr    Function pointer to function to be called when interupt is triggered
args    Arguments passed to the interrupt handler (fptr)
Returns
Result of operation

我不知道如何设置函数的参数...

4

2 回答 2

0

正如问题中所指出的,您现在可以执行以下操作:

var m = require('mraa')
function h() {
  console.log("HELLO!!!!")
}
x = new m.Gpio(14)
x.isr(m.EDGE_BOTH, h)

您需要在主分支上使用 v0.5.4-134-gd6891e8 或更高版本。您可以使用 npm 在您的板上安装正确的版本,或者只编译表单源(您需要 SWIG 3.x)

npm 安装 mraa

于 2015-02-18T17:47:02.470 回答
0

关于这个有一个未解决的问题。当前的响应是 isr 方法当前不起作用。

链接: https ://github.com/intel-iot-devkit/mraa/issues/110

于 2015-01-28T20:58:28.373 回答