当前位置: 技术问答>linux和unix
触摸屏驱动 高手教下
来源: 互联网 发布时间:2017-01-09
本文导语: 目前在做系统一直,昨天刚搞定LCD颜色的问题,今天在触摸屏上有郁闷了。 症状: 在进入图形界面后,可以点击一次,如程序对话框的按钮上点击一次,可以看到按钮 陷 进...
目前在做系统一直,昨天刚搞定LCD颜色的问题,今天在触摸屏上有郁闷了。
症状:
在进入图形界面后,可以点击一次,如程序对话框的按钮上点击一次,可以看到按钮 陷 进去了,但是接着就没反应了,
触摸屏再怎么点也没用了。
代码:
在probe函数里面我找到了如下事件的注册:
set_bit( EV_ABS, input_dev->evbit );
set_bit( ABS_X, input_dev->absbit );
set_bit( ABS_Y, input_dev->absbit );
set_bit( ABS_PRESSURE, input_dev->absbit );
在触摸笔按下处,我添加了校验代码:
printk("n--------------------------");
printk(KERN_INFO "n xRes = %d ", x );
printk(KERN_INFO "n yRes = %d ", y );
x = 240 * ( x - 150 ) / ( 3830 - 150 );
y = 320 * ( y - 190 ) / ( 3830 - 190 );
printk(KERN_INFO "n xRes = %d ", x );
printk(KERN_INFO "n yRes = %d ", y );
从终端可以看到校验后的坐标是正确的。
之后:
input_report_abs(input, ABS_X, x);
input_report_abs(input, ABS_Y, y);
///input_report_abs(input, ABS_PRESSURE, Rt);
input_report_abs(input, ABS_PRESSURE, ts->pressure_max-Rt);
printk(KERN_INFO "n Rt = %d", Rt );
input_sync(input);
报告X,Y坐标以及电压,在这里,我从终端看到不论我怎么点,Rt的值永远是7500。
问题:
整个驱动流程有没有问题?
Rt恒等于7500,有问题吗,我直觉感到不对,但不知道为什么.
如果触摸屏驱动完全没作用,为什么对话框按钮会有变化?
希望各位不吝指教,在下感激不尽。。。。。
症状:
在进入图形界面后,可以点击一次,如程序对话框的按钮上点击一次,可以看到按钮 陷 进去了,但是接着就没反应了,
触摸屏再怎么点也没用了。
代码:
在probe函数里面我找到了如下事件的注册:
set_bit( EV_ABS, input_dev->evbit );
set_bit( ABS_X, input_dev->absbit );
set_bit( ABS_Y, input_dev->absbit );
set_bit( ABS_PRESSURE, input_dev->absbit );
在触摸笔按下处,我添加了校验代码:
printk("n--------------------------");
printk(KERN_INFO "n xRes = %d ", x );
printk(KERN_INFO "n yRes = %d ", y );
x = 240 * ( x - 150 ) / ( 3830 - 150 );
y = 320 * ( y - 190 ) / ( 3830 - 190 );
printk(KERN_INFO "n xRes = %d ", x );
printk(KERN_INFO "n yRes = %d ", y );
从终端可以看到校验后的坐标是正确的。
之后:
input_report_abs(input, ABS_X, x);
input_report_abs(input, ABS_Y, y);
///input_report_abs(input, ABS_PRESSURE, Rt);
input_report_abs(input, ABS_PRESSURE, ts->pressure_max-Rt);
printk(KERN_INFO "n Rt = %d", Rt );
input_sync(input);
报告X,Y坐标以及电压,在这里,我从终端看到不论我怎么点,Rt的值永远是7500。
问题:
整个驱动流程有没有问题?
Rt恒等于7500,有问题吗,我直觉感到不对,但不知道为什么.
如果触摸屏驱动完全没作用,为什么对话框按钮会有变化?
希望各位不吝指教,在下感激不尽。。。。。
|
因为在触摸屏上点击要模拟鼠标的动作。
你想想你点了一下鼠标,是两个动作:按下,抬起。
现在你的触摸屏,只做了一个动作就是按下,没有抬起。所以对话框的按钮会是一只被按下。
要做的就是,当没有电压值的时候,并且之前有按下动作的时候,发送一个抬起的事件。
你想想你点了一下鼠标,是两个动作:按下,抬起。
现在你的触摸屏,只做了一个动作就是按下,没有抬起。所以对话框的按钮会是一只被按下。
要做的就是,当没有电压值的时候,并且之前有按下动作的时候,发送一个抬起的事件。