This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] Linux/AM3352:触摸屏问题

Guru**** 2562920 points
Other Parts Discussed in Thread: AM3352

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/594835/linux-am3352-touchscreen-issues

器件型号:AM3352

工具/软件:Linux

您好!

我正在使用基于 AM3352的定制板。

我需要在 qt GUI 应用程序上运行触摸屏。

在中、LCD 上的 Qt 应用 GUI 在没有"Weston"和"-platform linuxfb"的情况下工作正常。

但是当我触摸触摸屏时、我遇到问题、我得到 X 和 Y 坐标、我使用"evtest"实用程序进行了检查。

在 Matrix GUI 应用程序(作为-platform linuxfb 运行)或任何自定义 qt 应用程序中、触摸 不起作用。

但它正在运行的文件中提供了"pinchzoom"示例。(放大缩小在 pinchzoom 中正常工作)。

以下是参考日志。

/----------------- 日志------------------------------------------------------- /

root@AM335x-EVM:~ evtest
未指定设备,正在尝试扫描所有/dev/input/event
可用器件:
/dev/input/event0:     goodix-ts
/dev/input/event1:     volume_keys@0
/dev/input/event2:     TI-TSC
选择器件事件编号[0-2]:0
输入驱动程序版本为1.0.1
输入器件 ID:总线0x18供应商0xDead product 0xb牛肉 版本0x28bb
输入设备名称:"goodix-ts"
支持的事件:
 事件类型0 (EV_SYN)
 事件类型1 (EV_KEY)
   事件代码330 (BTN_touch)
 事件类型3 (EV_ABS)
   事件代码48 (ABS_MT_TOUCH MAJOR)
          值0
     最小值0        
     最大     255
   事件代码53 (ABS_MT_POSITION _X)
          值0
     最小值0        
     最大     480
   事件代码54 (ABS_MT_POSITION _Y)
          值0
     最小值0        
          最大272
   事件代码57 (ABS_MT_TRACKING_ID)
          值0
     最小值0        
     最大     255
   事件代码58 (ABS_MT_PRESSURE)
          值0
     最小值0        
     最大     255
属性:
 属性类型1 (INPUT_PROP_DIRECT)
正在测试... (中断以退出)
事件:时间1494428001.078759、类型1 (EV_KEY)、代码330 (BTN_touch)、值1
事件:时间1494428001.078759、类型3 (EV_ABS)、代码58 (ABS_MT_PRESSURE)、值15
事件:时间1494428001.078759、类型3 (EV_ABS)、代码48 (ABS_MT_TOUCH _MAJOR)、值15
事件:时间1494428001.078759、类型3 (EV_ABS)、代码57 (ABS_MT_TRACKING_ID)、值0
事件:时间1494428001.078759、类型3 (EV_ABS)、代码53 (ABS_MT_POSITION _X)、值282
事件:时间1494428001.078759、类型3 (EV_ABS)、代码54 (ABS_MT_POSITION _Y)、值151
事件:时间:1494428001.078759、++++++++++++++ SYN_MT_REPORT ++++++++++++++
事件:时间1494428001.078759,--- SYN_REPORT --------
事件:时间1494428001.107006、类型1 (EV_KEY)、代码330 (BTN_touch)、值0
事件:时间1494428001.107006、++++++++++++++ SYN_MT_REPORT ++++++++++++++
事件:时间1494428001.107006,--- SYN_REPORT --------

------------------------------------------------------- /

看起来触摸驱动程序工作正常、但矩阵 GUI 应用程序不接受使用"linuxfb"作为平台的触摸。


我还交叉编译"tslib "并尝试运行"ts_calibration"、但看起来好像没有进行校准。
下面是您参考的日志和 env 设置。

/----------------- 导出的变量------------------------------------------------------- /
导出 QT_PLUGIN_PATH=/usr/lib/qt5/plugins
导出 QT_QPA_FONTDIR =/usr/lib/fonts
导出 QT_QPA_platform_plugin_path=/usr/lib/qt5/plugins/platforms
导出 QT_QPA_platform=linuxfb
导出 QT_QPA_EVDEV_Touchscreen 参数=/dev/input/event0
导出 LD_library_path=$LD_library_path:/home/root/Tslib/Install/lib
导出 TSLIB_TSEVENTTYPE='input'
导出 TSLIB_FBDEVICE=/dev/fb0
导出 TSLIB_TSDEVICE=/dev/input/event0
导出 TSLIB_conffile=/home/root/Tslib/Install/etc/ts.conf
导出 TSLIB_PLUGINDIR=/home/root/Tslib/Install/lib/ts
导出 TSLIB_CONSOLEDEVICE='none'

