按键处理
来源:互联网 发布:centos安装git服务器 编辑:程序博客网 时间:2024/04/30 08:00
对于按键的单双击、长按等设计,需要使用一些定时器代替延时,提高效率,设计方法有很多种,下面介绍一种中断的处理方法:
1、中断后触发该函数
void Board_keyCallback()
{
if (PIN_getInputValue(Board_KEY_BUTTON))
{
//release button
if (isLastButtonValueLongPress == 1)
{
//skip it
isLastButtonValueLongPress = 0;
return ;
}
sendButtonValue++;
isRefreshButtonValue = BUTTON_REFRESH_MULTICLICK;
}
else
{
//press button
isRefreshButtonValue = BUTTON_REFRESH_LONGPRESS;
isLongPressTimes = 0;
}
此处添加定时器程序代码,定时触发下面的函数。
}
2:、1中定时器触发下面的函数
void Board_keyChangeHandler()
{
if (appKeyChangeHandler == NULL)
{
return;
}
if (isRefreshButtonValue == BUTTON_REFRESH_MULTICLICK)
{
if (sendButtonValue > BUTTONVALUE_TRIPLE_CLICK)
sendButtonValue = BUTTONVALUE_TRIPLE_CLICK;
//此处发送按键状态点击次数给应用函数
(*appKeyChangeHandler)(sendButtonValue);
sendButtonValue = 0;
isRefreshButtonValue = BUTTON_REFRESH_NO_ACTION;
isLongPressTimes = 0;
isLastButtonValueLongPress = 0;
}
else if (isRefreshButtonValue == BUTTON_REFRESH_LONGPRESS)
{
isLongPressTimes++;
if (isLongPressTimes > BUTTON_LONG_PRESS_TIMES)
{ //此处发送按键状态长按给应用函数
(*appKeyChangeHandler)(BUTTONVALUE_LONG_PRESS);
sendButtonValue = 0;
isRefreshButtonValue = BUTTON_REFRESH_NO_ACTION;
isLongPressTimes = 0;
isLastButtonValueLongPress = 1;
}
else
{
Util_restartClock(&keyChangeClock, KEY_DEBOUNCE_TIMEOUT);
}
}
}
以上方法可实现单按键的长按以及多次点击事件。
- 按键处理
- 按键处理
- 按键处理
- 按键处理
- CEdit按键处理
- symbian 按键处理
- 按键事件的处理
- 液晶屏按键处理
- s60按键处理模型
- 按键扫描处理
- MTK 按键处理流程
- 按键事件的处理
- 按键处理:OfferKeyEventL
- android中的按键处理
- js按键处理demo
- Android 按键处理
- 关于Android按键处理
- J2ME按键处理机制
- CDH安装
- ubuntu文件夹颜色设置及vim颜色配置
- 全球顶级应用性能监控管理服务商分析
- hibernate的三种查询
- 品一品茶
- 按键处理
- tar: Removing leading `/’ from member names
- NIO通讯框架之阿堂教程:Mina学习笔记-中级进阶篇(二)
- shell主要命令使用总结
- 网页页面 自动刷新的3种代码
- @2x @3x 加载问题
- Java中使用Base64编码实例
- VS2015编译连接mongodb(mongodb C++ driver)
- Linux下crontab的使用