2015-02-10 12 views
6

Sto lavorando su Raspberry pi e java per far lampeggiare il LED utilizzando pi4j, tutto è azzerato e funzionante, il LED lampeggia come indicato nel codice molto, ma quando ho eseguito la seconda volta che provoca il seguente errore, ho searche c'è molta stessa domanda senza risposta chiara come risolverlo, tutto l'aiuto sarebbe apprezzato"Questo pin GPIO esiste già:" Eccezione GPIO 1 alla seconda ora

final GpioController gpio = GpioFactory.getInstance(); 
      final GpioPinDigitalOutput pin = gpio.provisionDigitalOutputPin(
        RaspiPin.GPIO_01, "PinLED", PinState.HIGH); 
      System.out.println("light is: ON"); 
      Thread.sleep(2000); 


      pin.low(); 
      System.out.println("light is: OFF"); 
      Thread.sleep(1000); 


      System.out.println("light is: ON for 1 second"); 
      pin.pulse(1000, true); 

      pin.setShutdownOptions(true, PinState.LOW, PinPullResistance.OFF); 
      gpio.shutdown(); 

Questo è l'errore completo i sto diventando

com.pi4j.io.gpio.exception.GpioPinExistsException: This GPIO pin already exists: GPIO 1 
    com.pi4j.io.gpio.impl.GpioControllerImpl.provisionPin(GpioControllerImpl.java:507) 
    com.pi4j.io.gpio.impl.GpioControllerImpl.provisionDigitalOutputPin(GpioControllerImpl.java:645) 
    com.pi4j.io.gpio.impl.GpioControllerImpl.provisionDigitalOutputPin(GpioControllerImpl.java:672) 
    com.pi4j.io.gpio.impl.GpioControllerImpl.provisionDigitalOutputPin(GpioControllerImpl.java:684) 
    com.restFulService.Controller.LedControl.ledTestFun(LedControl.java:52) 
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    java.lang.reflect.Method.invoke(Method.java:483) 
    org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176) 
    org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:426) 
    org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:414) 
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790) 
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719) 
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644) 
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
    net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:202) 
    net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:180) 
    org.apache.catalina.filters.CorsFilter.handleNonCORS(CorsFilter.java:439) 
    org.apache.catalina.filters.CorsFilter.doFilter(CorsFilter.java:178) 

risposta

12

Hai bisogno di unProvision il tuo pin.

Dopo u chiamata .shutdown(), è necessario eseguire le seguenti operazioni

... 
gpio.shutdown(); 
... 
gpio.unProvisionPin(pin); 
... 

Questo dovrebbe rilasciare riferimento interno di pi4j e ti permettono di provisioning in un secondo momento

+0

Grazie questo ha funzionato .Questo è l'opt e più bella rispondi a questa domanda – Vicky

Problemi correlati