注册一个按钮按下C#中的GPIO按钮

时间:2017-01-14 17:05:26

标签: c# button raspberry-pi gpio

以下代码给了我一个小问题。

  public void ButtonShort()
    {
        lcd.WriteLine(" K ");
        GpioPinValue Readbutton = ButtonS.Read();
        if (buttonS == GpioPinValue.Low)
        {
            Temp = Temp + "K";
        }
    }

Temp是一个默认为空的列表。所以按下每个按钮都应该添加一个' K'。 但它实际上注册了' K'多次。

我想要的是按下一个按钮只能注册一个' K'。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我无法直接帮助您使用C#,但在使用Java和Pi4J Lib进行GPIO访问时,我遇到了类似的问题。

在那里,您有由更改输入引脚值触发的事件。我抓住了那个事件并检查了例程,状态是高还是低,取决于实际的计数触发器。

Java中的代码非常紧张:

public void handleGpioPinInputStateChangeEvent(GpioPinDigitalStateChangeEvent event) {
    if (event.getState() == PinState.HIGH) { 
        [...]
    }
}

[编辑 - 感兴趣...: - )]

也许here中的以下代码会有所帮助:

private void buttonPin_ValueChanged(GpioPin sender, GpioPinValueChangedEventArgs e)
{
    // toggle the state of the LED every time the button is pressed
    if (e.Edge == GpioPinEdge.FallingEdge)
    {
        ledPinValue = (ledPinValue == GpioPinValue.Low) ? 
        GpioPinValue.High : GpioPinValue.Low;
        ledPin.Write(ledPinValue);
    }
[...]