java - "This GPIO pin already exists:"GPIO 1 第二次出现异常

标签 java raspberry-pi raspbian gpio

我正在使用 Raspberry pi 和 java 来使用 pi4j 使 LED 闪烁,一切都已清除并且工作正常,LED 按照代码闪烁但是当我第二次运行时它会导致以下错误,我搜索了很多有很多相同的问题没有明确的答案如何解决它,任何帮助将不胜感激

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

这是我得到的完整错误

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)

最佳答案

您需要取消配置您的密码。

在调用 .shutdown() 之后,您需要执行以下操作

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

这应该会释放 pi4j 的内部引用并允许您稍后重新提供它

关于java - "This GPIO pin already exists:"GPIO 1 第二次出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28425918/

相关文章:

java - 我该如何诊断这个长时间运行的java程序中的内存泄漏?

java - Java进程的退出钩子(Hook)

c# - 我可以在 Raspberry Pi 上运行 C# 应用程序吗?

python - 如何实时处理图像并输出结果的实时视频?

python - Pymodbus – 监听 PLC 设备上的输入变化

linux - 我可以将 pi1b 系统复制到 pi2b 吗?

android - 如何在 Android Things 上启用 Raspberry Pi 3 的第二个 SPI channel ?

java - 在java中将图像写入pdf文件

java - 如何确保我在java中的矩形是一个有效的矩形

java - 有没有办法将 TCPDump 输出到文件,并用 Java 对其进行过滤,每 5 秒用新数据覆盖该文件?