树莓派触摸屏校准以及QT触摸屏相关问题解决

  • 前言
    • 树莓派触摸屏校准
    • QT触摸屏校准

前言

本人之所以写这篇论文,是因为在项目过程中做QT界面的校准时遇到了很多问题,在查找资料与自己摸索后想整理下这边相关的解决方法。

树莓派触摸屏校准

在进行屏幕旋转或者触摸屏初始触摸位置不正确的时候需要进行的操作。
其中一种方法是使用xinput_calibrate工具进行屏幕校准。

sudo apt-get install xinput_calibrator ##下载
xinput_calibrator ##运行

xinput_calibrator后 ,工具会提示你电机红色十字架校对点。 然后反馈输出类似:
Calibrating EVDEV driver for “eGalax Inc. USB TouchController” id=8
current calibration values (from XInput): min_x=1938, max_x=114 and min_y=1745, max_y=341
Doing dynamic recalibration:
Setting new calibration data: 121, 1917, 317, 1741
–> Making the calibration permanent <–
copy the snippet below into ‘/etc/X11/xorg.conf.d/99-calibration.conf’
Section “InputClass”
Identifier “calibration”
MatchProduct “eGalax Inc. USB TouchController”
Option “Calibration” “121 1917 317 1741″
Option “SwapAxes” “1″
EndSection

按照提示 复制Section信息 到 /etc/X11/xorg.conf.d/99-calibration.conf
树莓派写的文件可能有所区别,我写的位置是 /etc/X11/xorg.conf.d/10-evdev.conf
reboot 可以了

QT触摸屏校准

当你翻转屏幕后进行系统的触摸屏校准,打开QT界面时,会发现QT里面的触摸屏还是没有校准前的状态(即你实际点的位置与响应位置成中心对称或者其他状态)。我认为是QT直接读取触摸屏事件的坐标值,而不是校准后的值,而如何去读校准后的值我始终没有找到方法。但是QT官方提供了解决方法。

/dev/input/… - Specifies the name of the input device. When not given, Qt looks for a suitable device either via libudev or by walking through the available nodes.
rotate - On some touch screens the coordinates must be rotated, which is done by setting rotate to 90, 180, or 270.
invertx and inverty - To invert the X or Y coordinates in the input events, pass invertx or inverty.

比如说,点击位置与响应位置成中心对称,你可以将下面这条环境变量写入/etc/profile文件中

export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event5:rotate=180

/dev/input/event* 你可以使用cat /proc/bus/input/devices命令查看触摸屏对应的事件。

好了,如果你的触摸屏原本触摸点没有偏差的话,这些操作就可以解决你的问题了。但是,如果你的触摸屏原本就是不准的,例如你点下去,响应的位置在你点的位置的下方,光通过环境变量进行翻转就不行了。

有一个方法就是利用tslib库的支持了。下载的话可以去tslib的在github的官方地址去下载。安装好后
https://github.com/kergoth/tslib

我们使用tslib里的ts_calibrate进行触摸屏校准,按提示依次点屏幕上的五个十字框即可,然后我们需要使用命令

ts_uinput -d -v

生成一个虚拟的触摸屏事件ts_uinput,然后需要在/etc/profile中添加环境变量

export TSLIB_ROOT=/usr/local/tslib ##tslib库放置的位置
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_CONSOLEDEVICE=none
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib
export TSLIB_TSDEVICE=/dev/input/event3 ##你的触摸屏事件号
export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event4 ##生成的虚拟触摸屏事件号

但是这里有出现一个问题。由于你生成了一个虚拟触摸屏事件,然后系统自己也有一个触摸屏事件,这个时候便可能存在两个触摸屏事件,也就是说你点击触摸屏其实有两个事件相应。这时候你可以修改X-Window的配置信息/usr/share/X11/xorg.conf.d/10-evdev.conf,将图中带“touchscreen”那一段中的红框event*改为你的虚拟触摸屏事件ts_uinput的event号即可。这样就只有一个触摸屏在相应操作了。

