日期:2014-05-16  浏览次数:20608 次

关于Linux下触摸屏驱动的若干问题
各位前辈:如题,小弟现在在搞一个Linux下的触摸屏驱动,现有如下几个问题请教,恳请指点,谢谢!

要求:触摸屏通过USB口接到开发板(S3C2440为主芯片的)上,当用笔在触摸屏上滑动时,有一个鼠标箭头在开发板屏幕的相应位置显示;

问题:
1.要实现要求的功能需要哪些驱动?除了USB驱动,触摸屏驱动外还有吗?
2.要在开发板的屏幕显示一个鼠标,那就必须要在Qt或别的图形界面下显示对吗?
3.如果要在Qt下显示鼠标,是不是将触摸屏的数据作为Qt的鼠标输入来实现?
4.看了宋宝华的《Linux设备驱动开发详解》中的“触摸屏的设备驱动”那节内容,其中的结果是将触点的位置(X,Y坐标)数据读出来,是不是要将这个坐标数据送到Qt的相关函数中经过处理实现一个鼠标箭头的显示?

------解决方案--------------------
对于楼主的问题答复如下:
1、除了USB驱动外,还需要另外写触摸屏驱动。USB驱动负责和设备进行通讯,触摸屏设备驱动负责驱动触摸屏硬件,并将数据以合适的标准传递给Kernel或应用程序
2、一般情况下是需要在Qt或其他图形界面下显示。这些图形界面已经实现了相关代码,不需要再开发画鼠标的代码。当然,如果你自己想实现一个图形界面,则需要自己开发画鼠标的代码。
3、Qt支持TSlib标准的触摸屏设备或者使用linuxtp标准的触摸屏设备。你可以将你的USB接口的触摸屏驱动写成符合以上标准的。
4、同上,你写的触摸屏的驱动程序只要符合Qt的标准(也就是数据格式),就可以了。Qt将自动读取相关触摸屏设备的数据来处理鼠标箭头的显示。
另:为了让Qt知道是哪个触摸屏设备,一般用如下类似的命令:
export QWS_MOUSE_PROTO="linuxtp:/dev/ts"(编译Qt时要加上-qt-mouse-linuxtp的选项)