Я хочу получить доступ к моему 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 миллисекунд для одного переключателя состояния, не так ли?
просто интересуюсь...
призвание
if (wiringPiSetup () == -1) {
printf("noWiringPiSetup");
}
сделал трюк. Он был вызван в основной функции, но не в моей общей библиотеке, поэтому все прошло отлично, но контакты GPIO никогда не были доступны...