CN104124978A - 一种基于状态机的新型多功能按键检测方法 - Google Patents
一种基于状态机的新型多功能按键检测方法 Download PDFInfo
- Publication number
- CN104124978A CN104124978A CN201410370424.7A CN201410370424A CN104124978A CN 104124978 A CN104124978 A CN 104124978A CN 201410370424 A CN201410370424 A CN 201410370424A CN 104124978 A CN104124978 A CN 104124978A
- Authority
- CN
- China
- Prior art keywords
- key
- state
- button
- state machine
- time
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Input From Keyboards Or The Like (AREA)
Abstract
本发明公开了一种基于状态机的新型多功能按键检测方法,按键检测方法包括以下步骤:对系统配置进行预定义,定义内容包括:系统支持的按键数量、每个按键支持的按键类型、长按识别时间、连发间隔时间和按键端口;扫描按键端口,获取按键端口值,驱动状态机;对按键扫描进行定时中断,刷新和驱动状态机,用来按键消抖并且作为时间基准;对按键类别进行识别,识别按键扫描所获得的按键的事件类型,同时将按键类型和按键值编码。本发明通过用状态机处理按键检测问题,省去传统按键的延时去抖,也不在按键的死等待,实现了效率高、可靠性好、健壮的多功能按键检测。
Description
技术领域
本发明涉及一种按键检测方法,尤其涉及一种基于状态机的新型多功能按键检测方法。
背景技术
在人机交互的应用中,按键扮演着十分重要的角色,对于计算机键盘、手机及计算器等电子产品,工作时必须敲打键盘使得按键触电导通、断开,从而实现信息输入,目前按键做的比较好的就是手机的按键,有长按、短按、连发、还有组合等功能。
通常的按键所用开关为机械弹性开关,当机械触点断开、闭合是,由于机械触点的弹性作用,一个按键开关在闭合是不会马上稳定的接通,在断开时也不会一下子断开,因而在闭合及断开瞬间均伴随有一连串的抖动,它直接影响着系统的稳定性与可靠性,因而在按键检测过程需要进行消抖处理。传统的消抖方式为RS触发器、延时防抖和功能芯片等方式,但这些方式存在着浪费处理器资源、应用范围不广泛、结构复杂的问题。
发明内容
本发明的目的在于克服现有技术的不足,提供一种系统效率高、可靠、健壮的基于状态机的新型多功能按键检测方法。
本发明的目的是通过以下技术方案来实现的:
一种基于状态机的新型多功能按键检测方法,按键检测方法包括以下步骤:
S1. 对系统配置进行预定义,定义内容包括:系统支持的按键数量、每个按键支持的按键类型、长按识别时间、连发间隔时间和按键端口;
S2. 扫描按键端口,获取按键端口值,驱动状态机;
S3. 对按键扫描进行定时中断,刷新和驱动状态机,用来按键消抖并且作为时间基准;
S4. 对按键类别进行识别,识别按键扫描所获得的按键的事件类型,同时将按键类型和按键值编码。
所述定时中断每10ms调用一次按键检测。
所述状态机的状态包括初始态、确认态、释放态和等待释放态。
所述状态机的事件驱动机制包括以下步骤:
S31.状态机处于初始态,若有按键按下则转到状态确认态,并保存当前按键值;
S32.状态机处于确认态时,若无按键按下,触发单键事件,状态机转到初始态并返回按键值,若检测到按键仍按下,则转入按键释放态;
S33.状态机处于释放态,若按键抬起则返回初始态、触发双击事件、回送键值,若按键仍按下,启动计时器,当延时大于定义的长按时别时间时转入等待释放态,计时器清零;
S34.状态机处于等待释放态,若无键按下,则返回初始态,触发长按事件并回送键值,若检测到按键仍按下,启动计时器,当延时大于已设定的连发间隔时间则触发连发事件,返回初始态,计数器清零。
本发明的有益效果是:本发明通过用状态机处理按键检测问题,省去传统按键的延时去抖,也不在在按键的死等待,实现了效率高、可靠性好、健壮的多功能按键检测。
附图说明
图1为本发明一种基于状态机的新型多功能按键检测方法流程图;
图2为本发明一种基于状态机的新型多功能按键检测状态机的事件驱动机制的流程图。
具体实施方式
下面结合附图进一步详细描述本发明的技术方案,但本发明的保护范围不局限于以下所述。
如图1所示,一种基于状态机的新型多功能按键检测方法,按键检测方法包括以下步骤:
S1. 对系统配置进行预定义,定义内容包括:系统支持的按键数量、每个按键支持的按键类型、长按识别时间、连发间隔时间和按键端口;
S2. 扫描按键端口,获取按键端口值,驱动状态机;
S3. 对按键扫描进行定时中断,刷新和驱动状态机,用来按键消抖并且作为时间基准;
S4. 对按键类别进行识别,识别按键扫描所获得的按键的事件类型,同时将按键类型和按键值编码。
所述定时中断每10ms调用一次按键检测。
所述状态机的状态包括初始态、确认态、释放态和等待释放态。
所述状态机的事件驱动机制包括以下步骤:
S31.状态机处于初始态,若有按键按下则转到状态确认态,并保存当前按键值;
S32.状态机处于确认态时,若无按键按下,触发单键事件,状态机转到初始态并返回按键值,若检测到按键仍按下,则转入按键释放态;
S33.状态机处于释放态,若按键抬起则返回初始态、触发双击事件、回送键值,若按键仍按下,启动计时器,当延时大于定义的长按时别时间时转入等待释放态,计时器清零;
S34.状态机处于等待释放态,若无键按下,则返回初始态,触发长按事件并回送键值,若检测到按键仍按下,启动计时器,当延时大于已设定的连发间隔时间则触发连发事件,返回初始态,计数器清零。
Claims (4)
1.一种基于状态机的新型多功能按键检测方法,其特征在于:按键检测方法包括以下步骤:
S1. 对系统配置进行预定义,定义内容包括:系统支持的按键数量、每个按键支持的按键类型、长按识别时间、连发间隔时间和按键端口;
S2. 扫描按键端口,获取按键端口值,驱动状态机;
S3. 对按键扫描进行定时中断,刷新和驱动状态机,用来按键消抖并且作为时间基准;
S4. 对按键类别进行识别,识别按键扫描所获得的按键的事件类型,同时将按键类型和按键值编码。
2.根据权利要求1所述的一种基于状态机的新型多功能按键检测方法,其特征在于:定时中断每10ms调用一次按键检测。
3.根据权利要求1所述的一种基于状态机的新型多功能按键检测方法,其特征在于:所述状态机的状态包括初始态、确认态、释放态和等待释放态。
4.根据权利要求1所述的一种基于状态机的新型多功能按键检测方法,其特征在于:所述状态机驱动包括以下步骤:
S31.状态机处于初始态,若有按键按下则转到状态确认态,并保存当前按键值;
S32.状态机处于确认态时,若无按键按下,触发单键事件,状态机转到初始态并返回按键值,若检测到按键仍按下,则转入按键释放态;
S33.状态机处于释放态,若按键抬起则返回初始态、触发双击事件、回送键值,若按键仍按下,启动计时器,当延时大于定义的长按时别时间时转入等待释放态,计时器清零;
S34.状态机处于等待释放态,若无键按下,则返回初始态,触发长按事件并回送键值,若检测到按键仍按下,启动计时器,当延时大于已设定的连发间隔时间则触发连发事件,返回初始态,计数器清零。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410370424.7A CN104124978B (zh) | 2014-07-31 | 2014-07-31 | 一种基于状态机的多功能按键检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410370424.7A CN104124978B (zh) | 2014-07-31 | 2014-07-31 | 一种基于状态机的多功能按键检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104124978A true CN104124978A (zh) | 2014-10-29 |
CN104124978B CN104124978B (zh) | 2017-09-26 |
Family
ID=51770258
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410370424.7A Expired - Fee Related CN104124978B (zh) | 2014-07-31 | 2014-07-31 | 一种基于状态机的多功能按键检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104124978B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108227885A (zh) * | 2018-01-02 | 2018-06-29 | 郑州云海信息技术有限公司 | 一种模块化设计按键复用功能的方法 |
CN109766014A (zh) * | 2018-12-28 | 2019-05-17 | 惠州市蓝微电子有限公司 | 一种单片机识别按键按击操作的方法 |
CN109814735A (zh) * | 2019-01-25 | 2019-05-28 | 山东超越数控电子股份有限公司 | 按键弹起后的键值发送处理方法及系统 |
CN111628781A (zh) * | 2020-06-17 | 2020-09-04 | 玉林师范学院 | 一种基于rs232串口通信的矩阵键盘 |
CN111880447A (zh) * | 2020-07-22 | 2020-11-03 | 深圳和而泰智能控制股份有限公司 | 基于状态机的多按键状态扫描方法、装置及计算设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1527964A (zh) * | 2001-05-08 | 2004-09-08 | �ʼҷ����ֵ�������˾ | 键盘装置的安全系统和方法 |
CN1953334A (zh) * | 2006-11-17 | 2007-04-25 | 北京中星微电子有限公司 | 一种扫描键盘的方法和系统 |
CN2919362Y (zh) * | 2005-12-01 | 2007-07-04 | 华中科技大学 | 嵌入式鼠标键盘 |
-
2014
- 2014-07-31 CN CN201410370424.7A patent/CN104124978B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1527964A (zh) * | 2001-05-08 | 2004-09-08 | �ʼҷ����ֵ�������˾ | 键盘装置的安全系统和方法 |
CN2919362Y (zh) * | 2005-12-01 | 2007-07-04 | 华中科技大学 | 嵌入式鼠标键盘 |
CN1953334A (zh) * | 2006-11-17 | 2007-04-25 | 北京中星微电子有限公司 | 一种扫描键盘的方法和系统 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108227885A (zh) * | 2018-01-02 | 2018-06-29 | 郑州云海信息技术有限公司 | 一种模块化设计按键复用功能的方法 |
CN109766014A (zh) * | 2018-12-28 | 2019-05-17 | 惠州市蓝微电子有限公司 | 一种单片机识别按键按击操作的方法 |
CN109814735A (zh) * | 2019-01-25 | 2019-05-28 | 山东超越数控电子股份有限公司 | 按键弹起后的键值发送处理方法及系统 |
CN109814735B (zh) * | 2019-01-25 | 2023-04-07 | 超越科技股份有限公司 | 按键弹起后的键值发送处理方法及系统 |
CN111628781A (zh) * | 2020-06-17 | 2020-09-04 | 玉林师范学院 | 一种基于rs232串口通信的矩阵键盘 |
CN111628781B (zh) * | 2020-06-17 | 2023-07-14 | 玉林师范学院 | 一种基于rs232串口通信的矩阵键盘 |
CN111880447A (zh) * | 2020-07-22 | 2020-11-03 | 深圳和而泰智能控制股份有限公司 | 基于状态机的多按键状态扫描方法、装置及计算设备 |
CN111880447B (zh) * | 2020-07-22 | 2021-12-21 | 深圳和而泰智能控制股份有限公司 | 基于状态机的多按键状态扫描方法、装置及计算设备 |
Also Published As
Publication number | Publication date |
---|---|
CN104124978B (zh) | 2017-09-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104124978A (zh) | 一种基于状态机的新型多功能按键检测方法 | |
CN108008888B (zh) | 一种快速切换应用程序及其界面的方法及装置 | |
CN103309756B (zh) | 一种防止应用程序意外退出或中断的方法及移动终端 | |
CN103246445B (zh) | 应用程序的切换方法及通信终端 | |
CN102200874B (zh) | 一种基于触摸屏的按键输入方法和装置 | |
CN102999266A (zh) | 一种移动终端屏幕截屏方法及系统 | |
CN105468217A (zh) | 一种通过电容传感器替代电源键的移动终端及实现方法 | |
RU2008144994A (ru) | Переключение режима работы в терминале мобильной связи | |
CN102566920A (zh) | 电子设备及其控制方法 | |
CN107273009B (zh) | 一种移动终端快速截屏的方法及系统 | |
CN102623224A (zh) | 按键 | |
US20160212258A1 (en) | Method and device for unlocking mobile terminal | |
CN109462767A (zh) | 电视机一位按键多功能的实现方法及系统 | |
CN103995642A (zh) | 一种移动终端的管理方法及移动终端 | |
US20130015986A1 (en) | Keyboard with adjustable keystroke distance and electronic device using the same | |
CN103456541B (zh) | 按键、键盘及其力回馈方法 | |
WO2020238457A1 (zh) | 移动终端、其控制方法及控制装置、计算机可读存储介质 | |
CN105718142B (zh) | 一种状态栏通知消息显示方法及移动终端 | |
CN105389116A (zh) | 用于终端设备的终端应用处理方法和系统、终端设备 | |
WO2017075971A1 (zh) | 一种基于触摸屏无响应的使用方法和设备 | |
US8989801B2 (en) | Mobile phone and key detection device | |
CN103034318A (zh) | 移动终端及其按键触发方法 | |
CN105373305A (zh) | 图像截取方法及装置 | |
CN105048629B (zh) | 继电保护硬压板防误操作告警系统 | |
CN104615957A (zh) | 一种电源模式切换方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170926 Termination date: 20210731 |