邢台做网站名列前茅,吴江专业的网站建设,高端人士,最大的房产网站触摸屏分为电阻屏、
电容屏。电阻屏结构简单#xff0c; 在以前很流行#xff1b;电容屏支持 多点触摸#xff0c;现在的手机基本都是使用电容屏。 注意#xff1a;LCD、触摸屏不是一回事#xff0c;LCD 是输出设备#xff0c;触摸屏是输入设备。制作触摸 屏时特意把它的…触摸屏分为电阻屏、
电容屏。电阻屏结构简单 在以前很流行电容屏支持 多点触摸现在的手机基本都是使用电容屏。 注意LCD、触摸屏不是一回事LCD 是输出设备触摸屏是输入设备。制作触摸 屏时特意把它的尺寸做得跟 LCD 一模一样并且把触摸屏覆盖在 LCD 上。 7.4.1 电阻屏 复习一下欧姆定律 图 7.17 欧姆定律 图 7.17 中的电阻假设是均匀的就是长度和阻值成正比关系。电阻长度为 L阻值为 R在两端施加 3.3V 电压。在某点测 电阻为 V
求上图中长度 X。 根据欧姆定律3.3/R V/Rx 因为长度和阻值成正比关系上述公式转换为3.3∕L V/X所以XLV/3.3。 231 / 577 电阻屏原理 电阻屏就是基于欧姆定律制作的它有上下两层薄膜这两层薄膜就是两个 电阻如下图所示 图 7.18 电阻屏原理 平时上下两层薄膜无触触当点击触摸屏时上下两层薄膜接触这时就可 以测量触点电压。过程如下 测量 X 坐标 在 xp、xm 两端施加 3.3V 电压yp 和 ym 不施加电压(yp 就相当于探针) 测量 yp 电压值。该电压值就跟 X 坐标成正比关系假设 X 3.3*Vyp/Xmax 测量 Y 坐标 在 yp、ym 两端施加 3.3V 电压xp 和 xm 不施加电压(xp 就相当于探针) 测量 xp 电压值。该电压值就跟 Y 坐标成正比关系假设 Y 3.3*Vxp/Ymax 在实际使用时电阻屏的 Xmax、Ymax 无从得知所以使用之前要先较准 依次点击触摸屏的四个角和中心点推算出 X、Y 坐标的公式 X func(Vyp) Y func(Vxp) 电阻屏数据 Linux 驱动程序中会上报触点的 X、Y 数据注意这不是 LCD 的坐标值 需要 APP 再次处理才能转换为 LCD 坐标值。 对应的 input_event 结构体中“type、code、value”如下 按下时 EV_KEY BTN_TOUCH 1 /* 按下 *
电容屏
中有一个控制芯片它会周期性产生驱动信号接收电极接收到信号 并可测量电荷大小。当电容屏被按下时相当于引入了新的电容从而影响了接 收电极接收到的电荷大小。主控芯片根据电荷大小即可计算出触点位置。 怎么通过电荷计算出触点位置这由控制芯片实现这类芯片一般是 I2C 接 口。 我们只需要编写程序通过 I2C 读取芯片寄存器即可得到这些数据。 电容屏数据 参 考 文 档 Linux 内 核 Documentation\input\multi-touchprotocol.rst。 电容屏可以支持多点触摸(Multi touch)驱动程序上报的数据中怎么分辨 触点 这有两种方法Type A、Type B这也对应两种类型的触摸屏 Type A 该类型的触摸屏不能分辨是哪一个触点它只是把所有触点的坐标一股脑地 上报由软件来分辨这些数据分别属于哪一个触点。 Type A 已经过时Linux 内核中都没有 Type A 的源码了。 Type B 该类型的触摸屏能分辨是哪一个触点上报数据时会先上报触点 ID再上报 它的数据。 具体例子如下这是最简单的示例使用场景分析来看看它上报的数据。 当有 2 个触点时(type, code, value) EV_ABS ABS_MT_SLOT 0 // 这表示“我要上报一个触点信息了”用来分隔触点信息 EV_ABS ABS_MT_TRACKING_ID 45 // 这个触点的 ID 是 45 EV_ABS ABS_MT_POSITION_X x[0] // 触点 X 坐标 EV_ABS ABS_MT_POSITION_Y y[0] // 触点 Y 坐标 EV_ABS ABS_MT_SLOT 1 // 这表示“我要上报一个触点信息了”用来分隔触点信息 EV_ABS ABS_MT_TRACKING_ID 46 // 这个触点的 ID 是 46 233 / 577 EV_ABS ABS_MT_POSITION_X x[1] // 触点 X 坐标 EV_ABS ABS_MT_POSITION_Y y[1] // 触点 Y 坐标 EV_SYNC SYN_REPORT 0 // 全部数据上报完毕 当 ID 为 45 的触点正在移动时 EV_ABS ABS_MT_SLOT 0 // 这表示“我要上报一个触点信息了”之前上报过 ID就不用再上报 ID 了 EV_ABS ABS_MT_POSITION_X x[0] // 触点 X 坐标 EV_SYNC SYN_REPORT 0 // 全部数据上报完毕 松开 ID 为 45 的触点时(在前面 slot 已经被设置为 0这里这需要再重新设置 slotslot 就像一个全局变量一样
如果它
在上面的数据中为了兼容老程序它也上报了 ABS_X、ABS_Y 数据电阻 触摸屏就是使用这类型的数据。所以基于电阻屏的程序也可以用在电容屏上。 使用两个手指点击触摸屏时得到类似如下的数据 图 7.21 双指触摸时打印信息 234 / 577 为了兼容老程序它也上报了 ABS_X、ABS_Y 数据但是只上报第 1 个触点 的数据。 7.5 tslib tslib 是一个触摸屏的开源库可以使用它来访问触摸屏设备可以给输入 设 备 添 加 各 种 “ filter ” ( 过 滤 器 就 是 各 种 处 理 ) 地 址 是 http://www.tslib.org/。 编译 tslib 后可以得到 libts 库还可以得到各种工具较准工具、测 试工具。 使用 GIT 下载所有源码后本节源码位于如下目录