当前位置: 首页 > news >正文

RK3568平台(触摸篇)双屏异触调试

一.现象

现象:准备两块主屏都接触摸框,A屏的HDMIOUT外接B屏的HDMIIN,用手触摸A屏,发现A屏没有触摸,A屏幕的触摸现象在B屏那边。

现要求:用手触摸A屏,A屏要有现象,不能现象在B屏那边。

二.调试记录

双屏异触的修改方法有两种:

1、修改 EventHub.cpp 代码。

2、 配置触摸屏的IDC文件。

目前我们采用第一种方式来修改。

EventHub.cpp 代码路径:

frameworks\native\services\inputflinger\reader\EventHub.cpp

显示先确认HDMIOUT的输出是作为主屏还是副屏:

130|console:/ # getprop | grep hwc
[debug.sf.enable_hwc_vds]: [true]
[init.svc.vendor.hwcomposer-2-1]: [running]
[init.svc_debug_pid.vendor.hwcomposer-2-1]: [431]
[ro.boottime.vendor.hwcomposer-2-1]: [12279171464]
[vendor.ghwc.version]: [HWC2-1.5.122]
[vendor.hwc.device.display-0]: [HDMI-A-1:108:connected]
[vendor.hwc.device.extend]: [HDMI-A-2]  //副屏
[vendor.hwc.device.primary]: [HDMI-A-1]  //主屏
[vendor.hwc.enable_sideband_stream_2_mode]: [1]
[vendor.hwc.hdr_state]: [NORMAL]

这里与硬件确认HDMIOUT是HDMI-A-2作为副屏。

RK文档中提供的修改方法:

// Determine whether the device is external or internal.
if (device->isExternalDeviceLocked()) {device->classes |= InputDeviceClass::EXTERNAL;
}

 这里device->classes |= InputDeviceClass::EXTERNAL;表示将触摸指定到副屏幕。

这里尝试将device->classes |= InputDeviceClass::EXTERNAL屏蔽掉。

if (device->isExternalDeviceLocked()) {//device->classes |= InputDeviceClass::EXTERNAL;
}

看还是一样的效果,不能将触摸修改放在主屏上。

尝试查看InputDeviceClass中属性的定义:

InputDeviceClass定义在:

frameworks\native\services\inputflinger\reader\include\EventHub.h

找到InputDeviceClass::TOUCH

尝试修改:

if (device->isExternalDeviceLocked()) {device->classes |= InputDeviceClass::TOUCH;
}

最终将触摸修改在主屏上。

相关文章:

RK3568平台(触摸篇)双屏异触调试

一.现象 现象:准备两块主屏都接触摸框,A屏的HDMIOUT外接B屏的HDMIIN,用手触摸A屏,发现A屏没有触摸,A屏幕的触摸现象在B屏那边。 现要求:用手触摸A屏,A屏要有现象,不能现象在B屏那边…...

angular cmd

npm uninstall -g angular/cli npm install -g angular/cli npm install -g angular/cli17 ng update angular/core17 angular/cli17 # 安装 typescript npm i -g typescript5.3.2 # 安装 Angular CLI npm install -g angular/cli17.3.8 # 或者 cnpm install -g angular/cli…...

[ACTF2020 新生赛]BackupFile1

打开题目 利用disearch扫描&#xff0c;发现源文件index.php.bak 下载下来 打开文件 代码审计&#xff0c;翻译一下 翻译代码为&#xff1a; <?php include_once "flag.php"; //这一行使用 include_once 函数来包含&#xff08;或插入&#xff09;另一个 PHP …...

Springboot学习-day16

Springboot学习-day16 Springboot是spring家族中的一个全新框架&#xff0c;用来简化spring程序的创建和开发过程。在以往我们通过SpringMVCSpringMybatis框架进行开发的时候&#xff0c;我们需要配置web.xml&#xff0c;spring配置&#xff0c;mybatis配置&#xff0c;然后整…...

Map 31

...

dfs,CF 196B - Infinite Maze

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 https://codeforces.com/problemset/problem/196/B 二、解题报告 1、思路分析 考虑如何判断一条路径可以无限走&#xff1f; 我们对朴素的网格dfs改进&#xff0c;改进为可以dfs网格外的区域 如果存在某个…...

鸿蒙应用框架开发【JS注入与执行】 Web

JS注入与执行 介绍 本示例基于H5游戏&#xff0c;通过arkui的button实现对游戏实现基本控制&#xff0c;展示webview的JS注入与执行能力&#xff0c;及native应用与H5的通信能力。 效果预览 使用说明 1.设备连接热点&#xff0c;可访问互联网。 2.打开应用&#xff0c;通过…...

AI问答:理解 DRG / Diagnosis Related Group / 按疾病诊断相关分组

DRG&#xff08;Diagnosis Related Group&#xff09;系统&#xff0c;中文译作“按疾病诊断相关分组”&#xff0c;是一种根据病情临床相似程度和资源消耗水平将住院病人进行分组的系统。以下是对DRG系统的详细理解&#xff1a; 一、定义与原理 1.1、定义&#xff1a;DRG系统…...

