TP调试记录

2023-11-06

1. USB tp触摸不准

项目中用到一款触摸屏显示是正常的就是TP不准,触摸的方向也是正确的就是触摸位置不准,屏幕中央触摸位置相对还好,越往边沿越不准,下面是当插上USB tp时抓到了logcat日志:

03-06 03:23:18.449   442   513 I InputReader: Device reconfigured: id=8, name='ILITEK ILITEK-TP', size 1280x2048, orientation 0, mode 1, display id 0
03-06 03:23:18.450   442   513 I InputReader: Device added: id=8, eventHubId=7, name='ILITEK ILITEK-TP', descriptor='f1b4838838e240568fcbdd50c0f63be308c623ef',sources=0x00001002
03-06 03:23:18.450   442   461 I Pointer : Device Added: Input Device 8: ILITEK ILITEK-TP
03-06 03:23:18.450   442   461 I Pointer :   Descriptor: f1b4838838e240568fcbdd50c0f63be308c623ef
03-06 03:23:18.450   442   461 I Pointer :   Generation: 31
03-06 03:23:18.450   442   461 I Pointer :   Location: external
03-06 03:23:18.450   442   461 I Pointer :   Keyboard Type: none
03-06 03:23:18.450   442   461 I Pointer :   Has Vibrator: false
03-06 03:23:18.450   442   461 I Pointer :   Has mic: false
03-06 03:23:18.450   442   461 I Pointer :   Sources: 0x1002 ( touchscreen )
03-06 03:23:18.450   442   461 I Pointer :     AXIS_X: source=0x1002 min=0.0 max=1279.0 flat=0.0 fuzz=0.0 resolution=4.1403723
03-06 03:23:18.450   442   461 I Pointer :     AXIS_Y: source=0x1002 min=-624.0 max=1423.0 flat=0.0 fuzz=0.0 resolution=11.749283
03-06 03:23:18.450   442   461 I Pointer :     AXIS_PRESSURE: source=0x1002 min=0.0 max=1.0 flat=0.0 fuzz=0.0 resolution=0.0
03-06 03:23:18.451   442   512 I configuration_changed: 8

从插入USB TP的日志上可以看到范围是1280x2048,但是实际上是1280x800

添加idc配置文件:

touch.deviceType = touchScreen
device.internal = 1
touch.orientationAware = 1

keyboard.layout = qwerty
keyboard.characterMap = qwerty
keyboard.orientationAware = 1
keyboard.builtIn = 1

cursor.mode = navigation
cursor.orientationAware = 1

命名Vendor_222a_Product_0001.idc,格式如下:

Vendor_(VID)_Product_(PID)

显示分辨率偏小,本身是1280x800,识别成了1280x720,所以去掉过滤分辨率文件resolution_white.xml恢复正常,也可以在resolution_white.xml中添加,如下

diff --git a/resolution_white.xml b/resolution_white.xml
index 846938a..a1a9f1c 100755
--- a/resolution_white.xml
+++ b/resolution_white.xml
@@ -416,4 +416,20 @@
                <flags>5</flags>
                <vic>102</vic>
        </resolution>
+               <resolution> <!-- 1280x800P60 -->
+               <clock>74250</clock>
+               <hdisplay>1280</vdisplay>
+               <hsync_start>1300</vsync_start>
+               <hsync_end>1304</vsync_end>
+               <htotal>1314</vtotal>
+               <hskew>0</hskew>
+               <vdisplay>800</hdisplay>
+               <vsync_start>848</hsync_start>
+               <vsync_end>880</hsync_end>
+               <vtotal>960</htotal>
+               <vscan>0</vscan>
+               <vrefresh>60</vrefresh>
+               <flags>5</flags>
+               <vic>108</vic>
+       </resolution>
 </resolutions>

2 触摸位置不准方向不对

commit b497de3bed4f12beaa51cb8c1a69214ca993d7e9
Author: k.li <k.li@vantron.com>
Date:   Wed Mar 29 21:09:14 2023 +0800

    exchange usb tp x_y position for 10inch(date:03.29)
    
    Change-Id: Iaccabc31347dbaa3bad1da24eb5898bfd153f3ac

diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
index c20945ed1dc1..c0672d5a7e56 100644
--- a/drivers/hid/hid-multitouch.c
+++ b/drivers/hid/hid-multitouch.c
@@ -52,6 +52,8 @@ MODULE_LICENSE("GPL");
 
 #include "hid-ids.h"
 
