【问题标题】:Pi4j Event Listener not triggered by GPIO status changePi4j 事件侦听器未由 GPIO 状态更改触发
【发布时间】:2020-05-09 11:14:54
【问题描述】:

我有一个简单的 Java 程序,它应该监听 GPIO 状态的变化。
我正在使用一个按钮来更改 GPIO 的状态,从终端我可以看到它有效:


尽管如此,事件监听器永远不会被触发。 代码如下:

public class GpioHandler
{
    private static final GpioController gpioController = GpioFactory.getInstance();
    public static ButtonsHandler buttons;

    public GpioHandler()
    {
        buttons = new ButtonsHandler(gpioController, RaspiPin.GPIO_05);
        buttons.listener();
    }
}
public class ButtonsHandler
{
    private static HashMap<String, GpioPinDigitalOutput> buttons = new HashMap<String, GpioPinDigitalOutput>();

    public ButtonsHandler(GpioController gpioController, Pin... pins)
    {
        for(int c = 0; c < pins.length; c++)
        {
            Integer index = c + 1;
            buttons.put(index.toString(), gpioController.provisionDigitalOutputPin(pins[c]));
        }
    }

    public void listener()
    {
        for(HashMap.Entry<String, GpioPinDigitalOutput> pin : buttons.entrySet())
        {
            pin.getValue().addListener(new GpioPinListenerDigital() {
                @Override
                public void handleGpioPinDigitalStateChangeEvent(GpioPinDigitalStateChangeEvent event)
                {
                    System.out.println(" --> GPIO PIN STATE CHANGE: " + pin.getKey() + " = " + event.getState());
                }
            });
        }
    }
}

我使用的是 RaspberryPi 4 和最新版本的 Pi4j (1.2)。
有什么建议吗?

【问题讨论】:

    标签: java raspberry-pi event-listener gpio pi4j


    【解决方案1】:

    好吧,显然只是我太笨了。
    错误是我使用类 GpioPinDigitalOutput 而不是 GpioPinDigitalInput。 我改了,也修改了这一行

    buttons.put(index.toString(), gpioController.provisionDigitalOutputPin(pins[c]));
    

    进入

    buttons.put(index.toString(), gpioController.provisionDigitalInputPin(pins[c], PinPullResistance.PULL_DOWN));
    

    防止值浮动。
    现在一切正常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-14
      • 2013-05-19
      • 1970-01-01
      • 2020-09-06
      • 1970-01-01
      • 2021-01-14
      • 1970-01-01
      相关资源
      最近更新 更多