------------------------------------------------------- /
/--------------- 输出 ts_calibrate --- /
root@AM335x-EVM:~/Tslib/Install/bin #./ts_calibr
XRES = 480、YRES = 272


/---------------------------------------------------------- /

屏幕上显示校准代码也会显示在屏幕上。
但是当我触摸时、不会进行校准、此时在"evtest"实用程序中、我可以看到 X 和 Y 坐标。

请做不必要的事。

此致、
--罗纳克

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    软件团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    感谢您的回答。

    此致、

    --罗纳克

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    罗纳克、您好!

    矩阵浏览器本身是 Qt 应用程序、因此如果触摸屏在任何 Qt 应用程序上工作、它也应通过矩阵浏览器工作。 尝试导出 QT_QPA_EVDEV_Touchscreen 参数="rotate=180"、因为您可能镜像了触摸指示器。

    另请尝试安装最新的 tslib github.com/.../releases
    尝试取消设置 TSLIB_CONSOLEDEVICE 并进行校准。
    尝试仅导出 TSLIB_FBDEVICE=/dev/fb0导出 TSLIB_TSDEVICE=/dev/input/touchscreen0、而不是所有这些内容。

    另请查看这些 wiki 页面。
    processors.wiki.ti.com/.../Matrix_Users_Guide
    processors.wiki.ti.com/.../How_to_Recalibrate_the_Touchscreen
    processors.wiki.ti.com/.../AM335x_Touchscreen_Driver's_Guide

    此致、
    Kemal

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Kemal、

    我进行了您所说的更改、安装新的 slib1.10、并参考您发送的所有链接。

    但它仍然不会在 Qt 中获取输入事件。

    /----------------- 日志------------------------------------------------------- /

    root@AM335x-EVM:~# export QT_QPA_EVDEV_Touchscreen 参数="rotate=180"
    root@AM335x-EVM:~# unset TSLIB_CONSOLEDEVICE
    root@AM335x-EVM:~# export TSLIB_FBDEVICE=/dev/fb0
    root@AM335x-EVM:~# export TSLIB_TSDEVICE=/dev/input/touchscreen0
    根目录@AM335x-EVM:~编号
    根目录@AM335x-EVM:~编号
    根目录@AM335x-EVM:~编号
    root@AM335x-EVM:~ ts_calibr
    XRES = 480、YRES = 272
    [231.453268]< >[gt1x_touch 事件处理程序:1303](0)(63、41)[13]
    [231.463505]< >[gt1x_touch 事件处理程序:1303](0)(63、41)[13]
    [231.477508]< >[gt1x_request_event_handler:1104]请求状态:0xff。
    [231.491344]< >[gt1x_touch 事件处理程序:1303](0)(63、41)[13]
    [231.506893]< >[gt1x_request_event_handler:1104]请求状态:0xff。
    [231.523201]< >[gt1x_touch 事件处理程序:1303](0)(63、41)[13]
    [231.540587]< >[gt1x_request_event_handler:1104]请求状态:0xff。
    [231.561800]< >[gt1x_request_event_handler:1104]请求状态:0xff。
    [231.581695]< >[gt1x_request_event_handler:1104]请求状态:0xff。
    [231.601918]< >[gt1x_request_event_handler:1104]请求状态:0xff。

    ------------------------------------------------------- /

    GUI 将在 LCD 上打开、我可以看到光标、但当我触摸光标校准时、它不接受输入。

    在触摸驱动程序中、我可以看到内核日志中的 X 和 Y 位置。

    我缺少什么吗?? 请做不必要的事。

    此致、

    --罗纳克

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Kemal、

    根据 e2e SDK (3.2.0.5)上的链接、具有 Qt5.6、默认情况下它支持 evdev 来代替 tslib。
    那么、如何使用 evdev 进行校准、由于 ts_calibrate 不起作用、是否有任何校准方法?

    此致、
    --罗纳克
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Evdev 会自动校准。 尝试禁用它 QT_QPA_EGLFS_DISABLE_INPUT=1、并强制您的应用使用-plugin=tslib、然后检查是否所有 linuxfb 触控输入处理程序都是内置的、另请参阅此页面 doc.qt.io/.../embedded-linux.html 、并仔细检查设备树中的触摸屏设备节点设置。