2017-01-14 10 views
0

次のコードは私に小さな問題を与えています。ワンボタンの登録C#でGPIOボタンを押してください

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

温度はデフォルトでは空のリストです。したがって、ボタンを押すたびに「K」が1つ追加されます。 しかし、実際には 'K'が複数回登録されます。

私が欲しいのは、1つのボタンを押すだけで1つの 'K'が登録されるということです。

ありがとうございました!

+1

を'ButtonShort'があまりにも頻繁に呼び出されたようです。ボタンが押されている間は、 'ButtonShort'を呼び出すたびに「K」が1つ追加されます。 –

答えて

0

私は直接C#のお手伝いをすることはできませんが、GPIOアクセスのためにPi4J LibでJavaを使用した場合、同じ問題が発生しました。

ここには、入力ピンの値が変化することによって引き起こされるイベントがあります。私はそのイベントをキャッチし、実際のトリガでなければならないものに応じて、状態が高低であることを日常的にチェックしました。

、Javaのコードはかなりstraigt前方だった:

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); 
    } 
[...] 
関連する問題