基于MeeGo的电容式触摸屏驱动设计
ate_device(void)进行输入设备分配;调用set_bit(EV_ABS,input_evbit)来设置触摸屏事件;调用input_set_params()设置坐标范围及接触点主轴长度范围;最后调用input_register_device(struct input_dev*dev)把触摸屏注册为输入子系统设备。
(3)触摸屏中断注册及中断处理函数
request_irq(TOUCH IRQ,Touch interrupt,0,"touch",NULL)为中断函数注册,其中Touch_interrupt是中断处理函数。当触摸屏有感应时将拉低INT引脚,此时便触发中断处理函数Touch_interrupt。该中断函数调用intput_report_abs()将采集到的坐标数据上报给输入子系统,当为单点触摸时,上报该触点;当为多点触摸时,依次将每个点的坐标上报。这里为了消除抖动带来的误操作,在中断处理程序中启用了一个定时器init_timer(),进入中断后将延时5 ms,然后才对数据读取。
3.4 数据的处理
电容式触摸屏支持多点识别,所以必须要处理好多点数据的采集,为此将采集到的数据放到事先分配好的缓存read_data[]中。该缓存存有触点的个数以及各个触点的坐标值,为了保证每一点的准确性和完整性,需要用内核函数input_mt_sync()进行同步。具体的读取代码如下:
结语
多点触控技术的使用将成为这个时代的标志。本文基于MecGo平台,对电容屏的原理及驱动开发进行了详细的分析讨论,并基于Linux输入子系统的框架开发驱动,减少了驱动开发的工作量,提高了程序的可移植性。在此驱动基础上,并结合MeeGo提供的多点触摸界面框架(MeeGo Touch UI Framework,MTF),就可以实现多点触控的功能。
- 触摸屏技术分类及各自工作原理介绍(06-09)
- 分析如何解决大型电容触摸屏输入问题(02-07)
- 水对电容触摸屏的影响及设计中的防水策略(04-28)
- 液晶触摸屏原理是什么?答案在这里(10-25)
- LT3751如何使高压电容器充电变得简单(08-12)
- 三路输出LED驱动器可驱动共阳极LED串(08-17)