我希望我的按钮可以执行以下两项操作;
我正在使用的当前代码看起来有点像这样:
//Comfirming a letter or sending the word.
private void btnRightValueChanged(GpioPin sender, GpioPinValueChangedEventArgs e)
{
//if button is pressed it will confirm a letter
if (e.Edge == GpioPinEdge.FallingEdge)
{
//code to confirm letter
ConfirmLetter();
//if(buttonHeldForAWhile)
//{
//Send message
//SendWord();
//}
}
}
但是如何检查按钮是否保持2或3秒?
答案 0 :(得分:0)
我找到了一种方法来解决我的问题,使用秒表来衡量按下按钮的时间。
在我们的命名空间之上,我们需要添加它以便我们使用Stopwatch类。
using System.Diagnostics;
现在我们要通过以下方式宣布秒表:
Stopwatch stopWatch;
按下按钮时,我的代码将使用FallingEdge
选择该按钮。当它被按下时我还想要它创建一个新的秒表并启动它。
释放按钮时,由RisingEdge
检查。我停止计时器并获得2个事件之间的时间。然后我比较if语句中按下的时间,以便我可以决定如何处理buttonpress。在这种情况下SendWord,或附加当前字符并预览它。
//Comfirming the chosen letter.
private void btnRightValueChanged(GpioPin sender, GpioPinValueChangedEventArgs e)
{
if (e.Edge == GpioPinEdge.FallingEdge)
{
stopWatch = new Stopwatch();
stopWatch.Start();
}
if (e.Edge == GpioPinEdge.RisingEdge)
{
stopWatch.Stop();
long duration = stopWatch.ElapsedMilliseconds;
if (duration > 2000 )
{
SendWord();
}
else
{
//Add the current character to the word
_currentWordSB.Append(Convert.ToString(_currentChar));
// //Reset currentChar aswell
_currentChar = ' ';
// //The user confirmed the morse sequence and wants to start a new one, so we reset it.
_morseCode.Clear();
// //Preview the word
PreviewLetter();
}
}
}
如果有更好的方法来解决我的问题,请告诉我,但到目前为止,这个解决方案对我有用。
我需要这个,因为我正在使用通过按钮输入摩尔斯电码的Raspberry Pi项目。然后必须在LCD屏幕上显示该输入。如果用户对他的输入感到满意,他可以通过按住右键2秒钟将其发送给其他用户。