一种用于数字示波器触摸屏的多点触控方法与流程

文档序号:12469144阅读:671来源:国知局

本发明涉及数字示波器领域,具体涉及一种用于数字示波器触摸屏的多点触控方法。



背景技术:

在数字示波器中,为了方便用户使用,提供友好的操作界面,常采用外接触摸屏的方式。触摸屏主要包括电阻式和电容式两种。电阻式触摸屏是通过压力感应进行工作的。将矩形区域中触摸点(X,Y)的物理位置转换为代表X坐标和Y坐标的电压,电信号经过转换电路送到处理器,通过运算转化为屏幕上的X、Y坐标值。电阻式触摸屏的成本较为低廉,若将其设计成多点触控,当两点同时受压时,屏幕的压力变得不平衡,导致触控出现误差,因而多点触控的实现程度较难。电容式触摸屏是利用人体的电流感应进行工作的。当手指触摸时,由于人体电场,手指和触摸屏表面形成一个耦合电容,对于高频电流来说,电容是直接导体,于是手指从接触点吸走一个很小的电流,控制器通过对电容屏四个角上的电极电流比例的精确计算,得到触摸点的位置。电容屏通过将屏幕分块,在每一个区域里设置一组独立工作的互电容模块,可以独立检测到各区域的触控情况,经过处理后即实现了多点触控。

目前国内的示波器,提供触摸屏操作的产品较少,主要是以键盘配合菜单的操作方式。即使有部分的示波器产品提供了触摸屏的操作方式,也基本仅限于单点触摸的工作方式,诸如波形水平及垂直缩放、水平滑动、垂直平移的功能均未提供。



技术实现要素:

针对现有的数字示波器外接触摸屏只能单点触摸的问题,本发明提供了一种用于数字示波器触摸屏的多点触控方法。

本发明采用以下的技术方案:

一种用于数字示波器触摸屏的多点触控方法,数字示波器通过USB接口外接有触摸屏,触摸屏的多点触控方法包括:

步骤1:初始化,通过系统函数GetSystemMetrics(SM_DIGITIZER)检测触摸屏是否接入示波器,若电容触摸屏接入示波器,则通过系统函数GetSystemMetrics(SM_MAXIMUMTOUCHES)得到触摸屏支持的触控输入数量;

步骤2:功能注册,在需要响应多点触控的窗口类中,通过系统函数RegisterTouchWindow()进行触控操作注册,得到触控操作时的WM_TOUCH消息;

步骤3:消息响应,添加WM_TOUCH消息响应函数,得到WM_TOUCH消息中传递的触控点数量及触控点数据结构信息,从触控点数据结构信息中得到当前的触摸状态,触摸状态包括按下、移动和抬起三个操作状态,当检测到TOUCHEVENTF_DOWN时,记录当前为按下状态;当检测到TOUCHEVENTF_MOVE时,记录当前为移动状态;当检测到TOUCHEVENTF_UP时,记录当前为抬起状态,并同时记录各状态的坐标值;

步骤4:判断触控点数据结构信息是否为抬起状态,若为抬起状态,则执行步骤5;否则执行步骤3;

步骤5:判断得到的触控点数量是否为1,若触控点数量为1,则为单点移动操作,执行步骤6;若触控点数量不为1,则为两点缩放操作,执行步骤7;

步骤6:单点移动,判断按下状态到抬起状态过程中的X方向及Y方向移动的距离,若X方向移动的距离大于Y方向移动的距离,则为水平滑动,若抬起时的X坐标大于按下时的X坐标,则向右移动,反之则向左移动;若X方向移动的距离小于Y方向移动的距离,则为垂直移动,若抬起时的Y坐标小于按下时的Y坐标,则向上平移,反之则向下平移;

步骤7:两点缩放,分别计算两个触控点的X方向及Y方向移动的距离,分别记为X1、Y1和X2、Y2,若X1大于Y1并且X2大于Y2,则执行水平缩放,即改变示波器的时基,若第一个触控点对应的抬起时的X坐标小于其按下时的X坐标,则减小示波器的时基,执行水平放大功能,反之则增大示波器的时基,执行水平压缩功能;若X1小于Y1并且X2小于Y2,则执行垂直缩放,即改变示波器的垂直量程,若第一个触控点对应的抬起时的Y坐标小于其按下时的Y坐标,则减小示波器的垂直量程,执行垂直放大功能,反之则增大示波器的垂直量程,执行垂直压缩功能。

