我想通过Java访问我的Pi的GPIO。是的,我知道有Pi4J,但是我需要使用一个叫做RCSwitch-Pi的库(在github上),它可以发送433 what的信号(实际上我相信它可以做更多的事情,但这正是我需要的)
问题是,如果我在普通的c++中使用这个库本身,我就可以控制我的电源插头,我的信号就会被传输。但是,一旦我通过JNI从java使用它,GPIO引脚就再也不会被触发了。我插入LED进行检查,但没有产生电流。它一直走到脚本中调用函数的地方
digitalWrite(this->nTransmitterPin, HIGH);
delayMicroseconds( this->nPulseLength);
}但仅此而已。它实际上并不做"digitalWrite“,但如果不是从Java中调用的话,它就做了。
是的,我使用SUDO权限执行,所以这不是问题所在:-/
另外,这也是出于好奇:
代码中的值为"delayMicroseconds“,变量"nPulseLength”设置为300。这意味着在调用下一个振幅之前,每个振幅都被设置为300ms。所以它可以像下面这样简单:
_ _
| |_| |_ 为了1010或者别的什么。无论如何,433 the的脉冲将要求每个波的长度为60厘米,或者换句话说:
2.30947纳秒*光速= 69.2361688厘米
这意味着GPIO开关必须在2.30纳秒内从0切换到1,再切换回0。对于一个状态切换来说,少于300毫秒是非常糟糕的,不是吗??
只是想知道..。
发布于 2013-10-07 22:06:10
呼叫
if (wiringPiSetup () == -1) {
printf("noWiringPiSetup");
}成功了。它是在本地main函数中调用的,但不是在我的共享库中调用的,因此一切都很好,但GPIO引脚从未被访问过……
https://stackoverflow.com/questions/19212048
复制相似问题