我想通过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毫秒的地狱不是吗?
只是想知道......
答案 0 :(得分:0)
致电
if (wiringPiSetup () == -1) {
printf("noWiringPiSetup");
}
做了这个伎俩。 它在本机主函数中调用,但不在我的共享库中调用,因此一切都很好但从未访问过GPIO引脚...