优选地,所述触摸屏为电容触摸屏。

本发明具有的有益效果是:

本发明提供的用于数字示波器触摸屏的多点触控方法,通过Windows的消息函数接收触控点参数,并根据算法对用户操作手势进行判断,实现波形水平缩放及滑动、垂直缩放及平移的功能,为用户提供了更加友好、便捷的操作方式,并提高了产品的亮点。

附图说明

图1为用于数字示波器触摸屏的多点触控方法的原理框图。

具体实施方式

下面结合附图对本发明进行具体的说明:

结合图1,一种用于数字示波器触摸屏的多点触控方法,数字示波器通过USB接口外接有触摸屏,触摸屏为电容触摸屏,数字示波器采用Windows7操作系统,可自动识别触摸屏,免驱动安装,若系统不能识别触摸屏,可安装触摸屏厂家提供的驱动程序。

触摸屏的多点触控方法包括:

步骤1:初始化,通过系统函数GetSystemMetrics(SM_DIGITIZER)检测触摸屏是否接入示波器,函数GetSystemMetrics(SM_DIGITIZER)为系统自带的函数,若电容触摸屏接入示波器,则通过系统函数GetSystemMetrics(SM_MAXIMUMTOUCHES)得到触摸屏支持的触控输入数量,函数GetSystemMetrics(SM_MAXIMUMTOUCHES)为系统自带的函数;

步骤2:功能注册,在需要响应多点触控的窗口类中,通过系统函数RegisterTouchWindow()进行触控操作注册,函数RegisterTouchWindow()为系统自带函数,得到触控操作时的WM_TOUCH消息;

步骤3:消息响应,添加WM_TOUCH消息响应函数,得到WM_TOUCH消息中传递的触控点数量及触控点数据结构信息,从触控点数据结构信息中得到当前的触摸状态,触摸状态包括按下、移动和抬起三个操作状态,当检测到TOUCHEVENTF_DOWN时,记录当前为按下状态;当检测到TOUCHEVENTF_MOVE时,记录当前为移动状态;当检测到TOUCHEVENTF_UP时,记录当前为抬起状态,并同时记录各状态的坐标值;

步骤4:判断触控点数据结构信息是否为抬起状态,若为抬起状态,则执行步骤5;否则执行步骤3;

步骤5:判断得到的触控点数量是否为1,若触控点数量为1,则为单点移动操作,执行步骤6;若触控点数量不为1,则为两点缩放操作,执行步骤7;

步骤6:单点移动,当到达抬起状态时,表示触控操作结束,判断按下状态到抬起状态过程中的X方向及Y方向移动的距离,若X方向移动的距离大于Y方向移动的距离,则为水平滑动,即改变示波器的水平延迟位置,若抬起时的X坐标大于按下时的X坐标,则向右移动,反之则向左移动;若X方向移动的距离小于Y方向移动的距离,则为垂直移动,即改变示波器的垂直偏移,若抬起时的Y坐标小于按下时的Y坐标,则向上平移,反之则向下平移;

步骤7:两点缩放,当到达抬起状态时,表示触控操作结束,分别计算两个触控点的X方向及Y方向移动的距离,分别记为X1、Y1和X2、Y2,若X1大于Y1并且X2大于Y2,则执行水平缩放,即改变示波器的时基,若第一个触控点对应的抬起时的X坐标小于其按下时的X坐标,则减小示波器的时基,执行水平放大功能,反之则增大示波器的时基,执行水平压缩功能;若X1小于Y1并且X2小于Y2,则执行垂直缩放,即改变示波器的垂直量程,若第一个触控点对应的抬起时的Y坐标小于其按下时的Y坐标,则减小示波器的垂直量程,执行垂直放大功能,反之则增大示波器的垂直量程,执行垂直压缩功能。

当然,上述说明并非是对本发明的限制,本发明也并不仅限于上述举例,本技术领域的技术人员在本发明的实质范围内所做出的变化、改型、添加或替换,也应属于本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1