2013-10-06 83 views
0

我想通過Java訪問我的Pi的GPIO。是的,我知道有Pi4J,但我需要使用一個名爲 RCSwitch-PI(在github)庫,它發送433MHZ信號(當然實際上我相信它可以比多做但多數民衆贊成什麼,我需要)通過JNI從java訪問wiringPi(GPIO)

的事情是,如果我從普通的C++使用庫本身,我可以控制我的電源插頭並傳輸信號。 但是,一旦我通過JNI從Java使用它,GPIO引腳永遠不會被觸發。我插入一個LED來檢查,​​但沒有電流產生。它一直到腳本的地方,它稱爲功能

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

但多數民衆贊成它。它實際上並不執行「digitalWrite」,但是如果不從Java調用它,它會執行此操作。

是的,我使用sudo權限進行所以這不是問題: -/

此外,這是有點出於好奇:

代碼

是說「delayMicroseconds」和變量「nPulseLength」設置爲300. 這意味着在調用下一個振幅之前,每個振幅設置爲300ms。所以它可以如此簡單:

_ _ 
| |_| |_ 

爲1010或東西。 反正433MHz的脈衝將需要每個波是60釐米長或在其他方面:

2.30947納秒*這將意味着所述GPIO開關光速= 69.2361688釐米

將不得不從0切換到1並在2.30納秒內回到0。那對於一個狀態開關來說,一個小於300毫秒的地獄不是嗎?

只是想知道...

回答

0

調用

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

的伎倆。 它被稱爲本地主要功能,但不是在我的共享庫,因此一切都很好,但GPIO引腳從未被訪問...