+#define SWAP_X_Y_POS 1
+
 /* quirks to control the device */
 #define MT_QUIRK_NOT_SEEN_MEANS_UP	BIT(0)
 #define MT_QUIRK_SLOT_IS_CONTACTID	BIT(1)
@@ -473,13 +475,17 @@ static void mt_feature_mapping(struct hid_device *hdev,
 		break;
 	}
 }
-
+/* Swap x and y. <sq.li@vantron.com>20201116 */
+#if SWAP_X_Y_POS
+int logical_maximum;
+#endif
 static void set_abs(struct input_dev *input, unsigned int code,
 		struct hid_field *field, int snratio)
 {
 	int fmin = field->logical_minimum;
 	int fmax = field->logical_maximum;
 	int fuzz = snratio ? (fmax - fmin) / snratio : 0;
+	logical_maximum = fmax;
 	input_set_abs_params(input, code, fmin, fmax, fuzz, 0);
 	input_abs_set_res(input, code, hidinput_calc_abs_res(field, code));
 }
@@ -956,7 +962,20 @@ static int mt_touch_event(struct hid_device *hid, struct hid_field *field,
 
 	return 1;
 }
+#if SWAP_X_Y_POS
+static void swap_x_y(struct mt_usages *slot)
+{
+	 int swap = *slot->x;
+
+	//printk("vantron---- slot->x:%d   slot->y:%d  logical_maximum :%d \r\n",*slot->x,*slot->y,logical_maximum);
+	 *slot->x = *slot->y;
+	 *slot->y = logical_maximum - swap;
 
+	*slot->x = 9600 - *slot->x;
+	*slot->y = 9600 - *slot->y;
+	return;
+}
+#endif
 static int mt_process_slot(struct mt_device *td, struct input_dev *input,
 			    struct mt_application *app,
 			    struct mt_usages *slot)
@@ -1067,7 +1086,9 @@ static int mt_process_slot(struct mt_device *td, struct input_dev *input,
 			major = major >> 1;
 			minor = minor >> 1;
 		}
-
+#if SWAP_X_Y_POS
+		swap_x_y(slot);
+#endif
 		input_event(input, EV_ABS, ABS_MT_POSITION_X, *slot->x);
 		input_event(input, EV_ABS, ABS_MT_POSITION_Y, *slot->y);
 		input_event(input, EV_ABS, ABS_MT_TOOL_X, *slot->cx);

主要添加了swap_x_y函数,这里上报的位置并不是屏幕物理尺寸的实际位置,需要转换,同getevent -p命令可以看到触摸屏幕的注册信息,在set_abs函数中有相应的注册信息

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TP调试记录 的相关文章

