一种基于堆栈的去除键抖动的软件实现方法技术

技术编号:9864736 阅读:177 留言:0更新日期:2014-04-02 21:44
本发明专利技术属于光电产品应用技术领域,具体涉及一种基于堆栈的去除键抖动的软件实现方法。包括以下步骤:(1)打开设备与DSP连接的串口,设置设备主板与DSP两端的串口参数一致;分配读取串口数据的缓冲区;建立堆栈组,清空堆栈组;(2)循环监听按键的操作;(3)按键操作产生的数据,由DSP获取并通过串口发送到设备,存放到设备的临时数据缓冲区中;依次读取缓冲区中的数据;(4)设定一个时间阈值,每隔一个时间阈值,扫描一次数据缓冲区;(5)根据协议中规定的长度读取堆栈组中的每个堆栈栈顶相应数目的元素进行处理;(6)系统退出程序时,进行下一步骤;否则,重复进行步骤(2)~步骤(5);(7)关闭串口,清空堆栈组,释放为接收数据分配的内存资源。

【技术实现步骤摘要】

本专利技术属于光电产品应用
,具体涉及。
技术介绍
通过按键实现人机交互或控制功能是数字电路设计中经常遇到的一种方式。因为按键都是机械开关结构,由于机械触点的弹性及电压突跳等原因,在触点闭合和断开的瞬间会出现电压抖动,导致在按键的初始状态和终止状态之间会产生一个或多个中间状态,如果不加处理,会产生意想不到的后果,尤其是在需要精确控制的地方。去除按键抖动的软件方法有延迟法和抖动法。延迟法需要知道按键抖动的时间长短,扫描时间设置不当会导致等待时间过长或漏掉数据;采样法由于对噪声的不敏感,很容易出现错误。因此,亟需一种基于堆栈的去除键抖动的实现方法,在获取按键的信号后,通过利用堆栈数据结构的后入先出特性,将键抖动产生的中间状态去除,从而达到精确控制的目的。
技术实现思路
本专利技术要解决的技术问题是提供一种基于堆栈的去除键抖动的实现方法,在获取按键的信号后,通过利用堆栈数据结构的后入先出特性,将键抖动产生的中间状态去除,从而达到精确控制的目的。为了实现这一目的,本专利技术采取的技术方案是:,包括以下步骤:(1)打开设备与DSP (数字信号处理器)连接的串口,设置设备主板与DSP两端的以下串口参数一致:波特率、数据位数、奇偶校验、停止位数;分配读取串口数据的缓冲区;建立堆栈组以同时获取N个按键操作产生的数据,N≥1 ;堆栈组的长度为通信协议的条数;清空堆栈组;(2)循环监听按键的操作;(3)按键操作产生的数据,由DSP获取并通过串口发送到设备,存放到设备的临时数据缓冲区中;同步控制对象,将读取操作放在同步控制对象限制的范围内以防止数据缓冲区发生读取和写入引起的冲突;依次读取缓冲区中的数据,依照DSP和设备的通信协议,根据标识位将协议规定长度的数据压入到堆栈组的相应索引位置的堆栈中;控制每条协议的标识位彼此不同,且与协议中的其它信息不同;(4)设定一个时间阈值,每隔一个时间阈值,扫描一次数据缓冲区;在一个时间阈值内,当数据缓冲区中持续有数据到来时,按键操作产生的信号仍在发送,进行步骤(3);在一个时间阈值内,数据缓冲区中没有数据到来,按键操作产生的信号已经全部获取,进行下一步骤;(5)根据协议中规定的长度读取堆栈组中的每个堆栈栈顶相应数目的元素进行处理;步骤(5)中,采取如下措施保证数据的正确性:①在读取数据前,通过对比数据长度对堆栈组中的每个堆栈中的数据进行判断,以确定读取到协议的完整性;②在取得按照协议规定长度的数据后,校验数据的头部、尾部是否与协议规定的相同,数据的校验和是否与校验位相同;分析数据以保证数据的正确性;然后对数据行解析,进行系统规定的操作,同时清空堆栈组;(6)系统退出程序时,进行下一步骤;否则,重复进行步骤(2)?步骤(5);(7)关闭串口,清空堆栈组,释放为接收数据分配的内存资源。进一步的,如上所述的一种基于堆栈的去除键抖动的实现方法,其中:步骤(3)中,同步控制对象采用以下方式中的一种或多种:临界区、信号量、事件。进一步的,如上所述的一种基于堆栈的去除键抖动的实现方法,其中:步骤(3)中,各条协议的长度相同。进一步的,如上所述的一种基于堆栈的去除键抖动的实现方法,其中:步骤(4)中,时间阈值为l(T30ms。进一步的,如上所述的一种基于堆栈的去除键抖动的实现方法,其中:步骤(5)中,采取如下措施保证数据的正确性:①在读取数据前,通过对比数据长度对堆栈组中的每个堆栈中的数据进行判断,以确定读取到协议的完整性;②在取得按照协议规定长度的数据后,校验数据的头部、尾部是否与协议规定的相同,数据的校验和是否与校验位相同。采用本专利技术技术方案的,在切换具有多个状态的开关时,通过串口调试助手可以看到会有多个中间状态。利用该方法,可以正确获取最后一个状态信息,即最终状态。【附图说明】图1是本专利技术的流程示意图。【具体实施方式】下面结合附图对本专利技术技术方案进行进一步详细说明。按键操作后,DSP通过串口和设备进行通信。考虑到按键操作后,无论从初始状态经过多少个中间过程,都会停在终止状态。利用堆栈的后入先出特性,将从串口接收的数据依次压入堆栈中,这样初始状态压入栈底,中间状态依次压入栈中,最终状态会位于栈顶。然后取出栈顶的数据,即为最终状态数据。最后清空整个堆栈,用于下次按键操作的数据处理。如图1所示,本专利技术的具体步骤包括:(I)打开设备与DSP连接的串口,设置设备主板与DSP两端的以下串口参数一致:波特率、数据位数、奇偶校验、停止位数;分配读取串口数据的缓冲区;建立堆栈组以同时获取N个按键操作产生的数据,N≥I ;堆栈组的长度为通信协议的条数;清空堆栈组;(2)循环监听按键的操作;(3)按键操作产生的数据,由DSP获取并通过串口发送到设备,存放到设备的临时数据缓冲区中;采用以下方式中的一种或多种:临界区、信号量、事件来同步控制对象,将读取操作放在同步控制对象限制的范围内以防止数据缓冲区发生读取和写入引起的冲突;依次读取缓冲区中的数据,依照DSP和设备的通信协议,根据标识位将协议规定长度的数据压入到堆栈组的相应索引位置的堆栈中;控制每条协议 的标识位彼此不同,且与协议中的其它信息不同;此具体实施例中,各条协议的长度相同。(4)设定一个时间阈值,每隔一个时间阈值,扫描一次数据缓冲区;在一个时间阈值内,当数据缓冲区中持续有数据到来时,按键操作产生的信号仍在发送,进行步骤(3);在一个时间阈值内,数据缓冲区中没有数据到来,按键操作产生的信号已经全部获取,进行下一步骤;此具体实施例中,时间阈值为l(T30ms。(5)根据协议中规定的长度读取堆栈组中的每个堆栈栈顶相应数目的元素进行处理;步骤(5)中,采取如下措施保证数据的正确性:①在读取数据前,通过对比数据长度对堆栈组中的每个堆栈中的数据进行判断,以确定读取到协议的完整性;②在取得按照协议规定长度的数据后,校验数据的头部、尾部是否与协议规定的相同,数据的校验和是否与校验位相同;分析数据以保证数据的正确性;然后对数据行解析,进行系统规定的操作,同时清空堆栈组;(6)系统退出程序时,进行下一步骤;否则,重复进行步骤(2)~步骤(5);(7)关闭串口,清空堆栈组,释放为接收数据分配的内存资源。本文档来自技高网...

【技术保护点】
一种基于堆栈的去除键抖动的软件实现方法,其特征在于:包括以下步骤:(1)打开设备与DSP连接的串口,设置设备主板与DSP两端的以下串口参数一致:波特率、数据位数、奇偶校验、停止位数;分配读取串口数据的缓冲区;建立堆栈组以同时获取N个按键操作产生的数据,N≥1;堆栈组的长度为通信协议的条数;清空堆栈组;(2)循环监听按键的操作;(3)按键操作产生的数据,由DSP获取并通过串口发送到设备,存放到设备的临时数据缓冲区中;同步控制对象,将读取操作放在同步控制对象限制的范围内以防止数据缓冲区发生读取和写入引起的冲突;依次读取缓冲区中的数据,依照DSP和设备的通信协议,根据标识位将协议规定长度的数据压入到堆栈组的相应索引位置的堆栈中;控制每条协议的标识位彼此不同,且与协议中的其它信息不同;(4)设定一个时间阈值,每隔一个时间阈值,扫描一次数据缓冲区;在一个时间阈值内,当数据缓冲区中持续有数据到来时,按键操作产生的信号仍在发送,进行步骤(3);在一个时间阈值内,数据缓冲区中没有数据到来,按键操作产生的信号已经全部获取,进行下一步骤;(5)根据协议中规定的长度读取堆栈组中的每个堆栈栈顶相应数目的元素进行处理;分析数据以保证数据的正确性;然后对数据行解析,进行系统规定的操作,同时清空堆栈组;(6)系统退出程序时,进行下一步骤;否则,重复进行步骤(2)~步骤(5);(7)关闭串口,清空堆栈组,释放为接收数据分配的内存资源。...

【技术特征摘要】
1.一种基于堆栈的去除键抖动的软件实现方法,其特征在于:包括以下步骤: (1)打开设备与DSP连接的串口,设置设备主板与DSP两端的以下串口参数一致:波特率、数据位数、奇偶校验、停止位数; 分配读取串口数据的缓冲区; 建立堆栈组以同时获取N个按键操作产生的数据,N^l; 堆栈组的长度为通信协议的条数; 清空堆栈组; (2)循环监听按键的操作; (3)按键操作产生的数据,由DSP获取并通过串口发送到设备,存放到设备的临时数据缓冲区中; 同步控制对象,将读取操作放在同步控制对象限制的范围内以防止数据缓冲区发生读取和与入引起的冲突; 依次读取缓冲区中的数据,依照DSP和设备的通信协议,根据标识位将协议规定长度的数据压入到堆栈组的相应索引位置的堆栈中; 控制每条协议的标识位彼此不同,且与协议中的其它信息不同; (4)设定一个时间阈值,每隔一个时间阈值,扫描一次数据缓冲区; 在一个时间阈值内,当数据 缓冲区中持续有数据到来时,按键操作产生的信号仍在发送,进行步骤(3); 在一个时间阈值内,数据缓冲区中没有数据到来,按键操作产生的信号已经全部获取,进行下一步骤; (...

【专利技术属性】
技术研发人员:贾雨生谢晓丹
申请(专利权)人:中国航天科工集团第二研究院二O七所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1