2016-12-26 2 views
0

dans le un projet, une caméra NOIR pi ​​et le travailler par java et éclipse vrai. et doivent allumer la LED IR lorsque la caméra commence à prévisualiser. utilisez donc pi4j dans une nouvelle classe pour allumer et éteindre la LED. mais quand l'appeler la classe pi4j dans la source du panneau de la caméra, puis la caméra n'a pas commencé. ce qui est le problèmeraspbbery pi pi4j ne pouvait pas fonctionner avec v4l2 (pilote de caméra)

pi4j Classe:

import com.pi4j.io.gpio.*; 

public class gpio_prg { 

     private static GpioPinDigitalOutput pin; 
     private GpioController gpio; 

    public void out(int bcmn, boolean state){ 
     System.out.println("gpio controler"); 
       gpio = GpioFactory.getInstance(); 
     if(bcmn == 29){ 
         if(state){ 
          System.out.println("gpio pin"); 
          pin = gpio.provisionDigitalOutputPin(RaspiPin.GPIO_29, "MyLED", PinState.HIGH); 
           pin.setShutdownOptions(true, PinState.LOW); 
           System.out.println("--> GPIO NOIR LED state should be: ON"); 
         }else{ 
           pin.low(); 
           System.out.println("--> GPIO NOIR LED state should be: OFF"); 
         } 
       } 
     } 

erreur:

wiringPiSetup: Must be root. (Did you forget sudo?) 

Répondre

0

Le problème a été résolu avec la source python:

classe java modifiée:

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 

public class gpio_prg { 
    public void out() throws IOException, InterruptedException{ 
     String command = "python /home/pi/noirLedControl.py"; 
     Process proc = Runtime.getRuntime().exec(command); 
     BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream())); 
     System.out.print("led status = "); 
     System.out.println(reader.readLine()); 
     proc.waitFor(); 
     } 
} 

et noirLedControl.py:

import RPi.GPIO as GPIO 

f = open('ledstatus', 'r') 
s = 3 
s = f.read() 
f.close() 
GPIO.setwarnings(False) 
GPIO.setmode(GPIO.BCM) 
GPIO.setup(21, GPIO.OUT) 
if(s == '0'): 
    GPIO.output(21, GPIO.LOW) 
    print "off" 
    s = 1 
else: 
    GPIO.output(21, GPIO.HIGH) 
    print "on" 
    s = 0 

f = open('ledstatus', 'w') 
f.write(str(s)) 
f.close() 

maintenant problème est sur la classe java retour reader.readline() null. et led allumé et éteint non travaillé, mais python /home/pi/noirLedControl.py actuellement exécuté dans le terminal. ma version java lib est "1.8.0_122-ea", donc je lance mon projet par deux java SE 1.8 et 1.7 et le problème n'est pas résolu. et os est debian 8 chacun sait quel est le problème?