多个线程同时调用接口

1、线程的基本概念 线程是程序执行的最小单元。每个线程可以独立执行一段代码&#xff0c;与其他线程并行运行。Java提供Thread类和Runnable接口来创建和管理线程。 2、创建线程 1&#xff09;继承Thread类并重写run()方法&#xff1a; class MyThread extend Thread{ pub…...

本科阶段最后一次竞赛Vlog——2024年智能车大赛智慧医疗组准备全过程——1到手测试

本科阶段最后一次竞赛Vlog——2024年智能车大赛智慧医疗组准备全过程——1到手测试 ​ 大家好&#xff0c;今天给大家带来的是购买到小车或者说RDK X3之后直接快速体验&#xff0c;今天主要围绕官方的快速入门手册进行逐步测试 1.知识补充1 ​ 在这里首先要给新手小白补充几…...

2024第三届钉钉杯大学生大数据挑战赛【A题】完整分享

2024第三届钉钉杯大学生大数据挑战赛已经开赛&#xff0c;小编给大家带来非常实用的助力【A题】完整&#xff0c;&#xff08;看图片下方的说明&#xff09;&#xff0c;资料预览&#xff1a; 微信公众号...

下面关于数组排序的说明那项是错误的?

下面关于数组排序的说明那项是错误的&#xff1f; A. java.util.Arrays类提供有数组排序的支持方法&#xff1a;sort()&#xff1b; B. 通过java.util.Arrays类排序的对象所在类需要实现Comparable或Comparator接口&#xff1b; C. String数组可以进行排序&#xff0c;是因为St…...

【第二篇章】优秀的机器学习策略 超参数优化之决策树

在机器学习的浩瀚星空中&#xff0c;决策树作为一颗璀璨的星辰&#xff0c;以其直观易懂、解释性强以及高效处理分类与回归任务的能力&#xff0c;赢得了众多数据科学家与工程师的青睐。随着大数据时代的到来&#xff0c;如何从海量数据中提炼出有价值的信息&#xff0c;构建出…...

httprunner转载

基于 HttpRunner4.0 的接口自动化测试实践 测试之家 from httprunner import HttpRunner, Config, Step, RunRequest, RunTestCase # 配置数据库连接信息 config ( Config("database test") .variables( **{ "db_host": &…...

反序列化漏洞vulhub靶场serial

环境搭建 下载 https://download.vulnhub.com/serial/serial.zip 解压出来就是这种 你会得到一个这样的文件&#xff0c;这里使用VMware新建一个虚拟机&#xff0c;这里记录比较重要的几部分。 这里就是使用我们刚才下过来的。 漏洞过程详解 1.信息收集 打开靶机&#xff0…...

C++ 文件流详解

在 C 中&#xff0c;文件处理是一个常见且重要的任务。标准库提供了三种主要的文件流类来处理文件输入和输出&#xff1a;fstream、ifstream 和 ofstream。这些类都在 <fstream> 头文件中定义。 一、fstream 类 fstream 是文件流类的基类&#xff0c;既可以用于读操作&…...

docker compse简介与安装

目录 1. Docker Compose 简介 2. Docker Compose 安装 2.1 在 Ubuntu 上安装 Docker Compose 2.1.1 通过 apt 安装 2.1.2 使用官方脚本安装最新版本 2.2 在 CentOS 上安装 Docker Compose 2.2.2 使用官方脚本安装最新版本 2.2.3 使用 pip 安装 2.3 在 openEuler 上安装…...

基于深度学习的零样本学习

零样本学习&#xff08;Zero-Shot Learning, ZSL&#xff09;是深度学习中的一个前沿研究领域&#xff0c;其目标是在没有见过目标类别的样本的情况下&#xff0c;对这些新类别进行识别或分类。这种方法特别适用于在实际应用中存在大量未标注类别或新类别不断涌现的场景&#x…...

C++——list容器以及手动实现

LIST容器 list概述列表容器属性例子 list函数构造函数默认构造函数&#xff1a;带有元素个数和元素初值的构造函数&#xff1a;范围构造函数&#xff1a;拷贝构造函数&#xff1a;移动构造函数&#xff1a;示例 赋值运算符重载拷贝赋值操作符 (1)&#xff1a;移动赋值操作符 (2…...

Win11系统文件资源管理器鼠标右键卡顿解决方法

引用链接&#xff1a; Windows 11文件资源管理器崩溃怎么解决&#xff1f;看看这7个解决办法&#xff01;...

零基础学Python之 第十八讲 文件读写

当你开始学习Python编程时&#xff0c;文件读写是一个非常基础且重要的技能。本篇博客将引导你从零开始学习如何在Python中进行文件读写操作。 1. 打开文件 在Python中&#xff0c;要操作一个文件&#xff0c;首先需要打开它。使用内置的 open() 函数来打开文件&#xff0c;语…...

检索增强生成(RAG):智能内容生成的新纪元

引言 在大 AI 时代&#xff0c;生成式人工智能&#xff08;GenAI&#xff09;模型&#xff0c;尤其是大型语言模型&#xff08;LLM&#xff09;&#xff0c;已经展现出了令人瞩目的能力。然而&#xff0c;这些模型在提供信息的准确、即时、专业、权威等方面仍存在局限。检索增…...

