Android TP方向调试

一、问题描述

        拿到一款新TP,适配好驱动后,触摸屏幕发现触摸点位置和Android报点位置不一致,如上滑变成下滑或者左滑右滑等

二、问题分析

1.加载TP驱动,且驱动能正确上报数据

2.使用命令打开触摸报点

settings put system show_touches 1
settings put system pointer_location 1

3.触摸屏幕 

        出现这种问题可能是由于TP IC里的配置,或者TP贴片方向和屏幕方向不一致等情况导致的,这种情况下,我们需要对TP做一个方向的适配

三、解决办法

1.dts配置

dts中的方向配置如下:

ctp {compatible = "allwinner,goodix";reg = <0x5d>;device_type = "ctp";ctp_screen_max_x = <0x4B0>;ctp_screen_max_y = <0x780>;ctp_revert_x_flag = <0x1>;ctp_revert_y_flag = <0x1>;ctp_exchange_x_y_flag = <0x0>;
};

其中

  • ctp_screen_max_x:TP上报最大X值
  • ctp_screen_max_y:TP上报最大Y值
  • ctp_revert_x_flag:是否需要翻转x,使x=-x
  • ctp_revert_y_flag:是否需要翻转y,使y=-y
  • ctp_exchange_x_y_flag:是否需要交换xy,主要这个会同步的交换max_x和max_y

2.在代码中获取配置并做逻辑操作

1.获取dts配置的参考方法

ret = of_property_read_u32(np, "ctp_screen_max_x", &data->screen_max_x);
ret = of_property_read_u32(np, "ctp_screen_max_y", &data->screen_max_y);
ret = of_property_read_u32(np, "ctp_revert_x_flag", &data->revert_x_flag);
ret = of_property_read_u32(np, "ctp_revert_y_flag", &data->revert_y_flag);
ret = of_property_read_u32(np, "ctp_exchange_x_y_flag", &data->exchange_x_y_flag);

其中,of_property_read_u32是内核标准函数,np是设备节点,data是存放dts数据的结构体

2.使用配置
(1)使用变量保存配置,congfig_info为刚才获取的dts配置信息

static int screen_max_x;
static int screen_max_y;
static int revert_x_flag;
static int revert_y_flag;
static int exchange_x_y_flag;screen_max_x = config_info.screen_max_x;
screen_max_y = config_info.screen_max_y;
revert_x_flag = config_info.revert_x_flag;
revert_y_flag = config_info.revert_y_flag;
exchange_x_y_flag = config_info.exchange_x_y_flag;if(exchange_x_y_flag == 1)swap(screen_max_x, screen_max_y);

(2)使用配置
在上报xy报点的位置前,参考使用如下命令

if (exchange_x_y_flag == 1)swap(x, y);if (revert_x_flag == 1)x = screen_max_x - x;if (revert_y_flag == 1)y = screen_max_y - y;

3.进行方向适配

1、进行方向适配前,首先要明确xy分别对应哪条边,通常而言,x为屏幕0度角方向的边,通过该命令获取0度角方向。
旋转屏幕,同时输入如下命令,当获取到mCurrentOrientation=0时,则说明该方向对应的底边为x,另一边为y

dumpsys display | grep mCurrentOrientation

2、以800x1280的屏幕为例,先设置max_x和max_y都为1280;并将revert_x,revert_y和exchange_xy设置为0

3、观察屏幕触摸方向,对TP进行左右滑动,和上下滑动,看是否跟手滑动的方向一致

适配步骤:

(1)如左滑变成了上下滑,那说明需要交换xy,设置exchange_xy为1,继续观察
(2)如左滑变成了右滑,则说明可能需要revert_x,设置revert_x为1,继续观察
(3)如上滑变成了下滑,则说明可能需要revert_y,设置revert_y为1,继续观察
(4)部分情况下,23可能需要互换,即左滑变右滑需要设置revert_y,这种灵活变通即可
(5)通过1-4步骤后,可得到对应的xy配置,此时触摸滑动时,应该跟手滑动的方向一致,再来调试max_x和max_y
(6)尝试设置max_x=1280和max_y=800,观察,如果不行,则交换一下xy的值,此时一般来说,触摸基本就可以调试完成了

