Доступ к wiringPi (GPIO) из Java через JNI

0

Я хочу получить доступ к моему Pi GPIO через Java. Да, я знаю, что есть Pi4J, но мне нужно использовать библиотеку RCSwitch-Pi (на github), которая посылает сигналы 433 МГц (ну, на самом деле, я считаю, что она может сделать больше, чем это, но это то, что мне нужно)

Дело в том, что если я использую библиотеку из обычного c++, я могу контролировать свои сетевые шнуры, и мои сигналы передаются. Но как только я использую его из java через JNI, контакт GPIO никогда не запускается. Я подключил светодиод для проверки, но ток не создан. Он доходит до точки сценария, где он вызывает функции

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

но это все. он фактически не делает "digitalWrite", но он делает это, если не вызывается из Java.

Да, я выполнил с SUDO привилегиями, чтобы не проблема: -/

Кроме того, это из-за любопытства:

в коде говорится "delayMicroseconds", а для переменной "nPulseLength" установлено значение 300. Это означает, что каждая амплитуда устанавливается на 300 мс перед вызовом следующего. так что это может быть так просто:

 _   _
| |_| |_  

за 1010 или что-то в этом роде. В любом случае импульс 433 МГц потребовал бы, чтобы каждая волна имела длину 60 см или в других терминах:

2.30947 наносекунды * скорость света = 69.2361688 сантиметров

что означает, что коммутатор GPIO должен будет переключаться с 0 на 1 и обратно на 0 в течение 2,30 наносекунды. Thats, черт возьми, намного меньше 300 миллисекунд для одного переключателя состояния, не так ли?

просто интересуюсь...

Теги:
raspberry-pi
gpio

1 ответ

0

призвание

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

сделал трюк. Он был вызван в основной функции, но не в моей общей библиотеке, поэтому все прошло отлично, но контакты GPIO никогда не были доступны...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню