高级会员

- 积分
- 890
- 金钱
- 890
- 注册时间
- 2013-3-29
- 在线时间
- 18 小时
|
void GUI_TOUCH_Exec(void) {
#ifndef WIN32
static U8 ReadState;
int x=0,y=0;
//calculate Min / Max values
if (xyMinMax[GUI_COORD_X].Min < xyMinMax[GUI_COORD_X].Max) {
xMin = xyMinMax[GUI_COORD_X].Min;
xMax = xyMinMax[GUI_COORD_X].Max;
} else {
xMax = xyMinMax[GUI_COORD_X].Min;
xMin = xyMinMax[GUI_COORD_X].Max;
}
if (xyMinMax[GUI_COORD_Y].Min < xyMinMax[GUI_COORD_Y].Max) {
yMin = xyMinMax[GUI_COORD_Y].Min;
yMax = xyMinMax[GUI_COORD_Y].Max;
} else {
yMax = xyMinMax[GUI_COORD_Y].Min;
yMin = xyMinMax[GUI_COORD_Y].Max;
}
//Execute the state machine which reads the touch
//执行状态机读取触摸
switch (ReadState)
{
case 0:
yPhys = TOUCH_X_MeasureY();
TOUCH_X_ActivateY(); //Prepare X- measurement
ReadState++;
break;
default:
xPhys = TOUCH_X_MeasureX();
TOUCH_X_ActivateX(); //Prepare Y- measurement
//Convert values into logical values
#if !GUI_TOUCH_SWAP_XY //Is X/Y swapped ?
x = xPhys;
y = yPhys;
#else
x = yPhys;
y = xPhys;
#endif
if ((x < xMin) || (x > xMax) || (y < yMin) || (y > yMax)) {
_StoreUnstable(-1, -1);
} else {
x = _AD2X(x);
y = _AD2Y(y);
//////////显示坐标值//////////
GUI_DispDecAt(x, 0, 0, 4);
GUI_DispDecAt(y, 80, 0, 4);
_StoreUnstable(x, y);
}
//Reset state machine
ReadState = 0;
break;
}
#endif // WIN32
}
读出的左上角坐标大约就是(0,0),右下角坐标(240,320)。可是,我设置
#define GUI_TOUCH_AD_LEFT 0
#define GUI_TOUCH_AD_RIGHT 240
#define GUI_TOUCH_AD_BOTTOM 320
#define GUI_TOUCH_AD_TOP 0
#define GUI_TOUCH_SWAP_XY 1 //XY方向互调
#define GUI_TOUCH_MIRROR_X 0 //X镜像
#define GUI_TOUCH_MIRROR_Y 0 //Y镜像
触摸屏没有反应,求解?
我看别人的,然后根据触摸的现象,稍微调整坐标,如下
#define GUI_TOUCH_AD_LEFT 300
#define GUI_TOUCH_AD_RIGHT 3800
#define GUI_TOUCH_AD_BOTTOM 3800
#define GUI_TOUCH_AD_TOP 80
#define GUI_TOUCH_SWAP_XY 1 //XY方向互调
#define GUI_TOUCH_MIRROR_X 0 //X镜像
#define GUI_TOUCH_MIRROR_Y 0 //Y镜像
屏幕有反应。不知道为什么?
|
|