2015-02-10 6 views
6

Ich arbeite an Raspberry Pi und Java, um die LED mit pi4j blinken zu lassen, alles ist gelöscht und funktionierte gut, die LED blinkt wie im Code aber wenn ich das zweite Mal, führen sie es den folgenden Fehler verursacht, habe ich searche viel es viele gleiche Frage, ohne die klare Antwort ist, wie es zu lösen, wäre jede Hilfe"Dieser GPIO-Pin existiert bereits:" GPIO 1 Ausnahme beim zweiten Mal

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(); 

geschätzt werden Dies ist die komplette Fehler i bekomme ich

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) 

Antwort

12

Sie müssen Ihre Pin unProvision.

Nach u rufen .shutdown() Sie die folgenden

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

Dies sollte pi4j internen Referenz freigeben und ermöglichen es Ihnen, es zu reprovision später

+0

Dank dieser arbeitete .Dies ist die opt und feinste tun müssen Antwort für diese Frage – Vicky

Verwandte Themen