CN113422610B - 一种按键检测方法、装置、设备及存储介质 - Google Patents
一种按键检测方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN113422610B CN113422610B CN202110678156.5A CN202110678156A CN113422610B CN 113422610 B CN113422610 B CN 113422610B CN 202110678156 A CN202110678156 A CN 202110678156A CN 113422610 B CN113422610 B CN 113422610B
- Authority
- CN
- China
- Prior art keywords
- key
- target data
- keys
- value
- variable values
- 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.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M11/00—Coding in connection with keyboards or like devices, i.e. coding of the position of operated keys
- H03M11/02—Details
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Input From Keyboards Or The Like (AREA)
Abstract
本申请公开了一种按键检测方法,包括:按照预设周期对各个按键各自的状态检测电平进行更新,并在每次更新之后,按照预设规则构建出用于反映各个按键各自的状态检测电平的目标数据;根据目标数据,确定出各个按键各自的触发变量值,释放变量值以及长按变量值,以完成对各个按键的检测。应用本申请的方案,可以快速,有效地进行按键检测,实现消抖,使用便捷性高。本申请还提供了一种按键检测装置,设备及存储介质,具有相应技术效果。
Description
技术领域
本发明涉及检测技术领域,特别是涉及一种按键检测方法、装置、设备及存储介质。
背景技术
目前,由于使用按键的设备越来越多,每个设备的按键数量也越来越多,使得按键检测处理流程也越来越复杂。
在传统方案中,进行按键检测时,通常是依次进行各个按键的状态判断,即依次检测各个按键对应的GPIO口状态,从而分别做出反应。由于是依次进行各个按键的状态判断,随着按键数量的增多,会不断增加程序代码量,并且,MCU判断出各个按键状态的总耗时也会越来越长。此外,为了进行按键消抖,目前的方案通常是设置延时函数来实现消抖,操作复杂,并且也不利于降低程序运行时间,即其他程序需要利用到按键状态检测结果时,需要等待延时函数执行完毕才能得到按键状态检测结果。
综上所述,如何快速,有效地进行按键检测,实现按键消抖,是目前本领域技术人员急需解决的技术问题。
发明内容
本发明的目的是提供一种按键检测方法、装置、设备及存储介质,以快速,有效地进行按键检测,且实现按键消抖。
为解决上述技术问题,本发明提供如下技术方案:
一种按键检测方法,包括:
按照预设周期对各个按键各自的状态检测电平进行更新,并在每次更新之后,按照预设规则构建出用于反映各个按键各自的状态检测电平的目标数据;
根据所述目标数据,确定出各个按键各自的触发变量值,释放变量值以及长按变量值,以完成对各个按键的检测;
其中,任一按键的所述触发变量值为用于表示该按键是否在当前周期从默认状态变为被按下状态的数值;任一按键的所述释放变量值为用于表示该按键是否在当前周期从被按下状态恢复为默认状态的数值;任一按键的所述长按变量值为用于表示该按键在当前周期是否处于被按下状态的数值。
优选的,所述目标数据至少具有N个bit,以依次反映出N个按键各自的状态检测电平;所述N为不小于2的正整数。
优选的,根据所述目标数据,确定出各个按键各自的触发变量值,释放变量值以及长按变量值,包括:
根据所述目标数据,按照确定出N个按键各自的触发变量值,释放变量值以及长按变量值;
其中,GPIO_Read表示所述目标数据,X为预设值且X的第1bit至第Nbit均为1,Trag的第1bit至第Nbit依次表示第1按键至第N按键各自的触发变量值,Rel的第1bit至第Nbit依次表示第1按键至第N按键各自的释放变量值,Count的第1bit至第Nbit依次表示第1按键至第N按键各自的长按变量值,Read_Data为预设的中间变量;&表示与操作,∧表示异或操作;
N个按键在默认状态下的状态检测电平均为高电平,所述目标数据至少具有N个bit,且第1bit至第Nbit的数值依次为N个按键各自的状态检测电平的电平值。
优选的,根据所述目标数据,确定出各个按键各自的触发变量值,释放变量值以及长按变量值,包括:
根据所述目标数据,按照确定出N个按键各自的触发变量值,释放变量值以及长按变量值;
其中,GPIO_Read表示所述目标数据,X为预设值且X的第1bit至第Nbit均为1,Trag的第1bit至第Nbit依次表示第1按键至第N按键各自的触发变量值,Rel的第1bit至第Nbit依次表示第1按键至第N按键各自的释放变量值,Count的第1bit至第Nbit依次表示第1按键至第N按键各自的长按变量值,Read_Data为预设的中间变量;&表示与操作,∧表示异或操作;
N个按键在默认状态下的状态检测电平均为低电平,所述目标数据至少具有N个bit,且第1bit至第Nbit的数值依次为N个按键各自的状态检测电平的电平值的相反电平值,其中,1的相反电平值为0,0的相反电平值为1。
优选的,各个按键均为超声波治疗仪中的按键。
一种按键检测装置,包括:
目标数据构建模块,用于按照预设周期对各个按键各自的状态检测电平进行更新,并在每次更新之后,按照预设规则构建出用于反映各个按键各自的状态检测电平的目标数据;
检测逻辑模块,用于根据所述目标数据,确定出各个按键各自的触发变量值,释放变量值以及长按变量值,以完成对各个按键的检测;
其中,任一按键的所述触发变量值为用于表示该按键是否在当前周期从默认状态变为被按下状态的数值;任一按键的所述释放变量值为用于表示该按键是否在当前周期从被按下状态恢复为默认状态的数值;任一按键的所述长按变量值为用于表示该按键在当前周期是否处于被按下状态的数值。
优选的,所述目标数据至少具有N个bit,以依次反映出N个按键各自的状态检测电平;所述N为不小于2的正整数。
优选的,检测逻辑模块,具体用于:
根据所述目标数据,按照确定出N个按键各自的触发变量值,释放变量值以及长按变量值;
其中,GPIO_Read表示所述目标数据,X为预设值且X的第1bit至第Nbit均为1,Trag的第1bit至第Nbit依次表示第1按键至第N按键各自的触发变量值,Rel的第1bit至第Nbit依次表示第1按键至第N按键各自的释放变量值,Count的第1bit至第Nbit依次表示第1按键至第N按键各自的长按变量值,Read_Data为预设的中间变量;&表示与操作,∧表示异或操作;
N个按键在默认状态下的状态检测电平均为高电平,所述目标数据至少具有N个bit,且第1bit至第Nbit的数值依次为N个按键各自的状态检测电平的电平值。
一种按键检测设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序以实现上述任一项所述的按键检测方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述的按键检测方法的步骤。
应用本发明实施例所提供的技术方案,构建出的目标数据可以反映出各个按键各自的状态检测电平,后续根据目标数据,便可以确定出各个按键各自的触发变量值,释放变量值以及长按变量值,完成对各个按键的检测,这也就意味着,随着按键数量的增多,本申请调整目标数据即可,实现各个按键的检测的耗时以及程序代码量都不会增加,可以快速,有效地进行按键检测。并且,本申请的方案中,按照预设周期对各个按键各自的状态检测电平进行更新,并在每次更新之后,按照预设规则构建出用于反映各个按键各自的状态检测电平的目标数据,也就是说,在相邻周期之间不会变更目标数据,也就使得本申请的方案无需设置延时函数便可以实现消抖,避免了采用延时函数消抖的操作复杂,增加程序运行时间的缺点。此外,本申请的方案中,确定出了各个按键各自的触发变量值,释放变量值以及长按变量值,针对任一按键,通过其触发变量值便可以直接确定出表按键是否在当前周期从默认状态变为被按下状态,而通过其释放变量值,便可以直接确定出该按键是否在当前周期从被按下状态恢复为默认状态;而通过其长按变量值,便可以直接确定出该按键在当前周期是否处于被按下状态,使得本申请的按键检测结果可以非常方便地被其他程序使用,使用便捷性很高。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明中一种按键检测方法的实施流程图;
图2为本发明一种具体实施方式中的按键触发电路示意图;
图3为本发明中一种按键检测装置的结构示意图。
具体实施方式
本发明的核心是提供一种按键检测方法,按键数量的增多不会增加本申请检测的耗时以及程序代码量,使得本申请可以快速,有效地进行按键检测。本申请的方案无需设置延时函数便可以实现消抖,通过确定出各个按键各自的触发变量值,释放变量值以及长按变量值,使得本申请的按键检测结果可以非常方便地被其他程序使用,使用便捷性很高。
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参考图1,图1为本发明中一种按键检测方法的实施流程图,该按键检测方法可以包括以下步骤:
步骤S101:按照预设周期对各个按键各自的状态检测电平进行更新,并在每次更新之后,按照预设规则构建出用于反映各个按键各自的状态检测电平的目标数据。
具体的,通常可以由控制器来执行本申请的方案,控制器例如可以具体选取为MCU(Micro Controller Unit,微控制单元)。控制器可以对一个或者多个按键进行检测,在实际应用中,通常都是对多个按键进行检测。
本申请描述的按键可以是各类使用按键的设备,在本发明的一种具体实施方式中,各个按键可以均为超声波治疗仪中的按键。超声波治疗仪是一种可以输出一定频率超声波的仪器,超声波是压电陶瓷的机械振动在弹性介质中传播所形成的机械振动波。使用者通过按键,旋转编码开关等方式,可以对超声波治疗仪进行操作。
本申请的方案中,会按照预设周期对各个按键各自的状态检测电平进行更新,也就是说,在单个周期内,不会再更改检测到的各个按键各自的状态检测电平,从而可以有效地实现消抖,即避免出现因为用户手指抖动,或者干扰等原因导致的各个按键各自的状态检测电平不断变化的情况。
预设周期的具体取值可以根据需要进行设定和调整,在一种具体场合中,根据理论分析结合试验结果,可以将预设周期设置为5ms。当然,其他场合中可以根据需要相适应地调整预设周期的具体取值。
每次得到各个按键各自的状态检测电平之后,便可以按照预设规则构建出用于反映各个按键各自的状态检测电平的目标数据。
预设规则可以根据实际需要进行设定,例如一种简单的方式便是当得到的某个按键的状态检测电平为高电平时,将目标数据中对应于该按键的bit位设置为1,反之则设置为0。当然,其他实施方式中预设规则根据实际需要可以设置为其他形式,但可以理解的是,构建出的目标数据,应该要能够反映出各个按键各自的状态检测电平,即按照目标数据,能够确定出各个按键各自的状态检测电平。
步骤S102:根据目标数据,确定出各个按键各自的触发变量值,释放变量值以及长按变量值,以完成对各个按键的检测;
其中,任一按键的触发变量值为用于表示该按键是否在当前周期从默认状态变为被按下状态的数值;任一按键的释放变量值为用于表示该按键是否在当前周期从被按下状态恢复为默认状态的数值;任一按键的长按变量值为用于表示该按键在当前周期是否处于被按下状态的数值。
由于构建出的目标数据可以反映出各个按键各自的状态检测电平,后续根据目标数据,便可以确定出各个按键各自的触发变量值,释放变量值以及长按变量值,完成对各个按键的检测,这也就意味着,随着按键数量的增多,本申请调整目标数据即可,实现各个按键的检测的耗时以及程序代码量都不会增加,可以快速,有效地进行按键检测。
本申请需要根据目标数据,确定出各个按键各自的触发变量值,释放变量值以及长按变量值,对于任一按键而言,该按键的触发变量值可以表示该按键是否在当前周期从默认状态变为被按下状态,释放变量值可以表示该按键是否在当前周期从被按下状态恢复为默认状态,长按变量值可以表示该按键在当前周期是否是处于被按下状态,因此,通过该按键的触发变量值,释放变量值以及长按变量值,便可以非常方便,快速的确定出该按键的当前状态,其他程序对按键检测结果可以直接调用,十分方便。
目标数据的具体构成方式可以根据需要进行设定,在本发明的一种具体实施方式中,目标数据至少具有N个bit,以依次反映出N个按键各自的状态检测电平;N为不小于2的正整数。该种实施方式中,目标数据通过N个bit,依次反映出N个按键各自的状态检测电平,实施时简单方便。并且当需要增加按键数量时,相适应地增加目标数据的长度即可,操作方便。
在本发明的一种具体实施方式中,步骤S102可以具体包括:
根据目标数据,按照确定出N个按键各自的触发变量值,释放变量值以及长按变量值;
其中,GPIO_Read表示目标数据,X为预设值且X的第1bit至第Nbit均为1,Trag的第1bit至第Nbit依次表示第1按键至第N按键各自的触发变量值,Rel的第1bit至第Nbit依次表示第1按键至第N按键各自的释放变量值,Count的第1bit至第Nbit依次表示第1按键至第N按键各自的长按变量值,Read_Data为预设的中间变量;&表示与操作,∧表示异或操作;
N个按键在默认状态下的状态检测电平均为高电平,目标数据至少具有N个bit,且第1bit至第Nbit的数值依次为N个按键各自的状态检测电平的电平值。
该种实施方式中,针对的是N个按键在默认状态下的状态检测电平均为高电平的情况,例如图2的实施方式中,示出了4个按键,分别标示为Key1,Key2,Key3以及Key4,由图2的电路结构可以明显得知,对于这4个按键中的任意按键而言,当该按键为默认状态时,该按键的状态检测电平为高电平,相应的,当该按键为被按下状态时,该按键的状态检测电平为低电平。
在图2的例子中,N=4,则目标数据至少具有4个bit。并且需要说明的是,在实际应用中,目标数据,GPIO_Read,X,Read_Data,Trag,Rel以及Count的长度通常是一致的。
以目标数据为8bit为例对图2的实施方式进行说明,当4个按键均为默认状态时,目标数据的二进制数值可以具体表示为aaaa1111,即目标数据的第1bit至第4bit的数值均为1,依次表示第1按键至第4按键当前均为高电平,即均为默认状态。需要说明的是,此处的第5bit至第8bit的数值均为a,表示的是a的值可以是1也可以是0,并不会影响本发明的实施,因为该种场合中只需要使用目标数据的第1至第4bit,第5bit至第8bit是闲置的,因此数值可以任意设定,同样的,该例子中,GPIO_Read,X,Read_Data,Trag,Rel以及Count的第5bit至第8bit也均可以是闲置的。该种实施方式中目标数据的长度大于N,是考虑到当需要增加按键时,直接使用目标数据中闲置的bit位即可,即目标数据设置了备用的位置。当然,其他场合中,目标数据的长度也可以设置为恰好等于N,当需要增加按键时,再对程序中设定的N以及X等参数进行适应性调整即可,并不影响本发明的实施。
本申请的后文中便于描述,将该实施例中的各个闲置bit位的取值均认为是1,也就是说,当4个按键均没有被按下时,目标数据的二进制数值可以具体表示为11111111,用16进制表示则可以写作0xFF。
X为预设值且X的第1bit至第Nbit均为1,图2的例子中,则要求X的第1bit至第4bit均为1,X例如可以具体表示为11111111,16进制时可以写作0xFF。此时,将目标数据GPIO_Read与X进行与操作,得出的数值再与X进行异或,得到的结果为00000000,用16进制表示则可以写作0x00,将该值赋给Read_Data。得到了Read_Data之后,便将Read_Data与Count进行异或,然后再和Read_Data进行与操作,由于此时的Read_Data为0x00,因此任何值和此时的Read_Data进行与操作结果都为0x00,因此,此时得到的Trag的值也为0x00。然后将Trag和Read_Data进行异或,得到的值为0x00,然后再与Count进行异或,Count的初始值可以为0x00,因此得到的Rel为0x00。最后,将Read_Data赋值给Count,则Count的值为0x00。
可以看出,针对N个按键在默认状态下的状态检测电平均为高电平的场合,如果各个按键都没有被按下,则经过的运算之后,Read_Data,Trag,Rel以及Count的第1至第Nbit均会变为0,即本申请的方案可以在按键未使用时将相关参数自动清零,使得本申请的方案不需要设置专门的清零程序,便于方案的实施,也有利于减少程序代码量。
而当Key1被按下时,由于目标数据的二进制数值此时变成了aaaa1110,因此,通过Read_Data=(GPIO_Read&X)∧X的运算之后,得到的数值为00000001,并赋给Read_Data,即得到的Read_Data变成了0x01。然后进行Trag=Read_Data&(Read_Data∧Count)的运算,得到的数值为00000001,并赋给Trag。然后进行Rel=Read_Data∧Trag∧Count的运算,得到的数值为00000000,并赋给Rel。最后将Read_Data赋给Count,使得Count的值变为00000001。
假设下一个周期,被按下的Key1并未被松开,则Read_Data的值依旧为0x01;Trag的值变为0x00,Rel的值仍然为0x00,Count的值仍为0x01。
之后,当Key1被松开时,经过运算,Read_Data的值为0x00,Trag变为0x00,Rel为0x01,Count为0x00。
便于理解可参阅表1,为Key1在不同状态下的的触发变量值,释放变量值以及长按变量值的变化过程的说明。
表一:
表1中,Trag中对应于Key1的bit值只有在Key1被按下的那个周期会变为1,而Rel中对应于Key1的bit值只有在Key1被松开的那个周期会变为1。Count中对应于Key1的bit值则是只要Key1未被松开,就保持为1。并且可以理解的是,表一中是以key1为例,其余按键与此同理。可以看出,该实施方式中,只需要通过触发变量值Trag,便可以方便地确定出任意1个按键是否在当前周期从默认状态变为被按下状态,通过释放变量值Rel,就可以方便地确定出任意1个按键是否在当前周期从被按下状态恢复为默认状态,通过长按变量值Count,就可以方便地确定出任意1个按键是否在当前周期处于被按下状态。也就使得本申请的按键检测结果可以非常方便地被其他程序使用,使用便捷性很高。
并且,该种实施方式中,只需要经过的运算就可以实现按键检测,程序代码非常少,使得程序运行时间也很短,不会占用控制器的计算资源。
在本发明的一种具体实施方式中,步骤S102可以具体包括:
根据目标数据,按照确定出N个按键各自的触发变量值,释放变量值以及长按变量值;
其中,GPIO_Read表示目标数据,X为预设值且X的第1bit至第Nbit均为1,Trag的第1bit至第Nbit依次表示第1按键至第N按键各自的触发变量值,Rel的第1bit至第Nbit依次表示第1按键至第N按键各自的释放变量值,Count的第1bit至第Nbit依次表示第1按键至第N按键各自的长按变量值,Read_Data为预设的中间变量;&表示与操作,∧表示异或操作;
N个按键在默认状态下的状态检测电平均为低电平,目标数据至少具有N个bit,且第1bit至第Nbit的数值依次为N个按键各自的状态检测电平的电平值的相反电平值,其中,1的相反电平值为0,0的相反电平值为1。
在前述实施方式中,针对的是图2中的N个按键在默认状态下的状态检测电平均为高电平的情况,该种实施方式中,则可以针对N个按键在默认状态下的状态检测电平均为低电平的情况。
该种实施方式中,由于N个按键在默认状态下的状态检测电平均为低电平,因此,并不是直接将各个按键的状态检测电平作为目标数据中的bit值,而是将目标数据的第1bit至第Nbit的数值依次设置为检测到的N个按键各自的状态检测电平的电平值的相反电平值,仍以Key1,Key2,Key3以及Key4为例,当这4个按键均为默认状态时,状态检测电平均为低电平,即均为0,此时目标数据的第1bit至第Nbit便均为1。
该种实施方式中的其余操作与上述实施方式相同,便不再重复说明。
此外,在部分场合中,可能存在部分按键的默认状态下的状态检测电平为高电平,而部分按键的默认状态下的状态检测电平为低电平的情况,针对这种情况,只需要对用于构建目标数据的预设规则进行设定即可。
具体的,针对默认状态下的状态检测电平为高电平的按键,可以直接将状态检测电平的数值作为目标数据中对应的bit位的数值,而针对默认状态下的状态检测电平为低电平的按键,可以取状态检测电平的相反电平值并作为目标数据中对应的bit位的数值。
应用本发明实施例所提供的技术方案,构建出的目标数据可以反映出各个按键各自的状态检测电平,后续根据目标数据,便可以确定出各个按键各自的触发变量值,释放变量值以及长按变量值,完成对各个按键的检测,这也就意味着,随着按键数量的增多,本申请调整目标数据即可,实现各个按键的检测的耗时以及程序代码量都不会增加,可以快速,有效地进行按键检测。并且,本申请的方案中,按照预设周期对各个按键各自的状态检测电平进行更新,并在每次更新之后,按照预设规则构建出用于反映各个按键各自的状态检测电平的目标数据,也就是说,在相邻周期之间不会变更目标数据,也就使得本申请的方案无需设置延时函数便可以实现消抖,避免了采用延时函数消抖的操作复杂,增加程序运行时间的缺点。此外,本申请的方案中,确定出了各个按键各自的触发变量值,释放变量值以及长按变量值,针对任一按键,通过其触发变量值便可以直接确定出表按键是否在当前周期从默认状态变为被按下状态,而通过其释放变量值,便可以直接确定出该按键是否在当前周期从被按下状态恢复为默认状态;而通过其长按变量值,便可以直接确定出该按键在当前周期是否处于被按下状态,使得本申请的按键检测结果可以非常方便地被其他程序使用,使用便捷性很高。
相应于上面的方法实施例,本发明实施例还提供了一种按键检测装置,可与上文相互对应参照。
可参阅图3,该按键检测装置可以包括:
目标数据构建模块301,用于按照预设周期对各个按键各自的状态检测电平进行更新,并在每次更新之后,按照预设规则构建出用于反映各个按键各自的状态检测电平的目标数据;
检测逻辑模块302,用于根据所述目标数据,确定出各个按键各自的触发变量值,释放变量值以及长按变量值,以完成对各个按键的检测;
其中,任一按键的所述触发变量值为用于表示该按键是否在当前周期从默认状态变为被按下状态的数值;任一按键的所述释放变量值为用于表示该按键是否在当前周期从被按下状态恢复为默认状态的数值;任一按键的所述长按变量值为用于表示该按键在当前周期是否处于被按下状态的数值。
在本发明的一种具体实施方式中,所述目标数据至少具有N个bit,以依次反映出N个按键各自的状态检测电平;所述N为不小于2的正整数。
在本发明的一种具体实施方式中,检测逻辑模块302,具体用于:
根据所述目标数据,按照确定出N个按键各自的触发变量值,释放变量值以及长按变量值;
其中,GPIO_Read表示所述目标数据,X为预设值且X的第1bit至第Nbit均为1,Trag的第1bit至第Nbit依次表示第1按键至第N按键各自的触发变量值,Rel的第1bit至第Nbit依次表示第1按键至第N按键各自的释放变量值,Count的第1bit至第Nbit依次表示第1按键至第N按键各自的长按变量值,Read_Data为预设的中间变量;&表示与操作,∧表示异或操作;
N个按键在默认状态下的状态检测电平均为高电平,所述目标数据至少具有N个bit,且第1bit至第Nbit的数值依次为N个按键各自的状态检测电平的电平值。
在本发明的一种具体实施方式中,检测逻辑模块302,具体用于:
根据所述目标数据,按照确定出N个按键各自的触发变量值,释放变量值以及长按变量值;
其中,GPIO_Read表示所述目标数据,X为预设值且X的第1bit至第Nbit均为1,Trag的第1bit至第Nbit依次表示第1按键至第N按键各自的触发变量值,Rel的第1bit至第Nbit依次表示第1按键至第N按键各自的释放变量值,Count的第1bit至第Nbit依次表示第1按键至第N按键各自的长按变量值,Read_Data为预设的中间变量;&表示与操作,∧表示异或操作;
N个按键在默认状态下的状态检测电平均为低电平,所述目标数据至少具有N个bit,且第1bit至第Nbit的数值依次为N个按键各自的状态检测电平的电平值的相反电平值,其中,1的相反电平值为0,0的相反电平值为1。
在本发明的一种具体实施方式中,各个按键均为超声波治疗仪中的按键。
相应于上面的方法和装置实施例,本发明实施例还提供了一种按键检测设备以及一种计算机可读存储介质,可与上文相互对应参照。所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一实施例中所述的按键检测方法的步骤。这里所说的计算机可读存储介质包括随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质。
该按键检测设备可以包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序以实现上述任一实施例中所述的按键检测方法的步骤。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的技术方案及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
Claims (6)
1.一种按键检测方法,其特征在于,包括:
按照预设周期对各个按键各自的状态检测电平进行更新,并在每次更新之后,按照预设规则构建出用于反映各个按键各自的状态检测电平的目标数据;
根据所述目标数据,确定出各个按键各自的触发变量值,释放变量值以及长按变量值,以完成对各个按键的检测;
其中,任一按键的所述触发变量值为用于表示该按键是否在当前周期从默认状态变为被按下状态的数值;任一按键的所述释放变量值为用于表示该按键是否在当前周期从被按下状态恢复为默认状态的数值;任一按键的所述长按变量值为用于表示该按键在当前周期是否处于被按下状态的数值;
所述目标数据至少具有N个bit,以依次反映出N个按键各自的状态检测电平;所述N为不小于2的正整数;
根据所述目标数据,确定出各个按键各自的触发变量值,释放变量值以及长按变量值,包括:
根据所述目标数据,按照确定出N个按键各自的触发变量值,释放变量值以及长按变量值;
其中,GPIO_Read表示所述目标数据,X为预设值且X的第1bit至第Nbit均为1,Trag的第1bit至第Nbit依次表示第1按键至第N按键各自的触发变量值,Rel的第1bit至第Nbit依次表示第1按键至第N按键各自的释放变量值,Count的第1bit至第Nbit依次表示第1按键至第N按键各自的长按变量值,Read_Data为预设的中间变量;&表示与操作,∧表示异或操作;
N个按键在默认状态下的状态检测电平均为高电平,所述目标数据至少具有N个bit,且第1bit至第Nbit的数值依次为N个按键各自的状态检测电平的电平值。
2.根据权利要求1所述的按键检测方法,其特征在于,根据所述目标数据,确定出各个按键各自的触发变量值,释放变量值以及长按变量值,包括:
根据所述目标数据,按照确定出N个按键各自的触发变量值,释放变量值以及长按变量值;
其中,GPIO_Read表示所述目标数据,X为预设值且X的第1bit至第Nbit均为1,Trag的第1bit至第Nbit依次表示第1按键至第N按键各自的触发变量值,Rel的第1bit至第Nbit依次表示第1按键至第N按键各自的释放变量值,Count的第1bit至第Nbit依次表示第1按键至第N按键各自的长按变量值,Read_Data为预设的中间变量;&表示与操作,∧表示异或操作;
N个按键在默认状态下的状态检测电平均为低电平,所述目标数据至少具有N个bit,且第1bit至第Nbit的数值依次为N个按键各自的状态检测电平的电平值的相反电平值,其中,1的相反电平值为0,0的相反电平值为1。
3.根据权利要求1所述的按键检测方法,其特征在于,各个按键均为超声波治疗仪中的按键。
4.一种按键检测装置,其特征在于,包括:
目标数据构建模块,用于按照预设周期对各个按键各自的状态检测电平进行更新,并在每次更新之后,按照预设规则构建出用于反映各个按键各自的状态检测电平的目标数据;
检测逻辑模块,用于根据所述目标数据,确定出各个按键各自的触发变量值,释放变量值以及长按变量值,以完成对各个按键的检测;
其中,任一按键的所述触发变量值为用于表示该按键是否在当前周期从默认状态变为被按下状态的数值;任一按键的所述释放变量值为用于表示该按键是否在当前周期从被按下状态恢复为默认状态的数值;任一按键的所述长按变量值为用于表示该按键在当前周期是否处于被按下状态的数值;
所述目标数据至少具有N个bit,以依次反映出N个按键各自的状态检测电平;所述N为不小于2的正整数;
检测逻辑模块,具体用于:
根据所述目标数据,按照确定出N个按键各自的触发变量值,释放变量值以及长按变量值;
其中,GPIO_Read表示所述目标数据,X为预设值且X的第1bit至第Nbit均为1,Trag的第1bit至第Nbit依次表示第1按键至第N按键各自的触发变量值,Rel的第1bit至第Nbit依次表示第1按键至第N按键各自的释放变量值,Count的第1bit至第Nbit依次表示第1按键至第N按键各自的长按变量值,Read_Data为预设的中间变量;&表示与操作,∧表示异或操作;
N个按键在默认状态下的状态检测电平均为高电平,所述目标数据至少具有N个bit,且第1bit至第Nbit的数值依次为N个按键各自的状态检测电平的电平值。
5.一种按键检测设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序以实现如权利要求1至3任一项所述的按键检测方法的步骤。
6.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至3任一项所述的按键检测方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110678156.5A CN113422610B (zh) | 2021-06-18 | 2021-06-18 | 一种按键检测方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110678156.5A CN113422610B (zh) | 2021-06-18 | 2021-06-18 | 一种按键检测方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113422610A CN113422610A (zh) | 2021-09-21 |
CN113422610B true CN113422610B (zh) | 2023-09-05 |
Family
ID=77789130
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110678156.5A Active CN113422610B (zh) | 2021-06-18 | 2021-06-18 | 一种按键检测方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113422610B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117114032A (zh) * | 2023-07-20 | 2023-11-24 | 深圳市飞易通科技有限公司 | 一种扫码数据传输方法、装置及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012108767A (ja) * | 2010-11-18 | 2012-06-07 | Renesas Electronics Corp | キー入力装置 |
CN104184479A (zh) * | 2014-07-31 | 2014-12-03 | 山东神戎电子股份有限公司 | 一种可避免事件遗漏的按键去抖检测方法 |
CN106027783A (zh) * | 2016-05-20 | 2016-10-12 | 深圳市金立通信设备有限公司 | 一种耳机按键操作的控制方法及终端 |
CN107872230A (zh) * | 2017-08-25 | 2018-04-03 | 广州飞达音响股份有限公司 | 一种可检测多个任意组合按键的扫描检测电路及方法 |
CN110221709A (zh) * | 2019-05-28 | 2019-09-10 | 深圳超酷科技有限公司 | 一种按键检测方法、键盘及按键系统 |
CN111198624A (zh) * | 2018-11-20 | 2020-05-26 | 海能达通信股份有限公司 | 一种按键数据的处理方法、装置、设备及存储介质 |
CN112737557A (zh) * | 2020-12-28 | 2021-04-30 | 歌尔光学科技有限公司 | 基于按键的交互方法、电子设备以及计算机可读存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102331834B (zh) * | 2011-09-06 | 2016-09-14 | 中兴通讯股份有限公司 | 移动终端开机控制方法及移动终端 |
-
2021
- 2021-06-18 CN CN202110678156.5A patent/CN113422610B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012108767A (ja) * | 2010-11-18 | 2012-06-07 | Renesas Electronics Corp | キー入力装置 |
CN104184479A (zh) * | 2014-07-31 | 2014-12-03 | 山东神戎电子股份有限公司 | 一种可避免事件遗漏的按键去抖检测方法 |
CN106027783A (zh) * | 2016-05-20 | 2016-10-12 | 深圳市金立通信设备有限公司 | 一种耳机按键操作的控制方法及终端 |
CN107872230A (zh) * | 2017-08-25 | 2018-04-03 | 广州飞达音响股份有限公司 | 一种可检测多个任意组合按键的扫描检测电路及方法 |
CN111198624A (zh) * | 2018-11-20 | 2020-05-26 | 海能达通信股份有限公司 | 一种按键数据的处理方法、装置、设备及存储介质 |
CN110221709A (zh) * | 2019-05-28 | 2019-09-10 | 深圳超酷科技有限公司 | 一种按键检测方法、键盘及按键系统 |
CN112737557A (zh) * | 2020-12-28 | 2021-04-30 | 歌尔光学科技有限公司 | 基于按键的交互方法、电子设备以及计算机可读存储介质 |
Non-Patent Citations (1)
Title |
---|
4-level direct-detection polarization shift-keying (DD-PolSK) system with phase modulators;E. Hu.etc;IEEE;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113422610A (zh) | 2021-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108133031B (zh) | 一种过滤推荐视频候选结果的方法及装置 | |
CN113422610B (zh) | 一种按键检测方法、装置、设备及存储介质 | |
JP5109935B2 (ja) | プロセッサシステムの動作方法およびプロセッサシステム | |
TW201015431A (en) | Loop control system and method | |
CN110442473B (zh) | 一种非易失性数据存储方法、装置、电子设备及介质 | |
KR101290493B1 (ko) | 선형 피드백-쉬프트 명령을 실행하기 위한 시스템 및 방법 | |
AU2018243118B2 (en) | Polar code encoding and decoding method, sending device and receiving device | |
US5822689A (en) | Circuit and method using data synchronization for battery power conservation in a paging receiver | |
CN106648543B (zh) | 一种随机数生成方法及装置 | |
US7310751B2 (en) | Timeout event trigger generation | |
CN103152475A (zh) | 移动终端上关闭闹钟的方法及移动终端 | |
CN111930651B (zh) | 一种指令执行方法、装置、设备及可读存储介质 | |
JPWO2009028106A1 (ja) | 情報処理装置 | |
CN115061515A (zh) | 温度补偿方法、电路、芯片、及电子设备 | |
CN113625992A (zh) | 基于除法器的任务处理方法、装置、除法器及存储介质 | |
JP3350005B2 (ja) | カウンタの読出し制御装置とその制御方法 | |
CN106649096B (zh) | 基于自动化测试的更改设备信息的方法及装置 | |
CN112367402A (zh) | 面向实时数据应用的智能缓存策略存储方法、装置及设备 | |
TWI670630B (zh) | 主動輸入元件操作方法及對應輸入元件、輸入配置及電腦程式產品 | |
JP2005092430A (ja) | ウォッチドッグタイマ | |
CN112015291A (zh) | 电子设备控制方法及装置 | |
US20070118505A1 (en) | Clearing potentially inadvertent entries in electronic device | |
CN105549961A (zh) | 一种闹钟响铃方法及终端设备 | |
CN115134240B (zh) | 智能场景优化方法、装置、存储介质及电器设备 | |
US11640327B2 (en) | Circuit detection method and data detection circuit |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |