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”。