树莓派触摸屏校准以及QT触摸屏相关问题解决相关推荐

  1. linux蜂鸣器控制实验,【Linux公开课】蜂鸣器使用、LCD背光控制、触摸屏校准、GPIO操作...

    摘要为方便使用蜂鸣器,系统为蜂鸣器提供类似LED的操作接口,对应的操作文件是/sys/class/leds/beep/brightness.写入1使蜂鸣器鸣叫,写入0停止鸣叫- 8.12 蜂鸣器使用 ...

  2. Android电阻触摸屏校准

    首先电阻屏为什么需要校准,这是电气方面的知识,我也不懂,这里就不说了,这里主要讲讲自己在项目中是怎么通过应用程序来实现校准的,好记性不如烂笔头这里有一篇讲解触摸屏校准原理和优化的文章,道客巴巴上的,先 ...

  3. linux内核关闭触摸屏校准,触摸屏校正原理

    1,触摸屏校准通用方法 主要采用以下公式,实现触摸屏校正,其中XL, YL是显示屏坐标,XT, YT是触摸屏坐标, XL = XT*A+YT*B+C; YL = XT*D+YT*E+F;    公式( ...

  4. 更改触摸屏校准程序界面提示文字

    BSP中提供的触摸屏校准程序在个别设备上用起来可能不太适合,比如说我们的设备屏幕宽度只有 240pixels,会有部分字符超出屏幕外侧,原以为这是BSP的提供的程序,无源码没办法修改,这两天才知道原来 ...

  5. [转]Android 触摸屏校准

    Android 触摸屏校准 话接上回,我们发现了手工利用 tslib 校验触摸屏的缺点.那么这一回 我们就来一次稍微高级一点的校验吧. 我们其实只需要相对的 x,y 以及lcd的 x,y 就可以把校验 ...

  6. QT触摸屏上TouchEvent 和 MouseEvent触发的顺序

    项目中遇到触摸屏上 ,手长按自定义控件,MousePresssEvent 和 MouseReleaseEvent事件几乎同时触发,无法达到鼠标长按的效果,通过添加日志,QT触摸屏上TouchEvent ...

  7. 鸿合一体机触屏没反应怎么办_一体机电脑触摸屏没反应怎么办 触摸屏一体机故障解决方法...

    [一体机故障]一体机电脑触摸屏没反应 触摸屏一体机常见故障解决方法 触摸屏一体机常见故障解决方法 1. 触摸屏不准 [ 故障现象 ] 一台五线电阻触摸屏,用手指触摸显示器屏幕的部位不能正常地完成对应的 ...

  8. STM32——触摸屏实验-电容型触摸屏-M4

    一.触摸屏 触摸屏(touch screen)又称为"触控屏"."触控面板",是一种可接收触头等输入讯号的感应装置.作为一种新型的电脑输入设备,可以用来取代传统 ...

  9. 计算机模拟触摸屏,西门子人机界面(触摸屏HMI)与虚拟仿真应用技术

    汽车制造业中有一项皇冠顶级的技术就是仿真,正是有了仿真这项技术,低成本的反复测试,不断的进行仿真操作,不断的进行数据校对,使得欧洲国家的汽车制造技术在装配精度上非常高,汽车装配合格率达到了惊人99%的 ...

  10. 触屏计算机显示器CDU,触摸屏显示器是什么 触摸屏显示器怎么样【详解】

    [触摸屏显示器]触摸屏显示器是什么 触摸屏显示器怎么样 触摸屏显示器是什么 触摸屏显示器 ( Touch Screen )可以让使用者只要用手指轻轻地碰计算机显示屏上的图符或文字就能实现对主机操作,这 ...

最新文章

  1. Annotation注解(有源代码)
  2. XP系统自动关机命令
  3. redis存储java对象存储_Spring-Data-Redis存储对象(redisTemplate)
  4. SAP ABAP SM50的另类用途 - ABAP工作进程对数据库表读取操作的检测
  5. 阿里云原生张羽辰:服务发现技术选型那点事儿
  6. Chialisp是什么
  7. 区块链的爆发仍为时尚早......
  8. VS Code 轻量级插件推荐
  9. Fiddler改包场景03——拦截响应,修改响应,放行响应
  10. [Usaco2008 Mar]River Crossing渡河问题
  11. java正则表达式 提取 host_使用正则表达式获取链接的Host
  12. 解锁虚拟服务器,华为解锁码忘记了可以用云服务器
  13. 小米平板2 Windows刷回MIUI9线刷教程(2019)
  14. 『IT视界』 [IT风云]MyEclipse 8.5 开发环境配置 插件安装(转载)
  15. 数据库中文mybatis连接mysql数据库插入中文乱码
  16. Photoshop CC 2015安装激活
  17. Burpsuite介绍及2022.8.2版本超详细安装教程(图文版)
  18. 【混合编程jni 】第九篇之Jni总结
  19. java 一个线程占多少内存_一个jvm线程占用多少操作系统内存
  20. C语言-验证哥德巴赫猜想

热门文章

  1. 如何在自己的板子上实现android关机
  2. 基于Linux的录像机:Neuros OSD
  3. C# 扫描识别图片中的文字(.NET Framework)
  4. 蛐蛐播放器 android,蛐蛐五线谱播放器
  5. htc magic 刷机
  6. 阿拉伯数字 - 书法 - 详解
  7. SpringCloud-Netflix
  8. at android.widget.Toast$TN.handleShow(Toast.java:501)自定义布局异常
  9. PHP项目汇报ppt模板,免费工作汇报模板(课堂PPT)
  10. Kylin多维分析引擎(四):Kylin Cude构建流程详解