0

Java 経由で Pi の GPIO にアクセスしたい。はい、Pi4J があることは知っていますが、433mhz 信号を送信する RCSwitch-Pi (github 上) というライブラリを使用する必要があります (実際にはそれ以上のことができると思いますが、それが必要です)

問題は、単純な C++ からライブラリ自体を使用すると、電源プラグを制御でき、信号が転送されることです。しかし、Java から JNI 経由で使用すると、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 に戻る必要があることを意味します。これは、1 つの状態スイッチで 300 ミリ秒を大幅に下回る時間ですよね??

ただ疑問に思っている...

4

1 に答える 1

0

呼び出し

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

トリックをしました。ネイティブのメイン関数で呼び出されましたが、共有ライブラリでは呼び出されなかったため、すべてがうまくいきましたが、GPIOピンにはアクセスされませんでした...

于 2013-10-07T14:06:09.590 に答える