ubuntu2204安装elasticsearch7.17.22

下载安装 wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.22-amd64.deb wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.22-amd64.deb.sha512 shasum -a 512 -c elasticsearch-7.17.22-amd64.deb.sha512 su…...

介绍Servlet后端中两种接收参数方式req.getAttributer和req.getParameter的区别

数据来源 getParameter&#xff1a;此方法用于获取客户端发送的请求中携带的参数&#xff0c;通常这些参数是通过HTTP GET或POST请求传递的表单数据。例如&#xff0c;用户填写的用户名和密码等输入信息。getAttribute&#xff1a;该方法用来获取在服务器端通过setAttribute方法…...

Delphi FMX安卓Android播放mp3音频内存流

【笔记&#xff1a;安卓开发JavaDelphi FMX】 Delphi FMX跨平台的MediaPlayer无法播放音频数据流只能打开音频文件播放&#xff0c;但有时候需要直接播放内存流数据而无需生成文件&#xff0c;可以通过把内存流转ByteArray再通过Android平台系统原生的MediaDataSource或ParcelF…...

MapUtils常用方法

1、摘要 MapUtils是一个用于处理Map对象的实用工具类&#xff0c;它提供了许多方便的方法来执行常见的操作&#xff0c;如获取值、设置默认值、合并Map等。本文将介绍MapUtils的常见用法&#xff0c;以帮助你更轻松地处理Map数据。 2、前言 在Java编程中&#xff0c;Map是一…...

自定义PasswordEditText控件,在手机字体应用后,字体样式未发生改变

原来的输入类型inputType为textPassword&#xff0c;现在将 inputType删掉即可...

学习打卡第31天

...

opencascade AIS_TexturedShape源码学习 贴纹理

opencascade AIS_TexturedShape opencascade 贴纹理 前言 //! 该类允许在形状上映射纹理。 //! 显示模式 AIS_WireFrame (0) 和 AIS_Shaded (1) 的行为与 AIS_Shape 中的行为相同&#xff0c; //! 而新模式 2 (包围盒) 和 3 (纹理映射) 扩展了其功能。 //! //! 纹理本身在 (0…...

C# winform 串口读取字节流,MB级别字节流

一、串口读取字节流 在 C# 中使用 Windows Forms (WinForms) 应用程序进行串口通信时&#xff0c;通常会使用 System.IO.Ports 命名空间中的 SerialPort 类。以下是一个简单的示例&#xff0c;展示了如何设置一个串口并读取字节流。 步骤 1: 添加引用 确保你的项目中已经包含…...

做网站的协议书和计划书/seo网站关键词优化

【题目描述】 乔治有一些同样长的小木棍&#xff0c;他把这些木棍随意砍成几段&#xff0c;直到每段的长都不超过50。 现在&#xff0c;他想把小木棍拼接成原来的样子&#xff0c;但是却忘记了自己开始时有多少根木棍和它们的长度。 给出每段小木棍的长度&#xff0c;编程帮他找…...

网站建设公司谁家好/百度搜索关键词优化

今天突然注意到$ls -l显示文件时&#xff0c;权限列后面有个点。如&#xff1a;-rw-rw-r--. 1 user group 13767 12月 25 2014 index.html解释&#xff1a;开启了SELinux功能的Linux系统才会有这个点。那个点表示文件带有“SELinux的安全上下文”。CentOS7默认是开启SELinux的&…...

wordpress 说说 插件/互联网推广话术

恶意代码分析实战&#xff08;最权威的恶意代码分析指南&#xff0c;理论实践分析并重&#xff0c;业内人手一册的宝典&#xff09; 【美】Michael Sikorski&#xff08;迈克尔.斯科尔斯基&#xff09;, Andrew Honig&#xff08;安德鲁.哈尼克&#xff09;著 《恶意代码分析…...

永年做网站多少钱/百度搜索引擎

题目 长度为n(n<1e5)的仅由abc三种字母组成的串&#xff0c; q(q<1e5)次操作&#xff0c;每次给出两个参数pos x&#xff08;x属于a、b、c三种字母中的一种&#xff09;&#xff0c; 表示把pos位置的字母改成x&#xff0c; 每次改完之后&#xff0c;都需要输出把整个…...

定制网站开发报价/app推广赚钱平台

Java Q&A: 使用Factory Method模式 (转)[more]Java Q&A: 使用Factory Method模式Q: 阅读 "Polymorphism in its purest form" 一文时&#xff0c;我看到了一个不熟悉的术语 "Factory method"。你能解释一下什么是Factory method并说明如何使用它吗…...

wordpress posts_nav_link/湖南专业seo优化

我执行了一个impdp&#xff0c;但它没有完成&#xff0c;因为表空间中没有空间。我停止了impdb&#xff0c;现在我需要删除新建用户及其下的对象&#xff1a;SQL> drop user TEST cascade;drop user TGK_EXOR_IFIL_008_432 cascade*ERROR at line 1:ORA-00604: error occurr…...