|
我先是把电容屏的底层处理好,可以直接裸板上面画什么,显示什么,证明底层是没什么问题的。
我现在想做出的效果是:GUI里面有一个按键,按一下改变背景色,黄白切换。GUI程序在另外的电阻屏板子上面测试没有问题。
现在我把电容屏的读点函数,放入了一下两个函数中:
int GUI_TOUCH_X_MeasureX(void)
{
u16 x;
if( TP_Scan(0) == 1)
{
x=tp_dev.x[0];
return x;
}
return x;
}
int GUI_TOUCH_X_MeasureY(void)
{
u16 y;
if( TP_Scan(0) == 1)
{
y=tp_dev.y[0];
return y;
}
return y;
}
本来我以为这样可以基本完成了,但实际上没有成功,接着我查询资料里面介绍,使用emwin校准函数,如下
#define TOUCH_AD_TOP 250
#define TOUCH_AD_BOTTOM 25
#define TOUCH_AD_LEFT 225
#define TOUCH_AD_RIGHT 0
GUI_TOUCH_Calibrate(GUI_COORD_X, 0, 480-1, TOUCH_AD_RIGHT ,TOUCH_AD_LEFT );
GUI_TOUCH_Calibrate(GUI_COORD_Y, 0, 800-1, TOUCH_AD_BOTTOM ,TOUCH_AD_TOP );
然后在使用emwin提供的校准程序,获取上面几个值,但是不知道是不是是电容屏原因,和我之前使用电阻屏校准对比,电容屏几乎根本就对不上左上角,右下角两个点。没办法我只能取了四个大概的值。
之后我在运行我的GUI程序,发现:按键还是触发不了,但是能触发WM_TOUCH这个消息,而且触发的区域非常小,我觉得应该是校准的四个值不对,导致我严重偏差,所以按键无法触发。
现在我想问的问题是:1,电容屏需要使用emwin提供的方法校准吗?我现在只求能简单触发按键等基本消息。
2,GUI_TOUCH_Calibrate()这个函数一定要用的吗?3,我不能直接把我的底层电容屏的值给GUI_TOUCH_X_MeasureY(),GUI_TOUCH_X_MeasureX()。然后不再进行任何的emwin校准处理吗?
我想校准我自己底层完成,不希望通过emwin校准。
希望能帮忙解决一下,非常感谢,这困扰我好几天了!!!拜托 |
|