hy46系列的触摸 能读取到了坐标 也执行到上报坐标函数 我在触摸的屏幕的时候 在内核驱动能打印出触摸的坐标,但是就是好像没有上报成功样
下面是打印的坐标数据
[ 518.357043] event->touch_point == 1
[ 518.360605] x ==358 y = 255,pressure = 5
[ 518.368459] id=0 event=2 x=358 y=255
[ 518.372045] event->touch_point == 1
[ 518.375532] x ==358 y = 255,pressure = 5
[ 518.383471] id=0 event=2 x=354 y=259
[ 518.387064] event->touch_point == 1
[ 518.390631] x ==354 y = 259,pressure = 5
[ 518.398486] id=0 event=2 x=354 y=259
[ 518.402073] event->touch_point == 1
[ 518.405560] x ==354 y = 259,pressure = 5
[ 518.413428] id=0 event=2 x=352 y=262
[ 518.417021] event->touch_point == 1
[ 518.420581] x ==352 y = 262,pressure = 5
[ 518.428386] id=0 event=2 x=352 y=262
[ 518.431970] event->touch_point == 1
[ 518.435465] x ==352 y = 262,pressure = 5
[ 518.443339] id=0 event=2 x=350 y=265
[ 518.446934] event->touch_point == 1
[ 518.450518] x ==350 y = 265,pressure
离线
怎么判断没有上报成功的?
我以前的触摸是可以的 就是在屏幕上双击会跳转到其他页面 但是这个hy的没有反应
离线
用 evtest 测试
这个evtest忘记了怎么测试了 晕哥有帖子吗 参考吗
离线
是这个吗
离线
怎么我输入evtest没有哦哦
离线
你写个QT的鼠标捕获事件麻
离线
你都没有安装 evtest, 自己编译安装吧,省事就用 buildroot 勾选 evtest
离线
出现这样的 但是我看了下 QT这一块还是没有跳转
evtest event0
Input driver version is 1.0.1
Input device ID: bus 0x0 vendor 0x0 product 0x0 version 0x0
Input device name: "hy46xx_ts"
Supported events:
Event type 0 (EV_SYN)
Event type 1 (EV_KEY)
Event code 325 (BTN_TOOL_FINGER)
Event code 328 (BTN_TOOL_QUINTTAP)
Event code 330 (BTN_TOUCH)
Event code 333 (BTN_TOOL_DOUBLETAP)
Event code 334 (BTN_TOOL_TRIPLETAP)
Event code 335 (BTN_TOOL_QUADTAP)
Event type 3 (EV_ABS)
Event code 47 (ABS_MT_SLOT)
Value 0
Min 0
Max 4
Event code 48 (ABS_MT_TOUCH_MAJOR)
Value 0
Min 0
Max 255
Event code 53 (ABS_MT_POSITION_X)
Value 0
Min 0
Max 799
Event code 54 (ABS_MT_POSITION_Y)
Value 0
Min 0
Max 1279
Event code 57 (ABS_MT_TRACKING_ID)
Value 0
Min 0
Max 65535
Properties:
Property type 0 (INPUT_PROP_POINTER)
Property type 3 (INPUT_PROP_SEMI_MT)
Testing ... (interrupt to exit)
[ 198.325866] id=0 event=0 x=448 y=258
[ 198.329494] event->touch_point == 1
[ 198.332986] x ==448 y = 258,pressure = 5
Event: time 5464.167411, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 10
Event: time 5464.167411, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 448
Event: time 5464.167411, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 258
Event: tim[ 198.355623] id=0 event=2 x=448 y=258
e 5464.167411, ++++++++++++++ SYN_MT_REPORT ++++++++++++
Event:[ 198.362928] event->touch_point == 1
time 5464.167411, type 1 (EV_KEY), code 330 (BTN_TOUCH), value [ 198.371959] x ==448 y = 258,pressure = 5
1
Event: time 5464.167411, -------------- SYN_REPORT ----------[ 198.384905] id=0 event=2 x=448 y=258
--
Event: time 5464.211917, ++++++++++++++ SYN_MT_REPORT ++++++[ 198.390644] event->touch_point == 1
++++++
Event: time 5464.211917, -------------- SYN_REPORT -----[ 198.399665] x ==448 y = 258,pressure = 5
-------
Event: time 5464.239598, ++++++++++++++ SYN_MT_REPORT ++++++++++[ 198.412649] id=0 event=1 x=448 y=258
++
Event: time 5464.239598, -------------- SYN_REPORT ---------[ 198.419058] event->touch_point == 1
---
[ 198.428209] uppoint ==0
Event: time 5464.261470, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value -1
Event: time 5464.261470, ++++++++++++++ SYN_MT_REPORT ++++++++++++
Event: time 5464.261470, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 0
Event: time 5464.261470, -------------- SYN_REPORT ------------
离线
分别按下 四个角和正中间,看输出的 xy 坐标是不是正确的,如果不对
你得找厂家要固件,看下手册,看选择硬烧还是软件更新
再不行就通过tslib 流程使用电容屏吧
ts_calibrate
ts_test
我用extest测试了坐标都是对的 ,
但是我用ts_test 打印出说没有这个文件
离线
没有哪个文件?
# ts_test event0
ts_open: No such file or directory
# ts_test
ts_open: No such file or directory
离线
没有哪个文件?
用evtest测试了坐标也对了 这说明是驱动没有问题
离线
离线
Input device ID: bus 0x0 vendor 0x0 product 0x0 version 0x0
这个这里bus是0 对比下了ft5x06的是0x18会有影响吗
Input device ID: bus 0x18 vendor 0x0 product 0x0 version 0x0
离线
这个应该没有影响,你看下 ts_test 不能画线,如果可以说明触摸没有问题。
ts_calibrate
ts_test
我这里用ts_test event0 触摸了有数据返回 但是没有你说的画线,是不可以的啊
ts_calibrate event0 就有数据出来 但是为什么是1024和600l 我的屏幕大小是800*480
# ts_calibrate event0
xres = 1024, yres = 600
离线
离线
当我使用ts_test event0 这个的时候比如打印出来出 842 87 255 和我在内核里面打印读取到的坐标不一样
ts_calibrate event0 这个校正 只要执行了就可以了吗啊 要不要在屏幕上点击 主要是没有看到需要校正的地方
ts_calibrate event0
xres = 1024, yres = 600
^Csignal 2 caught
# ts_calibrate event0^C
# ts_test event0
[ 72.746494] id=0 event=0 x=86 y=46
[ 72.749945] event->touch_point == 1
[ 72.753434] x ==86 y = 46,pressure = 5
19123.588199: 842 87 255
[ 72.776197] id=0 event=2 x=86 y=46
[ 72.779670] event->touch_point == 1
[ 72.783159] x ==86 y = 46,pressure = 5
19123.617915: 842 87 0
[ 72.790433] id=0 event=2 x=86 y=46
[ 72.793843] event->touch_point == 1
[ 72.797329] x ==86 y = 46,pressure = 5
[ 72.805772] id=0 event=1 x=86 y=46
[ 72.809258] event->touch_point == 1
[ 72.812745] uppoint ==0
[ 76.760685] id=0 event=0 x=277 y=64
[ 76.764188] event->touch_point == 1
[ 76.767716] x ==277 y = 64,pressure = 5
19127.602569: 791 200 255
[ 76.790343] id=0 event=2 x=277 y=64
[ 76.793850] event->touch_point == 1
[ 76.797339] x ==277 y = 64,pressure = 5
19127.632232: 791 200 0[ 76.804705] id=0 event=2 x=277 y=64
[ 76.808370] event->touch_point == 1
[ 76.811988] x ==277 y = 64,pressure = 5
离线
校正之后, 和原数据有线性关系。
ts_test 先点击中间那个按钮, 然后能在屏幕画线, 说明就正常了。
主要是我屏幕上没有任何的按钮 就是一个企鹅启动的界面
离线
运行 ts_test 也没有按钮?
不管运行那个都是这个界面
离线
是有两个屏幕 因为以前是用的ft5x06触摸芯片运行QT没有问题 另外一个屏幕就是上次用的SPIlt7381的 现在要用hy46触摸芯片
离线
晕哥 我接上另外一个快屏幕后 那个按钮在那个屏幕上了 这个要怎么弄过来哦哦 另外一块是不带触摸的 就是显示的
最近编辑记录 无情一刀 (2019-08-14 15:04:50)
离线
https://whycan.cn/t_2758.html#p22291
这个链接没看吗?
###根据实际情况填写###
export TSLIB_CALIBFILE='/etc/pointercal'
export TSLIB_CONFFILE='/etc/ts.conf'
export TSLIB_FBDEVICE='/dev/fb0'
export TSLIB_PLUGINDIR='/usr/lib/ts'
export TSLIB_TSDEVICE='/dev/input/event0'
ts_calibrate
ts_test
离线
https://whycan.cn/t_2758.html#p22291
这个链接没看吗?
###根据实际情况填写###
export TSLIB_CALIBFILE='/etc/pointercal'
export TSLIB_CONFFILE='/etc/ts.conf'
export TSLIB_FBDEVICE='/dev/fb0'
export TSLIB_PLUGINDIR='/usr/lib/ts'
export TSLIB_TSDEVICE='/dev/input/event0'ts_calibrate
ts_test
看了啊 我现在是要只要校正和ts_test所以我就添加了 这两个,
export TSLIB_CALIBFILE='/etc/pointercal'
export TSLIB_TSDEVICE='/dev/input/event0'
离线
晕哥 说:https://whycan.cn/t_2758.html#p22291
这个链接没看吗?
###根据实际情况填写###
export TSLIB_CALIBFILE='/etc/pointercal'
export TSLIB_CONFFILE='/etc/ts.conf'
export TSLIB_FBDEVICE='/dev/fb0'
export TSLIB_PLUGINDIR='/usr/lib/ts'
export TSLIB_TSDEVICE='/dev/input/event0'ts_calibrate
ts_test看了啊 我现在是要只要校正和ts_test所以我就添加了 这两个,
export TSLIB_CALIBFILE='/etc/pointercal'
export TSLIB_TSDEVICE='/dev/input/event0'
改了fb1了
离线
我现在用ts_test 可以拖动中间的那个箭头
但是当我点击了那个draw 去画的时候不能画线 我触摸屏幕 拖动了很长只有一个小点点
最近编辑记录 无情一刀 (2019-08-14 15:31:08)
离线
QT 是可以运行起来 就是点击屏幕没有反应
在触摸驱动中读取到了触摸的数据 但是好像中断里面上报的时候有些不成功
下面是中断上报数据函数
离线
驱动自己写的?感觉驱动有问题, ts_test 画不了线条。
是的 人家给驱动不是Linux下面的 是高通 然后移植到Linux下了
离线
高通跑什么系统?
从文档里面来看应该也是linux的
只是直接复制到里面去不管用 所以就移植了下
离线
我现在是驱动可以了 但是不知道为什么最左上角出现了一个鼠标箭头标志
离线
https://stackoverflow.com/questions/18053330/qt-for-embedded-linux-hide-cursor-on-startup
Qt4 用这个方法试一试 :
QWSServer *server = QWSServer::instance();
if(server) {
server->setCursorVisible(false);
}
离线
主要是下面这个中断 他们是先读取完了后
另外一个函数/hy46xx_report_value(hy46xx_ts)去上报坐标点,所以我吧这个函数屏蔽了
static irqreturn_t hy46xx_ts_interrupt(int irq, void *dev_id)
{
struct hy46xx_ts_data *hy46xx_ts = dev_id;
disable_irq_nosync(hy46xx_ts->irq);
hy46xx_read_Touchdata(hy46xx_ts);
//hy46xx_report_value(hy46xx_ts);
enable_irq(hy46xx_ts->irq);
return IRQ_HANDLED;
}
在hy46xx_read_Touchdata里面直接读取到了一个坐标点我就上报如下图
出现的可能性 一直点着不动的时候 不断数据上报不及时 ,
现在虽然可以跑起来了 但是不不知道为什么左上角总有一个鼠标箭头标志
离线
https://stackoverflow.com/questions/18053330/qt-for-embedded-linux-hide-cursor-on-startup
Qt4 用这个方法试一试 :
QWSServer *server = QWSServer::instance(); if(server) { server->setCursorVisible(false); }
我的是Qt5的版本 关键是我用ft5x06的触摸不会出现 就是用hy46的就会有鼠标箭头 所以我觉得跟QT没有关心 应该是内核里面的鼠标箭头
最近编辑记录 无情一刀 (2019-08-14 18:07:38)
离线
离线
感觉这个和触摸芯片没有关系, 应该是 Qt 软件的事情, 搜了一圈, 没发现Qt5 怎么处理的。
但是在启动界面 就是有企鹅的时候 不会出现,用了hy46的触摸芯片启动QT就有, 但是 ft5x06启动QT工程都没有 很奇怪,
离线
晕哥 说:感觉这个和触摸芯片没有关系, 应该是 Qt 软件的事情, 搜了一圈, 没发现Qt5 怎么处理的。
export QT_QPA_FB_HIDECURSOR=1
./qtapp -platform linuxfb试一试上面酱紫看看
export QT_QPA_FB_HIDECURSOR=1
./TableMeet_GUI -platform linuxfb:fb=/dev/fb1
这样QT工程会出现断错误 哈哈
离线
this->setCursor(Qt::BlankCursor);
用了这个函数可以去除掉了 但是不清楚的是为什么用这个触摸后就会出来箭头
离线