触摸屏驱动:坐标转换
--作者:赖玉平(Auly)aulyp@163.com
当读到触摸屏坐标,要和相应的LCD屏坐标对应,因为触摸屏都是附在LCD上使用的。这样才能达到所见即所得的效果。
TSP_TransXY(INT *px, INT *py)
{
INT TmpX, TmpY;
//---判有没有超过最大范围,如超过,取最大---
TmpX = (*px >= TSP_MAXX) ? (TSP_MAXX) : *px;
TmpY = (*py >= TSP_MAXY) ? (TSP_MAXY) : *py;
TmpX -= TSP_MINX;
TmpY -= TSP_MINY;
//----取绝对值------------------------------
if(TmpX <= 0)
TmpX=0;
if(TmpY <=0)
TmpY=0;
//----转换成LCD坐标值-----------------------
*px = TmpX * TSP_LCDX / (TSP_MAXX - TSP_MINX);
*py = (LCD_YSIZE_TFT - (TmpY * LCD_YSIZE_TFT) / (TSP_MAXY - TSP_MINY))*4;
*px = (*px >= TSP_LCDX) ? TSP_LCDX -1 : *px;
*py = (*py >= TSP_LCDY) ? TSP_LCDY -1 : *py;
RETAILMSG(TS_DBGON,(TEXT("TSP_TransXY: *px=%d, *py=%d/r/n"),*px,*py));
}
注:以上函数中的TSP_LCDX,TSP_LCDY定义为
#define TSP_LCDX (LCD_XSIZE_TFT * 4)
#define TSP_LCDY (LCD_YSIZE_TFT * 4)
//LCD_XSIZE_TFT s3c2440a_lcd.h文件中有定议
// LCD_YSIZE_TFT s3c2440a_lcd.h文件中有定议