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 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
看了啊 我现在是要只要校正和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的
只是直接复制到里面去不管用 所以就移植了下
离线
我现在是驱动可以了 但是不知道为什么最左上角出现了一个鼠标箭头标志
离线
主要是下面这个中断 他们是先读取完了后
另外一个函数/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);
用了这个函数可以去除掉了 但是不清楚的是为什么用这个触摸后就会出来箭头
离线