2015-02-10 33 views
6

Pracuję nad Raspberry pi i java, aby dioda LED migała za pomocą pi4j, wszystko jest wyczyszczone i działa poprawnie, dioda LED miga zgodnie z kodem ale kiedy uruchomić po raz drugi powoduje następujący błąd, mam searche dużo tam jest dużo samym pytaniem bez jasnej odpowiedzi jak go rozwiązać, każda pomoc będzie mile widziane"Ten pin GPIO już istnieje:" Wyjątek GPIO 1 po raz drugi

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

to jest pełna błędów i Otrzymuję

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) 

Odpowiedz

12

Musisz odblokować swój kod PIN.

Po u zadzwonić .shutdown() należy wykonać następujące czynności

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

To powinno uwalniać wewnętrzne odniesienie pi4j i pozwalają jej zastrzegania później

+0

Dzięki tym pracował .To jest opt ​​i najlepszych odpowiedź na to pytanie – Vicky