操作系统对于经常应用电脑的用户非常的重要,一个好的操作系统,能更好的节省学习的时间。本文讲解Linux触摸屏驱动开发,在Linux触摸屏驱动中,最好的范例莫过于mc68328digi.c的实现。本文把其中用到的结构解析一下。
1、struct ts_pen_info
该结构是触摸屏的核心数据结构。用户程序和驱动程序的交互就是通过该数据结构完成的。结构体里面的x,y坐标和状态是gui中事件驱动的原始数据源。
2、环形队列
gui程序通过read完成对ts_pen_info的提取。而在内核中维护了一个环形队列,只要队列不为空,将立即返回数据给应用程序。
3、中断驱动机制
触摸屏是输入设备,因此使用的是中断驱动机制。只要有触摸事件发生,即向环形队列里面填充一项。
4、定时器的必要性
触摸屏的中断处理函数必然启动一个定时器。定时器的使用是为了检测出Drag操作。当按下触摸屏一直没有松开时,中断只会相应一次。这和触发方式关系不大,不是沿触发和电平触发的问题。主要是触摸屏的中断处理函数没有处理到松开是不会开放中断的。在这段时间内,就是通过定时器不停的启动,检测触摸屏的新坐标的。
5、misc驱动
触摸屏采用Misc结构的驱动。
这5点是Linux触摸屏驱动的核心,理解这些,阅读和编写自己的触摸屏驱动都会游刃有余。希望会对你有所帮助。