YD一DXXT+EXYT+F 因为其中一共有六个参数A,B,C,D,E,F,因此只需要三个取样点就可以求得 这六个参数。这六个参数一旦确定下来,只要给出任意触摸屏上的坐标点PT,代入这 个公式,就可以得到它所对应的LCD上像素点的坐标PD。具体的求解过程就不细讲, 只给出最终的结果。已知LCD上的三个取样点为:PDO,PDI,PDZ,它们所对应的触摸 屏上的三个点为:PTO,PTI,PTZ。A,B,C,D,E,F这六个参数最终的结果都是一个 分式,而且都有一个共同的分母,为: K=(XTo一XTZ)X(YT,一YTZ)一(XT,一XTZ)X(Y丁。一YTZ) 那么这六个参数分别为: A=[(Xoo一XDZ)X(YT一YTZ)一(Xn一XnZ)X(YT。一YTZ)]/K B=[(XTo一XTZ)X(XD,一XnZ)一(Xo。一XnZ)X(XT:一XTZ)]/K C=tYT。 X(XTZXXol一 XTIXXoZ)+YTzX(XToXXDZ一 XTZXXD。)+YTZX(X丁一 XXDo一XT。 XXDI)] /K D=[(YD。一YnZ)X(YTI一Y几)一(Yol一YoZ)X(YTo一YTZ)]/K E=[(X丁。一XTZ)X(YDI一YnZ)一(Yo。一YDZ)X(X丁,一XTZ)1/K F=[YToX(XTZXYn,一X丁一 XYoZ)+YTIX(XToXYnZ一 XTZXYD。)+YTZX(XT一 XYoo一XT。 XYol)] /K 触点的坐标是用下面方法得到的:当触笔落下时,进入中断,然后读取触点处的 坐标,直到触笔的抬起,才退出该次中断。由于触摸屏需要校正,因此在使用之前需 要进行校正处理。但并不是每次使用都要校正,只要坐标没有发生漂移,就不需要再 次校正。所以在进行一次校正后,只要把那几个参数保存起来,下次需要时直接使用 上次保存下来的参数即可。在这里,我们利用EEPROM来保存这几个参数,即A、B、 C、D、E、F、K分别保存在以0x20,0x30,0x40,Ox50,0x60,0x70,0x80为首地 址内存的连续4个字节空间内,另外内存地址ox1F保存一个标识信息,当为Ox6A时, 表示这几个参数己计算并保存好了,只需从上述内存地址中读取参数就行,而当为其 他值时,就需要进行校正。图4一3为三点校准的操作界面视图。 ![]() 校正时,需要三个取样点,在这三个取样点上画一个十字,只需要依次点击这三 个点,即可完成触摸屏的校正。 4.4本章小结 在本章中,简单说明了嵌入式Linux字符设备驱动的设计方法,并叙述了字符设 备驱动的主要工作:初始化、添加和删除edev结构体、申请和释放设备号,以及填充 file_operations结构体中的相关函数。最后并以触摸屏设备驱动为例,详述了字符设备 启动的设计与实现。文中详尽的说明了触摸屏驱动程序的设计方法与具体实现步骤, 以及触摸屏的校正程序的设计与实现。实现了一个完整的嵌入式Linux触摸屏设备驱 动程序的设计。 第5章Linux网络设备驱动设计 网络设备是完成用户数据包在网络媒介上发送和接收到设备,它将上层协议传递 下来的数据包以特定的美籍访问控制方式进行发送,并将接受到底数据包传递给上层 协议[25]。与字符设备和块设备不同,网络设备并不对应于/dev目录下的设备文件,应 用程序最终使用套接字(socket)完成与网络设备的接口。 |