【发布时间】:2017-01-10 17:54:29
【问题描述】:
我希望我的按钮执行以下 2 项操作;
- 按下按钮时执行某些操作
- 只要按住某个按钮一定时间(2 秒)就做某事
我正在使用的当前代码看起来有点像这样:
//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 秒?
【问题讨论】:
-
你不能只检查
GpioPinValue.Low是否为真,并检查它与系统时钟的关系吗? -
顺便说一下,如果有人感兴趣,这里是 gpio 命名空间的 MS 参考:msdn.microsoft.com/en-us/library/windows/apps/…
-
“我希望我的按钮执行...” -- 您的规范不准确。大多数事件报告方案使用边缘检测而不是电平检测,因此它们报告开关闭合(例如按钮按下)和开关打开(例如按钮释放)。按下按钮后是否立即执行第一个 "something" 操作(无需等待释放)?那么当按下按钮和保持2秒时,是否应该同时完成"something"动作?如果按住按钮超过 3 秒应该怎么办?重复这个动作?
-
@sawdust,我认为他的问题很清楚。如果按钮被按住 2 秒,然后做一些事情,比如他的代码 cmets 状态。而且我相信有一个用于 gpio 的电平检测器,就像我提到的那样。
-
press 是按住并松开(可以说是快速),按住是按住按钮 2 秒钟然后松开。我想为每个“事件”提供 2 个单独的功能。
标签: c# visual-studio button raspberry-pi gpio