总结:先调试exchange_xy,再调试revert值,最后再来调试max值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/644411.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

dolphinscheduler节点二次开发需要改动的部分

dolphinscheduler节点二次开发需要改动的部分 前端 在dolphinscheduler-ui/public/images/task-icons/目录下新增两个节点的logo图片&#xff0c;一个为激活状态的一个为非激活状态的&#xff0c;如下。 修改文件dolphinscheduler-ui/src/views/projects/task/constants/task…

实战:加密传输数据解密

前言 下面将分享一些实际的渗透测试经验&#xff0c;帮助你应对在测试中遇到的数据包内容加密的情况。我们将以实战为主&#xff0c;技巧为辅&#xff0c;进入逆向的大门。 技巧 开局先讲一下技巧&#xff0c;掌握好了技巧&#xff0c;方便逆向的时候可以更加快速的找到关键…

HCIE之BGP基础概念(一)

BGP 一、BGP的基本概述二、BGP分类三、BGP的工作原理BGP报文类型&#xff1a;BGP状态机&#xff1a; 四、BGP对等体之间的交互原则解决BGP路由黑洞方法&#xff1a; 五、路由反射器路由反射规则路由反射器下防环联邦 六、BGP属性特点优选协议首选值&#xff08;PrefVal&#xf…

Oracle 数据库恢复删除的数据

需求描述&#xff1a; 同事让删除脏数据&#xff0c;结果删错了&#xff0c;需要恢复数据 思路&#xff1a; 利用闪回恢复数据只能恢复15分钟之内的&#xff0c;后面undo空间会被重写&#xff0c;就恢复不了&#xff0c;所以删除数据后&#xff0c;要谨慎再三确认&#xff0c…

正弦量的有效值

正弦量的有效值 引言正文 引言 相信有很多小伙伴们还记得&#xff0c;初中学习电压电流的时候&#xff0c;对于交变电流&#xff0c;电压&#xff0c;其有效值为正弦信号的最大值除以 1 2 \cfrac{1}{\sqrt{2}} 2 ​1​。 具体推到过程&#xff0c;作者以后有时间了会进行添加…

ESP8266 PlatformIO Arduino中为墨水屏制作u8g2自定义字库

Content 0. 前言1. 工具下载2. 字体下载3. 开始转换4. 添进字库0. 前言 使用的是 U8g2_for_Adafruit_GFX 字库,兴许你会在其他地方遇见更中意的字体,现在我们将它添加进去。 操作系统:Windows10 专业版 1. 工具下载 使用开源的 u8g2FontTool 软件,下载完成后解压。 资…

PHP编程实践:实际商品价格数据采集

引言 在电子商务领域&#xff0c;对商品价格进行数据采集和对比是一项常见的需求。本文将介绍如何使用PHP编程语言实现对1688和淘宝商品价格数据的采集和对比&#xff0c;帮助读者了解实际的编程实践过程。 一、数据采集原理 数据采集是指从互联网上获取数据的过程&#xff…

学习理解Java工厂模式

学习理解Java工厂模式 一、前言二、简单工程模式三、工厂方法模式四、抽象工厂模式五、静态工厂模式和 new 有什么区别&#xff1f;六、总结 一、前言 工厂模式目的是封装对象的创建过程&#xff0c;将对象的创建和使用分离开来&#xff0c;从而提高代码的可维护性和可扩展性。…

腾讯云上linux系统使用nginx,flask构建个人网站SSL证书过期换证书的操作步骤

ssl证书过期的时候&#xff0c;一般腾讯云提前一段时间给通知&#xff0c;让更换ssl证书&#xff0c;现在一般都可以免费更换&#xff0c;一般是一年期的&#xff0c;审核通过之后&#xff0c;需要下载nginx版本的证书&#xff0c;我的是4个文件&#xff0c;替换到nginx/cert文…

【前端web入门第一天】01 开发环境、HTML基本语法文本标签

文章目录: 1. 准备开发环境 1.1 vs Code基本使用 2.HTML文本标签 2.1 标签语法2.2 HTML基本骨架2.3 标签的关系2.4 注释2.5 标题标签2.6 段落标签2.7 换行与水平线标签2.8 文本格式化标签 1. 准备开发环境 VSCode与谷歌浏览器离线版,安装包评论区自提. VSCode默认安装位置:C…