随机推荐

  • 云备份客户端——客户端整体设计框架以及实用类工具实现

    一 客户端整体框架 客户端要实现的功能和服务端相比相对简单 客户端要实现的功能是自动对指定文件中的文件进行备份 也就是定时对指定文件进行扫描 根据文件信息判断文件 符合要求 新文件或者被修改过的文件 进行上传 因此我们客户端大概需要实现下面
  • FPGA 20个例程篇:8.SD卡任意地址的读写

    三 数据断电存储 工程必备 8 SD卡任意地址的读写 SD卡作为最常见的外设之一 本身也是一种基于半导体快闪记忆器的新一代记忆设备 它具有体积小 传输速度快 支持热插拔等优点 在便携式装置领域得到了非常广泛的应用 例如数码相机 多媒体播放器
  • error LNK2005: _DllMain@12 已经在 MSVCRTD.lib(dllmain.obj) 中定义

    本文主要分析和解决编译链接时产生的 LNK2005 错误 错误信息 mfcs90ud lib dllmodul obj error LNK2005 DllMain 12 already defined in MSVCRTD lib dllm
  • const关键字与指针

    const关键字与指针 1 指针包含的地址是常量 不能被修改 但可以修改指针指向的数据 int x 10 int const p x p 34 指向的数据可以修改 int y 32 p y 不能修改P指向的地址 2 指针指向的数据是常量 不
  • osgEarth的Rex引擎原理分析(一一零)state中_defineMap构建过程

    目标 一零九 中的问题195 是在绘制过程中 每经过一个状态集StateSet就会将该状态集中的模式 属性 一致变量 定义都放入State的相应变量中 定义都放入 defineMap osg State cpp void State pus
  • Ansible Roles 一键完成LNMP

    Ansible Roles 一 Ansible Roles基本概述 1 Ansible Roles介绍 roles不管是Ansible还是saltstack 我在写一键部署的时候 都不可能把所有的步骤全部写入到一个 剧本 文件当中 我们肯定
  • 大型工厂MES管理系统源码

    生产制造业MES管理系统源码 开发环境 ASP NET C VS2010以上 SQL2008R2 C S架构 主要功能 一 用户管理 1 用户登录 2 用户管理 3 操作员录入 4 用户注销 二 系统设置 1 数据库设置 2 机型设置 3
  • vscode中检查代码插件:flake8

    1 命令行安装 pip install flake8 2 在vscode中的用户设置 settings json 中添加以下两行即可 也可以搜索flake8 python linting flake8Enabled true on form
  • BitLocker恢复获取密钥官方操作指南

    下载驱动安装禁用签名 进入Bios一堆骚操作出现下图问题 BitLocker恢复 下面的识别密钥是不能直接用 真正的恢复密钥是一串四十多位的数字序列 第一步 用另一台电脑浏览器进入aka ms myrecoverykey这个网址 就是图里那
  • unity游戏重新开始,退出,停止,继续按钮及打包发布

    一 游戏退出按钮 脚本Out 分为编辑状态下退出和打包编译后退出 这两种都要写上 using System Collections using System Collections Generic using UnityEngine usi
  • Flutter封装自定义按钮(过渡色、水波纹)

    Flutter封装自定义按钮 过渡色 水波纹 全局公用的按钮组件 用的时候不用写一大坨了 直接往里面传值就好了 注意 这里面的ScreenAdapter是我封装的适配方法 用的时候替换为自己的就好了 import package flutt
  • ES的安装使用(windows版)

    前言 Elasticsearch VS Java jdk 版本兼容性 Oracle OpenJDK AdoptOpenJDK 1 8 0 Oracle OpenJDK 9 Oracle OpenJDK 10 Oracle OpenJDK 1
  • HCIP 笔记

    1 交换基础 1 交换机启用过程 RAM 随机存储 当前配置文件 ROM 只读存储 自检程序 NVRAM 非易失性存储 保存配置 Flash 闪存 操作系统 2 交换机 二层基于MAC地址转发设备 依靠MAC地址表进行数据的转发 3 MAC
  • 线程管理之获取和设置线程信息

    获取和设置线程信息 Thread类的对象中保存了一些属性信息能够帮助我们来辨别每一个线程 知道它的状态 调整控制其优先级 这些属性是 ID 每个线程的独特标识 Name 线程的名称 Priority 线程对象的优先级 优先级别在1 10之间
  • Qt实现登录效果(超详细!超简单!)

    title Qt实现登录效果 超详细 超简单 date 2022 8 13 tags 学习 C Qt categories Qt tip 从一个界面按登录跳转到另一个界面 效果图 首先在登录界面输入正确的用户名和密码后点击登录 即可跳到第二
  • Electron项目打包

    文章目录 前置条件 配置 1 在vue config js 文件中增加配置项 2 根目录增加 scripts 文件夹 新建 installer nsi 文件 文件中具体脚本内容 可参考 3 执行打包指令 4 打包成功后会生成exe文件 5
  • 分享35个非常漂亮的单页网站设计案例

    单页网站是指只有一个页面的网站 这种形式的网站曾经非常流行 现在依然有很多人喜欢 不过 并不是每个网站都适合做成单页 一般都是内容比较少而且将来内容也不怎么增加的情况才适合这样做 另外 单页网站有个很大的特点就是导航都很新颖 大多是使用了锚
  • Kendo UI开发教程(3): 初始化Data 属性

    前面在介绍准备Kendo UI开发环境时我们使用jQuery的方法将一个HTML元素转换成一个Kendo UI控件 datepicker kendoDatePicker 除了使用jQuery插件的方法来初始化方法外 每个Kendo 控件还可
  • 序列两两比对算法_学会正确选择多序列比对(coding-sequences)软件

    前几天 实验室的师弟师妹通过本地blast获取一些没有基因组注释物种的蛋白编码序列 原本以为可以快速地进行下一步的选择压力分析 没想到却在多序列比对这一环节出现了棘手的问题 以前 我都是经过PRANK软件进行多序列比对 然后再使用Gbloc
  • TP调试记录

    1 USB tp触摸不准 项目中用到一款触摸屏显示是正常的就是TP不准 触摸的方向也是正确的就是触摸位置不准 屏幕中央触摸位置相对还好 越往边沿越不准 下面是当插上USB tp时抓到了logcat日志 03 06 03 23 18 449