0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

跟踪触摸手势的检测及位置确定

电子设计 来源:郭婷 作者:电子设计 2019-02-11 08:21 次阅读

触摸我的触摸屏时会发生什么?

本文将探讨跟踪触摸所涉及的所有内容,从电容感应的物理特性到屏幕上的最终动作。我们描述了如何检测手指以及确定手指位置的方法。我们将手指进一步插入手机的软件堆栈,看看它是如何到达正确的应用程序的。揭开捏和缩放等手势的神秘面纱。

如何检测到触摸?

几乎所有的智能手机触摸屏都会对手指的电容做出反应。触摸屏包含一系列传感器,可检测手指引起的电容变化。当您的手指触摸屏幕时,会影响每个传感器的自电容以及它们之间的互电容。大多数智能手机感应互电容感应而不是自电容。由于互电容是任何给定传感器对之间的相互作用,因此它可用于收集关于屏幕上每个位置的信息(X * Y点)。自电容仅能够检测每个传感器的反应而不是每个点(X + Y样本)。

跟踪触摸手势的检测及位置确定

图1:互电容基本原理。

电容式传感器包含多个层:顶层玻璃或塑料,然后是光学透明粘合剂(OCA)层,然后是触摸传感器,然后是LCD。触摸传感器是传感器网格,通常为约5mm×5mm。这些传感器使用氧化铟锡(ITO)制造。 ITO具有一些有趣的特性,使其成为触摸屏构造的理想材料。它的透明度超过90%,但它也具有导电性。一些设计使用菱形图案,这在视觉上令人愉悦,因为它不与LCD图案对齐。其他人则使用更简单的“条纹和条纹”图案。如果以正确的角度检查设备并获得良好的照明,您可以在LCD关闭的情况下看到ITO传感器线。

感应互电容与感应自电容根本不同。为了感测自电容,我们通常测量包含传感器的RC电路的时间常数。感测互电容涉及测量X和Y传感器之间的相互作用。检测在每条X线和每条Y线上驱动的信号以检测传感器之间的耦合水平。有趣的是,手指触摸会减少互电容耦合,同时手指触摸会增加自电容值。

跟踪触摸手势的检测及位置确定

图2:互电容感应响应。

在任何一种方法中,仅仅测量电容是不够的。系统必须对电容的变化做出反应,而不是原始电容。为此,系统会为每个传感器维护基线值。该基线值是信号的长期平均值,允许由温度变化和其他因素引起的信号变化。构建触摸屏系统的挑战之一是建立适当的基线。例如,系统必须能够用手指在屏幕上正确启动。系统还必须能够从屏幕上的水或手掌开始。

一旦从感应电容中减去基线值,我们就会得到一个代表触摸的信号值数组,如下图所示:

跟踪触摸手势的检测及位置确定

图3:确定手指基于原始电容数据的位置。

使用各种方法根据此信息确定手指位置。最简单的一个是质心(质心)计算,它是一维或二维传感器值的加权平均值。使用1-D质心,上面的X坐标是(5 * 1 + 15 * 2 + 25 * 3 + 10 * 4)/(5 + 15 + 25 + 10)= 150/55 = 2.73。然后我们缩放此位置以匹配LCD分辨率。如果ITO传感器图案延伸超出LCD的侧面,则也会对其进行一些转换。

边缘使手指位置问题复杂化。如果面板在每个列处结束,请考虑上面显示的数组。上面显示的简单质心将开始“拉”到右边,因为左边的术语会下降。为了解决这个问题,我们必须使用特殊的边缘处理技术来检查剩余信号的形状,并估计手指离开屏幕的部分。

与主机处理器通信

一旦有效的触摸信号出现并且触摸的X/Y坐标已知,就可以将数据送到主机CPU进行处理了。嵌入式触摸屏设备使用古老的I2C接口或SPI进行通信。较大的触摸屏通常使用USB接口,因为Windows,MacOS和Linux都通过USB内置了对HID(人机接口设备)的支持。

虽然采用了几种不同的接口,但OS驱动程序最终会对每种接口进行类似的工作。我们将在我们的示例中讨论Android驱动程序。由于Android和MeeGo都是在Linux上构建的,所以三者都使用类似的驱动程序。

触摸屏驱动程序的中断触发调度工作线程的中断服务程序(ISR)。在ISR中没有做任何工作来维持中断延迟并防止优先级反转。当OS调用工作线程时,它启动通信事务以从设备读取数据并进入休眠状态。通信事务完成后,主机驱动程序将具有继续执行所需的数据。

