GUI

RT-GUI触摸BUG?

发布于 2015-01-04 22:29:34
在中的
rt_bool_t rtgui_touch_do_calibration(struct rtgui_event_touch *event)
{
#ifdef RTGUI_USING_CALIBRATION
/* calibration mode */
if (_calibrating == RT_TRUE)
{
/* only do the calibration on touch UP */
if (event->up_down == RTGUI_TOUCH_UP && _cali_ops != RT_NULL &&
_cali_ops->calibration_post != RT_NULL)
_cali_ops->calibration_post(event->x, event->y);
return RT_FALSE;
}
#endif
if (event->up_down == RTGUI_TOUCH_UP)
{
x_prev = 0; y_prev = 0;
}
else
{
if (!((x_prev > event->x + RTGUI_TOUCH_SMOOTH) ||
(x_prev < event->x - RTGUI_TOUCH_SMOOTH) ||
(y_prev > event->y + RTGUI_TOUCH_SMOOTH) ||
(y_prev < event->y - RTGUI_TOUCH_SMOOTH)))
{
/* smooth the touch point */
return RT_FALSE;
}
x_prev = event->x;
y_prev = event->y;
}
/* update touch (x, y) with calibrated data */
if (_cali_ops != RT_NULL && _cali_ops->calibrate_x != RT_NULL)
//调试时发现event->x传入为384,函数执行完毕后返回后event->x=0
event->x = _cali_ops->calibrate_x(event->x, event->y);

if (_cali_ops != RT_NULL && _cali_ops->calibrate_y != RT_NULL)
//在这里,event->x已经被改变了,不是之前的384了,变成0了,导致y值校准错误,返回的是一个错误值(一个很大的数值)
event->y = _cali_ops->calibrate_y(event->x, event->y);

return RT_TRUE;
}


把代码
/* update touch (x, y) with calibrated data */
if (_cali_ops != RT_NULL && _cali_ops->calibrate_x != RT_NULL)
//调试时发现event->x传入为384,函数执行完毕后返回后event->x=0
event->x = _cali_ops->calibrate_x(event->x, event->y);

if (_cali_ops != RT_NULL && _cali_ops->calibrate_y != RT_NULL)
//在这里,event->x已经被改变了,不是之前的384了,变成0了,导致y值校准错误,返回的是一个错误值(一个很大的数值)
event->y = _cali_ops->calibrate_y(event->x, event->y);

return RT_TRUE;
}

修改成下面后,触摸可以正常使用了
	
if (_cali_ops != RT_NULL && _cali_ops->calibrate_x != RT_NULL)
x = _cali_ops->calibrate_x(event->x, event->y);
if (_cali_ops != RT_NULL && _cali_ops->calibrate_y != RT_NULL)
y = _cali_ops->calibrate_y(event->x, event->y);
event->x = x;
event->y = y;

return RT_TRUE;
}

查看更多

关注者
0
被浏览
1.4k
4 个回答
grissiom
grissiom 2015-01-05
不是很明白怎么修改的…… 可以提 pull request [s:160]
xiao苦
xiao苦 2015-01-06
- -没看出来。。。
wth613
wth613 2015-01-07
触摸部分的代码参考的是realboard4088的代码,不知道我的为什么会出现这样的问题,会不会和触摸屏幕的使用方向有关系~
pull request还不会使 o(╯□╰)o:oops: ,有空了学习下

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友