|
在LCD_X_Config(void) 函数中,进行校正。
// Calibrate touch
TouchOrientation = (GUI_MIRROR_X * LCD_GetMirrorXEx(0)) |
(GUI_MIRROR_Y * LCD_GetMirrorYEx(0)) |
(GUI_SWAP_XY * LCD_GetSwapXYEx (0)) ;
GUI_TOUCH_SetOrientation(TouchOrientation);
if (LCD_GetSwapXYEx(0))
{
GUI_TOUCH_Calibrate(GUI_COORD_X, 0, XSIZE_PHYS, TOUCH_AD_LEFT, TOUCH_AD_RIGHT); // x axis swapped
GUI_TOUCH_Calibrate(GUI_COORD_Y, 0, YSIZE_PHYS, TOUCH_AD_TOP , TOUCH_AD_BOTTOM); // y axis swapped
}
else
{
GUI_TOUCH_Calibrate(GUI_COORD_X, 0, YSIZE_PHYS, TOUCH_AD_LEFT, TOUCH_AD_RIGHT); // x axis
GUI_TOUCH_Calibrate(GUI_COORD_Y, 0, XSIZE_PHYS, TOUCH_AD_TOP , TOUCH_AD_BOTTOM); // y axis
}
不太懂LCD_GetMirrorYEx(0)是怎么定义的?emWin手册中也没有说明。是Y轴进行镜像显示吗?0表示不进行镜像显示?
在试验中发现:
GUI_TOUCH_Calibrate(GUI_COORD_X, 0, YSIZE_PHYS, TOUCH_AD_LEFT, TOUCH_AD_RIGHT); // x axis
GUI_TOUCH_Calibrate(GUI_COORD_Y, 0, XSIZE_PHYS, TOUCH_AD_TOP , TOUCH_AD_BOTTOM); // y axis
没有起作用。设置任何值都无反应。主函数中:
while(1)
{
GUI_TOUCH_GetState(&TouchState);
if(TouchState.Pressed == 1)
{
GUI_GotoXY(150, 60);
GUI_DispDecMin(TouchState.y);
GUI_GotoXY(150, 40);
GUI_DispDecMin(TouchState.x);
GUI_CURSOR_SetPosition(100,100);
GUI_CURSOR_Show();
TouchState.Pressed = 0;
GUI_TOUCH_StoreStateEx(&TouchState);
}
}获得的TouchState.x和TouchState.y都是原始坐标数据。不知道,还应该增加什么东西,才能实现GUI_CURSOR_SetPosition(TouchState.x ,TouchState.y);
在校正后的坐标显示光标。 |
|