OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 800|回复: 2

stm32mp157-7吋1024x600觸摸屏,QT下x,y軸互換的問題

[复制链接]

18

主题

77

帖子

0

精华

初级会员

Rank: 2

积分
180
金钱
180
注册时间
2016-1-15
在线时间
49 小时
发表于 2023-8-21 11:25:49 | 显示全部楼层 |阅读模式
10金钱
本帖最后由 KCLin 于 2023-8-21 12:56 编辑

請問一下前輩高手
我的stm32mp1的系統是根據原子驅動開發的教程搭建
觸摸驅動用的是kernel menuconfig裡面的
基本上,tslib的測試與校正沒有問題

但是,我搭建好QT並且使用了QT的一個例子,並開啟觸摸做為滑鼠,做測試時
QT 應用裡面的鼠標移動剛好與手指滑動 x,y 軸互調

以下是關於觸摸與 QT 的環境設定:
  1. export LD_LIBRARY_PATH=/lib:/usr/lib:/var/lib
  2. export TSLIB_CALIBFILE=/etc/pointercal
  3. export TSLIB_TSDEVICE=/dev/input/event0
  4. export TSLIB_CONFFILE=/etc/ts.conf
  5. #export TSLIB_PLUGINDIR=/lib/ts


  6. export QT_ROOT=/usr/qt
  7. export QT_LOGGING_RULES=qt.qpa.input=true                                                                 #好像是輸出觸摸事件用的,其實我看不到觸摸點數據
  8. export QT_QPA_GENERIC_PLUGINS=evdevtouch:/dev/input/event0                                     #直接以觸摸屏輸出作為QT的觸摸屏信號
  9. export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event0:rotate=90:invertx #觸摸 x,y的轉動,用來修正觸摸不匹配用的,但是我怎麼改都沒有任何變化
  10. export QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/qt/plugins
  11. export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0
  12. export QT_QPA_EVDEV_MOUSE_PARAMETERS=/dev/input/event0                                       #將觸摸事件作為鼠標事件
  13. export QT_QPA_FB_HIDECURSOR=0                                                                                #不隱藏鼠標
复制代码

查詢資料,解決觸摸屏與QT 應用不匹配的方式有兩個
1.使用 export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETER 並設定 rotate 的角度參數,如上
但,我怎樣改都沒有變化,不知是哪錯了,還請大神指教

2.使用 uinput 座虛擬輸入設備,銜接 tslib 作為 QT 的觸摸信號源
但是原子用的 linux-5.4.31 menuconfig 裡面似乎沒有這個選項,以致 kernel 沒有機會加入 uinput 模組
(經查 uinput 在 linux5 的版本,只有 5.0–5.19 有這個模組,參考 https://cateee.net/lkddb/web-lkddb/INPUT_UINPUT.html)
所以使用原子的 linux kernel 5.4.31 似乎就無法用這個方法
還是說,其實有,只是我沒找到,還請高手們明示一下

所以,如果要使用 uinput,就必須用 linux 6.x 或 5.15 的 kernel

我知道,用出廠鏡像不會有問題,可是,那就失去開發板的意義了!(我就直接樹梅派就好了不是嗎?)


不知還有沒有別種解法?
感謝您的閱讀與解答!



最佳答案

查看完整内容[请看2#楼]

自問自答 1. 複製 tslib 上的 ts_uinput_start.sh,放在你要的路徑位置 這會產生一個 /dev/input/ts_uinput 你可以藉由export的設定用它來接上 Qt 其中 #!/bin/bash 刪去 參考 : https://github.com/libts/tslib#setup-and-configure-tslib https://github.com/libts/tslib/blob/master/tools/ts_uinput_start.sh 2.把 ts_uinput_start.sh 放進 /etc/init.d/Sautorun 內,開機自動執行 3./etc/profile 裡的環境變 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

18

主题

77

帖子

0

精华

初级会员

Rank: 2

积分
180
金钱
180
注册时间
2016-1-15
在线时间
49 小时
 楼主| 发表于 2023-8-21 11:25:50 | 显示全部楼层
自問自答
1. 複製 tslib 上的 ts_uinput_start.sh,放在你要的路徑位置
這會產生一個 /dev/input/ts_uinput
你可以藉由export的設定用它來接上 Qt
其中 #!/bin/bash 刪去
參考 :
https://github.com/libts/tslib#setup-and-configure-tslib
https://github.com/libts/tslib/blob/master/tools/ts_uinput_start.sh

2.把 ts_uinput_start.sh 放進 /etc/init.d/Sautorun 內,開機自動執行

3./etc/profile 裡的環境變量:
  1. export QT_ROOT=/usr/qt
  2. export QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/qt/plugins
  3. export QT_LOGGING_RULES=qt.qpa.input=true
  4. export QT_QPA_GENERIC_PLUGINS=/dev/input/ts_uinput
  5. export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/ts_uinput
  6. export QT_QPA_EVDEV_KEYBOARD_PARAMETERS=/dev/input/even1
  7. export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0
  8. export QT_QPA_EVDEV_MOUSE_PARAMETERS=/dev/input/ts_uinput
  9. export QT_QPA_PLATFORM=eglfs
  10. export QT_QPA_FB_TSLIB=1
  11. export QT_QPA_FB_HIDECURSOR=0
复制代码

實測正確可用!

回复

使用道具 举报

18

主题

77

帖子

0

精华

初级会员

Rank: 2

积分
180
金钱
180
注册时间
2016-1-15
在线时间
49 小时
 楼主| 发表于 2023-8-22 05:47:01 | 显示全部楼层
先自己回答一下
直接用 vim 打開 .config 搜尋 "UINPUT" 就可以找到 uinput 選項,改成 y
在 menuconfig 裡面的選項是  
Device Drivers > Input device support > Miscellaneous devices > User level driver support
不是 UINPUT ....
能不能用,再試試!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 09:49

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表