主机驱动程序将设备制造商使用的专有数据格式转换为标准格式。在Linux中,驱动程序使用一系列子例程调用填充事件的字段,然后通过最终调用发送事件。例如,创建单触式Linux输入事件如下所示:

input_report_abs(ts-》 input,ABS_X,t-》 st_x1);//设置X位置

input_report_abs(ts-》 input,ABS_Y,t-》 st_y1);//设置Y位置

input_report_abs(ts-》 input,ABS_PRESSURE,t-》 st_z1);//设置压力

input_report_key(ts-》 input,BTN_TOUCH,CY_TCH);//按下手指

input_report_abs(ts-》 input,ABS_TOOL_WIDTH,t-》 tool_width);//设置宽度

input_sync(ts-》 input);//发送事件

此触摸事件然后进入操作系统。 Android将事件的历史记录保存在手势处理缓冲区中,并将事件传递给View类。多个触摸屏设备(如赛普拉斯TrueTouch™产品支持硬件手势处理。硬件手势处理减轻了主机操作系统的手势处理负担,并且在许多情况下,它消除了所有触摸数据的处理,直到看到手势。例如,如果你进入你的照片浏览器,主机不必处理数十或数百个触摸数据包就可以看到你想要轻弹到下一张照片。在实际翻到下一张照片之前不会发生中断。

跟踪触摸手势的检测及位置确定

图4:简单手势过程的示例。

Android的View类确定触摸发生的哪个应用程序处于活动状态。显示在屏幕上的每个应用程序至少有一个View类。此类包含处理用户输入的方法,包括OnTouchListener,它传递从输入驱动程序接收的信息以及MotionEvent中的其他信息。如果您习惯于编写接受鼠标事件的Windows程序,您可能会对各种鼠标事件和触摸界面之间的差异感到惊讶。 MotionEvent包括您通常期望的类似WM_LBUTTONDOWN的方法,例如GetX和GetY,以及前面的触摸位置和手指在面板上的时间。

一旦应用程序看到事件,应用程序就会对触摸作出反应。这通常由小部件而不是应用程序本身完成。 Android的小部件包括简单的项目,如按钮,复杂的界面,如日期选择器和带取消按钮的进度条。或者,应用程序可以直接使用触摸。绘图应用程序使用两种类型的混合,使用绘图区域中的直接触摸输入和菜单和按钮的小部件。

Windows Touch处理和Android之间的一个区别是手势解释。 Android提供了丰富的手势创建工具库,但不提供任何内置手势。每个设计师都可以自由地创建自己的手势,包括手写等复杂的手势。这种方法已经启用了字符识别联系人搜索等应用程序,但这意味着相同的操作可能无法在两个Android平台上执行相同的操作。 Windows提供了一组固定的易于理解的手势,具有操作系统级别的支持:GID_PAN,GID_ZOOM,GID_ROTATE,GID_PRESSANDTAP和GID_TWOFINGERTAP。这些操作始终会在每个应用程序中执行相同的操作,从而使用户能够快速使用新应用程序。每种方法都有一些优势。

从触摸到手势的路径在技术上具有挑战性,涉及许多部分的相互作用。从材料选择到制造再到电子产品,一切都在触摸感应中起作用。一旦触摸被数字化,它仍然必须被定位,传送给主机并被解释。现在已经满足了这些挑战,软件开发人员可以在其上构建令人兴奋的应用程序。您的下一个应用程序将如何使用这些新的触摸功能?

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 传感器
    +关注

    关注

    2522

    文章

    47965

    浏览量

    739629
  • 智能手机
    +关注

    关注

    66

    文章

    18036

    浏览量

    176999
  • 触摸
    +关注

    关注

    7

    文章

    190

    浏览量

    63367
收藏 人收藏

    评论

    相关推荐

    借助音频DSP平台 超低功耗非触摸手势控制有谱

    欧胜微电子与Elliptic Labs联合为诸如智能手机、平板电脑以及汽车信息娱乐设备等消费电子产品实现了“永远工作”的、基于超声波的低功耗非触摸手势控制。
    发表于 11-30 11:12 1352次阅读

    采用电容式触摸传感器检测触摸手势

    本文将探讨电容式,电阻式,红外触摸和表面声波(SAW)触摸传感器。每种触摸传感器技术以不同方式检测触摸,并且一些可以在没有直接接触或没有
    的头像 发表于 03-04 07:29 1.3w次阅读
    采用电容式<b class='flag-5'>触摸</b>传感器<b class='flag-5'>检测</b><b class='flag-5'>触摸手势</b>

    AD7879控制器支持在阻性触摸屏上实现手势识别

    、捏合、旋转手势检测和量化; c)区别顺时针与逆时针旋转。用两点触摸手势来完成单点触摸操作时,可以估计手势的中心
    发表于 08-22 08:54

    带有3D手势识别和手部位置追踪系统

    ,GestIC 套件允许触摸检测,包括点击或双击。也支持“airwheel”圆形手势,其调节水平分辨率高达毎圈 32 次计数,而 x-y-z 位置追踪允许自定义
    发表于 07-03 09:40

    触摸/距离传感器能用于检测手势吗?

    一台计算机吗?计算机可设置为识别附近移动的手或手指吗?我们已明确显示,LC717A00触摸距离传感器可用于开关灯而不用实际触摸灯的开关。该传感器被设置为关灯或开灯作为一种方法。手势检测
    发表于 10-19 08:57

    汽车中的多点触摸应用

    ,传感器容易磨损,性能较差。  这些限制带来了投射式电容技术的发展,多点触摸手势触摸屏就是基于这个原理。多点触摸手势触摸屏不依赖于压力来检测
    发表于 11-05 15:47

    基于AD7879的两点触摸手势识别系统的实现

    全部性能,包括:a)单点触摸位置;b)缩放、捏合、旋转手势检测和量化;c)区别顺时针与逆时针旋转。用两点触摸手势来完成单点
    发表于 11-05 16:06

    求做psoc电容触摸手势识别,可以给钱!

    有人会用psoc做电容触摸手势识别吗,功能很单一只要求能识别几个数字就行,可以给钱
    发表于 04-09 16:20

    TrueTouch方案的N-02B手机实现多点触摸手势识别和

    TrueTouch方案的N-02B手机实现多点触摸手势识别和相机聚焦功能 赛普拉斯日前宣布docomo PRIME系列的新型N-02B手机采用了其TrueTouch触摸屏解决方案。N-02B
    发表于 04-14 16:42 1315次阅读

    如何在Flash Lite中侦测触摸手势

    随着新一轮支持触摸终端(如诺基亚5800 XpressMusic终端和即将面世的诺基亚N97终端)的发布,众多应用都将得益于触摸交互新方式。这类交互方式的典型例子就是手势:简单的手指/触笔
    发表于 04-03 23:35 35次下载

    触摸和3D手势控制

    Microchip的触摸传感和3D控制技术屡获殊荣,能广泛应用于各种应用,包括触摸按键(1D)、触摸屏(2D)以及3D手势控制。
    发表于 07-14 16:36 0次下载

    触摸到呼叫:跟踪触摸手势的路径

    本文将探索从电容传感到屏幕上的最后动作的跟踪触摸的所有内容。我们描述了如何检测手指和确定手指位置的方法。我们将手指进一步移动到手机的软件堆栈
    发表于 06-30 14:18 6次下载
    从<b class='flag-5'>触摸</b>到呼叫:<b class='flag-5'>跟踪</b><b class='flag-5'>触摸手势</b>的路径

    追踪触摸手势的路径从触摸到呼叫的设计应用

    本文档内容介绍了追踪触摸手势的路径从触摸到呼叫的设计应用。
    发表于 09-14 17:41 8次下载
    追踪<b class='flag-5'>触摸手势</b>的路径从<b class='flag-5'>触摸</b>到呼叫的设计应用

    触摸显示屏手势输入字符方法探究

    摘 要: 针对触摸显示屏的操作特点 , 利用简单通用手势 滑动和点击 , 提出了两种触摸手势 输 入字符方法。 第一种是基于 T9 键盘的改进输入方法,第二种是基于全键盘的改进输入方法。 这两种输入
    发表于 10-19 15:34 0次下载
    <b class='flag-5'>触摸</b>显示屏<b class='flag-5'>手势</b>输入字符方法探究

    苹果耳机新专利「耳机旋转检测」,根据触摸手势实现操控

    苹果新的耳触式手势控制专利显示,耳罩配备了预期的触摸面板和内部控制电路,它还通过多个传感器检测耳朵的位置,先确定耳朵
    的头像 发表于 12-28 10:27 2607次阅读
    苹果耳机新专利「耳机旋转<b class='flag-5'>检测</b>」,根据<b class='flag-5'>触摸手势</b>实现操控