[转]基于嵌入式Linux的通用触摸屏校准程序
发布于 2008-11-19 07:40:57
本文介绍的正是笔者在制作实际的嵌入式Linux数控机床人机接口过程中,提出的一套基于嵌入式Linux的通用触摸屏校准程序设计方案。
笔者基于S3c2410的ARM9内核,使用6.4英寸,640×480的触摸屏,嵌入式Linux内核2.4.20版本,设计了一套简单可行的方案,可以方便地实现触摸屏的校准。
校正原理及编程思路
1.校正原理
通常应用程序中使用的LCD坐标是以像素为单位的。比如说:左上角的坐标是一组非0的数值,比如(20,20),而右下角的坐标为(620,460)。这些点的坐标都是以像素为单位的,而从触摸屏中读出的是点的物理坐标,其坐标轴的方向、XY值的比例因子、偏移量、缩放因子都与LCD坐标不同,所以,可以在某个函数(比如wait_event函数)中把物理坐标首先转换为像素坐标,然后再赋给POS结构,达到坐标转换的目的。图是LCD坐标和触摸屏的物理坐标的比较。
2.触摸屏校正思路
在wait_event函数中加入调试信息,开发板上运行Calibrate程序,那么触摸屏上任何一点的坐标就可以在主机监视屏上回显出来。于是,就采集到了4个角的物理坐标,假设是6.4英寸屏,640X480分辨率,则它们的像素坐标分别是(20,20)、(20,460)、(620,460)和(620,20)。这样,使用待定系数法就可以算出坐标系之间的平移关系。比如:
Vx = xFactor*Px + xOffset
Vy = yFactor*Py