Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用C语言中的GPIO按钮注册一次按键#_C#_Button_Raspberry Pi_Gpio - Fatal编程技术网

C# 用C语言中的GPIO按钮注册一次按键#

C# 用C语言中的GPIO按钮注册一次按键#,c#,button,raspberry-pi,gpio,C#,Button,Raspberry Pi,Gpio,下面的代码给了我一个小问题 public void ButtonShort() { lcd.WriteLine(" K "); GpioPinValue Readbutton = ButtonS.Read(); if (buttonS == GpioPinValue.Low) { Temp = Temp + "K"; } } Temp是一个默认为空的列表。因此,每次按下按

下面的代码给了我一个小问题

  public void ButtonShort()
    {
        lcd.WriteLine(" K ");
        GpioPinValue Readbutton = ButtonS.Read();
        if (buttonS == GpioPinValue.Low)
        {
            Temp = Temp + "K";
        }
    }
Temp是一个默认为空的列表。因此,每次按下按钮都应添加一个“K”。 但它实际上多次注册了“K”

我想要的是,按下一个按钮只注册一个“K”


谢谢你的帮助

我不能直接为您提供C#方面的帮助,但有一次我在使用Java和Pi4J库进行GPIO访问时遇到了类似的问题

在这里,您可以通过更改输入引脚值来触发事件。我捕捉到了那个事件,并在例行程序中检查状态是高还是低,这取决于计数的实际触发因素

Java中的代码非常先进:

public void handleGpioPinInputStateChangeEvent(GpioPinDigitalStateChangeEvent event) {
    if (event.getState() == PinState.HIGH) { 
        [...]
    }
}
[编辑-感兴趣…:-)]

下面的代码可能会有所帮助:

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);
    }
[...]

似乎调用
ButtonShort
太频繁了。只要按下按钮,每次调用
ButtonShort
都会添加一个“K”。