通过JNI从java访问wiringPi(GPIO)

时间:2013-10-06 18:00:59

标签: java c++ raspberry-pi gpio

我想通过Java访问我的Pi的GPIO。是的我知道有Pi4J,但我需要使用一个名为的库 RCSwitch-Pi(在github上),发送433mhz信号(实际上我相信它可以做更多但那就是我需要的)

问题是,如果我从普通的c ++中使用库本身,我可以控制我的电源插头并传输我的信号。 但是一旦我通过JNI从java中使用它,GPIO引脚就永远不会被触发。我插入一个LED来检查,​​但没有创建电流。它一直到脚本调用函数

的位置
digitalWrite(this->nTransmitterPin, HIGH);
      delayMicroseconds( this->nPulseLength);
}

但就是这样。它实际上并没有执行“digitalWrite”,但如果没有从Java调用它就会这样做。

是的,我使用SUDO权限执行,这不是问题: - /

此外,这有点出于好奇:

代码中的

表示“delayMicroseconds”,变量“nPulseLength”设置为300。 这意味着在调用下一个幅度之前,每个幅度设置为300ms。所以它可以很简单:

 _   _
| |_| |_  

对于1010或者其他什么。 无论如何,433mhz的脉冲需要每个波长60厘米或其他方面:

2.30947纳秒*光速= 69.2361688厘米

这意味着GPIO开关必须在2.30纳秒内从0切换到1并返回0。对于一个状态切换来说,这是一个不到300毫秒的地狱不是吗?

只是想知道......

1 个答案:

答案 0 :(得分:0)

致电

if (wiringPiSetup () == -1) {
   printf("noWiringPiSetup");
}

做了这个伎俩。 它在本机主函数中调用,但不在我的共享库中调用,因此一切都很好但从未访问过GPIO引脚...