0

我想通过 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。这意味着在调用下一个幅度之前,每个幅度都设置为 300 毫秒。所以它可能很简单:

 _   _
| |_| |_  

1010什么的。无论如何,433mhz 脉冲需要每个波长 60cm,或者换句话说:

2.30947 纳秒 * 光速 = 69.2361688 厘米

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

就是想...

4

1 回答 1

0

打电话

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

成功了。它是在本机主函数中调用的,但不是在我的共享库中调用的,因此一切正常,但从未访问过 GPIO 引脚......

于 2013-10-07T14:06:09.590 回答