ok113i平台——qt+tslib支持usb触摸屏热插拔功能实现
问题:重新插拔设备,需要软件重启才能接收到触摸事件
愿因:是因为qt程序的tslib库的操作逻辑是在构造函数里面连接一次usb触摸设备,具体看如下文件内容:
/home/forlinx/OK113i-linux-sdk/buildroot/buildroot-201902/dl/qt5base/qtbase/src/platformsupport/input/tslib/qtslib.cpp;
所以重新插拔usb后,qt程序并没有重新连接usb触摸设备,导致没有触摸数据接收;
解决方案:
参考:https://blog.csdn.net/alone4together/article/details/115269753
参考方案中的代码需要更改一下,完整的qtslib.cpp更改内容如下:
QTsLibMouseHandler::QTsLibMouseHandler(const QString &key,const QString &specification,QObject *parent): QObject(parent),m_notify(0), m_x(0), m_y(0), m_pressed(0), m_rawMode(false)
{m_dev=0;qCDebug(qLcTsLib) << "Initializing tslib plugin" << key << specification;setObjectName(QLatin1String("TSLib Mouse Handler"));......else{qErrnoWarning(errno, "tslib: Cannot open input device %s", device.constData());}QFileSystemWatcher *m_fileWatcher = new QFileSystemWatcher(this);// QString dev_=device;m_fileWatcher->addPath(QLatin1String("/dev/input/")); // "dev/input/"connect(m_fileWatcher, &QFileSystemWatcher::directoryChanged, this, &QTsLibMouseHandler::handleHotPlugWatch);
}void QTsLibMouseHandler::handleHotPlugWatch(const QString &path)
{QByteArray device = qgetenv("TSLIB_TSDEVICE");QFile file(QString::fromLocal8Bit(device)); // shoud be TSLIB_TSDEVICEqCDebug(qLcTsLib) << path << "is changing";if (file.exists()){qCDebug(qLcTsLib) << "tslib device disconnected .., try connecting ...";disconnect(m_notify, 0, 0, 0);if (m_notify){delete m_notify;m_notify = 0;}// QByteArray device = qgetenv("TSLIB_TSDEVICE");m_dev = ts_open(device.constData(), 1);if (!m_dev){qCDebug(qLcTsLib) << " touchscreen doesn't exist";qErrnoWarning(errno, "ts_open() failed");}else{if (ts_config(m_dev)){qErrnoWarning(errno, "ts_config() failed");}int fd = ts_fd(m_dev);if (fd >= 0){qCDebug(qLcTsLib) << "tslib device is" << device;m_notify = new QSocketNotifier(fd, QSocketNotifier::Read, this);connect(m_notify, &QSocketNotifier::activated, this, &QTsLibMouseHandler::readMouseData);}else{qErrnoWarning(errno, "tslib: Cannot open input device %s", device.constData());}return;}qCDebug(qLcTsLib) << path << "is added";}else{if (m_dev){ts_close(m_dev);m_dev = 0;}qCDebug(qLcTsLib) << path << "is removed";}
}
改完qtslib.cpp需要编译buildroot,编译后的qtslib.cpp会在如下路径:
/home/OK113i-linux-sdk/out/t113_i/ok113i/longan/buildroot/build/qt5base-5.12.5/src/platformsupport/input/tslib/qtslib.cpp
需要注意单独编译的buildroot后,还需要全编译,才会将根文件系统镜像rootfs.ext2更新到系统镜像;
相关文章:
ok113i平台——qt+tslib支持usb触摸屏热插拔功能实现
问题:重新插拔设备,需要软件重启才能接收到触摸事件 愿因:是因为qt程序的tslib库的操作逻辑是在构造函数里面连接一次usb触摸设备,具体看如下文件内容: /home/forlinx/OK113i-linux-sdk/buildroot/buildroot-201902/dl…...
游戏引擎学习第112天
黑板:优化 今天的内容是关于优化的,主要讨论了如何在开发中提高代码的效率,尤其是当游戏的帧率出现问题时。优化并不总是要将代码做到最快,而是要确保代码足够高效,以避免性能问题。优化的过程是一个反复迭代的过程&a…...
深度学习笔记——LSTM
大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细介绍面试过程中可能遇到的LSTM知识点。 文章目录 LSTM(Long Short-Term Memory)LSTM 的核心部件LSTM 的公式和工作原理(1) 遗忘门&a…...
基于SpringBoot的“食物营养分析与推荐网站”的设计与实现(源码+数据库+文档+PPT)
基于SpringBoot的“食物营养分析与推荐网站”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:SpringBoot 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 系统功能结构图 系统首页界面 系统注册…...
23种设计模式 - 工厂方法模式
模式定义 工厂方法模式(Factory Method Pattern)是一种创建型设计模式,定义用于创建对象的接口,让子类决定实例化哪个类,从而将对象创建过程延迟到子类。其核心目的是解耦对象的创建与使用,增强系统的扩展…...
【ISO 14229-1:2023 UDS诊断(ECU复位0x11服务)测试用例CAPL代码全解析①】
ISO 14229-1:2023 UDS诊断【ECU复位0x11服务】_TestCase01 作者:车端域控测试工程师 更新日期:2025年02月16日 关键词:UDS诊断协议、ECU复位服务、0x11服务、ISO 14229-1:2023 TC11-001测试用例 用例ID测试场景验证要点参考条款预期结果TC…...
Discuz! X3.5 根目录权限设置
在 Discuz! X3.5 中,根目录的权限设置是确保网站安全性和功能正常运行的关键。如果权限设置不当,可能会导致文件无法访问、安全问题(如文件被篡改)或功能异常。以下是关于 Discuz! X3.5 根目录权限设置的详细说明和建议: 1. 根目录位置 Discuz! X3.5 的根目录通常是网站的…...
建筑兔零基础自学python记录22|实战人脸识别项目——视频人脸识别(下)11
这次我们继续解读代码,我们主要来看下面两个部分; 至于人脸识别成功的要点我们在最后总结~ 具体代码学习: #定义人脸名称 def name():#预学习照片存放位置path M:/python/workspace/PythonProject/face/imagePaths[os.path.join(path,f) f…...
React之旅-02 创建项目
创建React项目,常用的方式有两种: 官方提供的脚手架,官网:https://create-react-app.dev/。如需创建名为 my-app 的项目,请运行如下命令: npx create-react-app my-app 使用Vite包,官网&…...
uniapp 滚动尺
scale组件代码(部分class样式使用到了uview1.0的样式) <template><view><view class"scale"><view class"pointer u-flex-col u-col-center"><u-icon name"arrow-down-fill" size"26&qu…...
Redux中间件redux-thunk和redux-saga的具体区别是什么?
Redux 中间件是增强 Redux 功能的重要工具,redux-thunk 和 redux-saga 是两个常用的中间件,它们在处理异步操作和副作用时提供了不同的方式和理念。以下是两者的具体区别: 1. 概念与设计理念 redux-thunk 简洁:redux-thunk 是一…...
Windows 启动 SSH 服务
Windows 启动 SSH 服务 一、OpenSSH Server 安装 以 Win10 系统为例 打开设置 -> 系统 -> 可选功能 在 添加的功能 查看是否安装了 OpenSSH 服务 或者 OpenSSH Server 如果没有安装,找到 系统->添加可选功能 -> 查看功能->搜索 OpenSSH 服务 ->…...
rust笔记1-学习资料推荐
学习Rust的Trait、生命周期和模式确实需要一些时间,尤其是当这些概念在其他语言中不常见时。以下是一些学习资料和建议,帮助你更好地理解这些概念: 1. 官方文档与书籍 《The Rust Programming Language》(俗称“The Book”&…...
MySQL 的存储引擎有哪些?它们之间有什么区别? MySQL InnoDB 引擎中的聚簇索引和非聚簇索引有什么区别? MySQL 的索引类型有哪些?
MySQL 的存储引擎有哪些?它们之间有什么区别? 先来回顾以下我们业务场景下一般的数据库访问的过程应用——>server层 ——>存储引擎层——>磁盘 官网描述: InnoDB: MySQL 8.4 中的默认存储引擎。 InnoDB 是事务安全(符…...
【Linux探索学习】第二十六弹——进程通信:深入理解Linux中的进程通信
Linux探索学习: https://blog.csdn.net/2301_80220607/category_12805278.html?spm1001.2014.3001.5482 前言: 在Linux操作系统中,进程通信(IPC)是操作系统的一项核心功能,用于在不同进程之间交换数据或…...
netcore https配置
一、生成证书 1. 安装 OpenSSL 如果尚未安装 OpenSSL,可以通过以下命令安装:Ubuntu/Debian:sudo apt update sudo apt install openssl CentOS/RHEL:sudo yum install openssl 2. 生成私钥 使用以下命令生成私钥文件(private.key)…...
遥感影像目标检测:从CNN(Faster-RCNN)到Transformer(DETR)
我国高分辨率对地观测系统重大专项已全面启动,高空间、高光谱、高时间分辨率和宽地面覆盖于一体的全球天空地一体化立体对地观测网逐步形成,将成为保障国家安全的基础性和战略性资源。未来10年全球每天获取的观测数据将超过10PB,遥感大数据时…...
rtcwake - Linux下定时唤醒计算机
rtcwake 是一个用于通过实时时钟(RTC)唤醒计算机的工具。它常用于在 Linux 系统中设置计算机在指定时间自动唤醒或关闭。以下是对命令 rtcwake -m off -s ${sleep_time} 的详细解析: 命令解析 bash复制 rtcwake -m off -s ${sleep_time} 1…...
使用vscode调试transformers源码
简要介绍如何使用vscode调试transformers源码 以源码的方式安装transformers(官方手册为Editable install) 优先参考官方手册 git clone https://github.com/huggingface/transformers.git cd transformers pip install -e .以下展示transformers/exa…...
LeetCode39
LeetCode39 目录 题目描述示例思路分析代码段代码逐行讲解复杂度分析总结的知识点整合总结 题目描述 给定一个无重复元素的整数数组 candidates 和一个目标整数 target,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复选…...
sql not in 优化
sql优化 1、not in 的优化 not in和not exists不会命中索引,可以优化为通过left join实现; 例如要查询存在于a表但不存在与b表的数据,比较容易理解的sql写法: SELECT * FROM table_a WHERE id NOT IN (SELECT aid FROM table_b)…...
同花顺C++面试题及参考答案
对 C 和 C++ 哪个更熟悉? 在编程语言的学习与实践中,我对 C++ 更为熟悉。C 语言作为一门经典的编程语言,以其高效、灵活和接近硬件的特性,在系统编程、嵌入式开发等领域占据着重要地位。它提供了丰富的底层操作能力,如指针操作、内存管理等,为开发者直接控制计算机资源提…...
PostgreSQL 添加索引导致崩溃,参数调整需谨慎--文档未必完全覆盖场景
开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, OceanBase, Sql Server等有问题,有需求都可以加群群内有各大数据库行业大咖,可以解决你的问题。加群请联系 liuaustin3 ,(共2720人左右 1 …...
【Linux Redis】关于用docker拉取Redis后,让虚拟机运行起来redis,并使得其可以连接到虚拟机外的navicat。
步骤一:拉取Redis镜像 docker pull redis 这个命令会下载最新版本的Redis镜像到你的本地Docker仓库中。你也可以指定一个具体的版本号,例如docker pull redis:6.2.6,来拉取特定版本的Redis镜像。 如果拉取遇到问题请参考【Linux AnolisOS】关…...
Python常见面试题的详解8
1. 变量作用域和查找规则(LEGB) 作用域层级: Local:函数内部作用域 Enclosing:闭包函数外层作用域 Global:模块全局作用域 Built-in:内置命名空间 查找顺序:L → E → G → B关…...
【含文档+PPT+源码】基于微信小程序的校园志愿者管理系统的设计与实现
项目介绍 本课程演示的是一款 基于微信小程序的校园志愿者管理系统的设计与实现,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含:项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行本…...
LED灯闪烁实验:实验介绍
文章目录 1 实验目标2 工具链2.1 硬件2.2 软件 3 实验流程 1 实验目标 本实验结合Matlab/Simulink工具链和STM工具链,实现STM32开发板上的LED灯闪烁功能。 2 工具链 2.1 硬件 STM32F103C8T6最小系统板 STM32F103C8T6最小系统板是基于STM32F103C8T6微控制器的开发…...
亲测Windows部署Ollama+WebUI可视化
一. Ollama下载 登录Ollama官网(Ollama)点击Download进行下载 如果下载很慢可用以下地址下载: https://github.com/ollama/ollama/releases/download/v0.5.7/OllamaSetup.exe 在DeepSeek官网上,你可以直接点击【model】 到达这个界面之后,…...
代码随想录-- 第一天图论 --- 岛屿的数量
99 统计岛屿的数量 c 99. 岛屿数量 #include <iostream> #include <vector> #include <queue>using namespace std;struct MGraph {int numVertices, numEdges;vector<vector<int>> Edge; };int dir[4][2] {{1, 0}, {0, 1}, {-1, 0}, {0, -1}…...
Docker 部署 Nacos (图文并茂超详细)
部署 Nacos ( Docker ) [Step 1] : 拉取 Nacos 镜像 docker pull nacos/nacos-server:v2.1.1[Step 2] : 创建目录 ➡️ 创建容器 ➡️ 拷贝文件 ➡️ 授权文件 ➡️ 删除容器 # 创建目录 mkdir -p /data/nacos/{conf,logs,data}# 创建容器 docker run -p 8848:8848 --name …...