3、非数值型的分类变量

非数值型的分类变量 有很多非数字的数据,这里介绍如何使用它来进行机器学习。 在本教程中,您将了解什么是分类变量,以及处理此类数据的三种方法。 本课程所需数据集夸克网盘下载链接:https://pan.quark.cn/s/9b4e9a1246b2 提取码:uDzP 文章目录 1、简介2、三种方法的使用1…

书生·浦语大模型实战营-学习笔记5

LMDeploy 大模型量化部署实践 大模型部署背景 LMDeploy简介 轻量化、推理引擎、服务 核心功能-量化 显存消耗变少了 大语言模型是典型的访存密集型任务&#xff0c;因为它是decoder-by-decoder 先把数据量化为INT4存起来&#xff0c;算的时候会反量化为FP16 AWQ算法&a…

Angular组件(一) 分割面板ShrinkSplitter

Angular组件(一) 分割面板ShrinkSplitter 前言 分割面板在日常开发中经常使用&#xff0c;可将一片区域&#xff0c;分割为可以拖拽整宽度或高度的两部分区域。模仿iview的分割面板组件&#xff0c;用angular实现该功能&#xff0c;支持拖拽和[(ngModel)]双向绑定的方式控制区…

Docker容器引擎(2)

目录 一.批量删除镜像&#xff0c;容器 二.Docker 网络实现原理 随机映射端口&#xff08;从32768开始&#xff09; 访问自己&#xff1a; 在10服务器上配置路由转发&#xff1a; 指定映射端口&#xff1a; 查看容器的输出和日志信息&#xff1a; 将宿主机目标|文件挂载…

RabbitMQ中交换机的应用及原理,案例的实现

目录 一、介绍 1. 概述 2. 作用及优势 3. 工作原理 二、交换机Exchange 1. Direct 2. Topic 3. Fanout 三、代码案例 消费者代码 1. 直连direct 生产者代码 测试 2. 主题topic 生产者代码 测试 3. 扇形fanout 生产者代码 测试 每篇一获 一、介绍 1. …

Vue的生命周期方法

beforeCreate 在实例初始化之后&#xff0c;数据观测&#xff08;data observe&#xff09;和 event/watcher 事件配置之前被调用。在当前阶段 data、methods、computed 以及 watch 上的数据和方法都不能被访问。 created 实例已经创建完成之后被调用。在这一步&#xff0c;实…

【JavaEE进阶】 MyBatis使用注解实现增删改查

文章目录 &#x1f343;前言&#x1f334;传递参数&#x1f38b;增(Insert)&#x1f6a9;返回主键 &#x1f384;删(Delete)&#x1f332;改(Update)&#x1f333;查(Select)&#x1f6a9;起别名&#x1f6a9;结果映射&#x1f6a9;开启驼峰命名(推荐使用) ⭕总结 &#x1f343…

使用curl测试响应式输出的接口

http://127.0.0.1:9010/v1/communicationRecord/summary 传递的json参数&#xff0c;是一个响应式的接口&#xff0c;怎么修改这个参数&#xff0c;可以响应式的输出。 为了使用curl命令对您的接口进行流式输出测试&#xff0c;您需要构造一个curl请求&#xff0c;该请求向您的…

[UI5 常用控件] 01.Text

文章目录 前言1. 普通文本2. 长文本&#xff1a;3. 设置最大显示行数 ( maxLines3 )4. 单行显示 ( wrappingfalse )5. 显示空白符 ( renderWhitespacetrue )6. 使用 - 连接单词:只适用于英文 ( wrappingTypeHyphenated )7. 空白时使用 - 代替 ( emptyIndicatorModeOn )8. JSON数…

行内样式css不生效

场景&#xff1a; 别人的代码里有样式是写在行内的&#xff0c;且设置了display:block&#xff1b;没有生效&#xff0c;也没有被覆盖样式&#xff0c;很奇怪。 <span style"width:90px;display:block;">很多字&#xff0c;style也很长&#xff0c;中间换行了…