// Set_direction(0);
for(i=0;i<4;i++)
{
GUI_Rectangle(0,0,320,240,Green,1); //使整个屏幕显示背景颜色
//LCD_Str_6x12_O(10, 10,"Touch Calibrate", 0); //显示提示信息
//LCD_Num_6x12_O(10,25, i+1, 0); //显示触点次数
delay_ms(500);
DrawCross(DisplaySample.x,DisplaySample.y,Red); //显示校正用的“十”字
do
{
//Ptr=Read_2046_2();
Ptr=Read_2046(); //读取TSC2046数据到变量ptr
}
while( Ptr == (void*)0 ); //当ptr为空时表示没有触点被按下
ScreenSample.x= Ptr->x; //把读取的原始数据存放到ScreenSample结构体
ScreenSample.y= Ptr->y;
}
/* 用原始参数计算出 原始参数与坐标的转换系数。 */
Cal_touch_para( &DisplaySample[0],&ScreenSample[0],&touch_para ) ;
/*计算X值*/
test_x = ( (touch_para.An * ScreenSample[3].x) +
(touch_para.Bn * ScreenSample[3].y) +
touch_para.Cn
) / touch_para.Divider ;
/*计算Y值*/
test_y = ( (touch_para.Dn * ScreenSample[3].x) +
(touch_para.En * ScreenSample[3].y) +
touch_para.Fn
) / touch_para.Divider ;
gap_x = (test_x > DisplaySample[3].x)?(test_x - DisplaySample[3].x) DisplaySample[3].x - test_x);
gap_x = (test_y > DisplaySample[3].y)?(test_y - DisplaySample[3].y) DisplaySample[3].y - test_y);
GUI_Rectangle(0,0,320,240,CAL_BACKGROUND_COLOR,1);
if((gap_x>11)||(gap_y>11))
{
//LCD_Str_6x12_O(100, 100,"Calibrate fail", 0);
//LCD_Str_6x12_O(100, 120," try again ", 0);
delay_ms(2000);
GUI_Rectangle(0,0,320,240,Blue ,1);
return 1;
}
aa1 = (touch_para.An*1.0)/touch_para.Divider;
bb1 = (touch_para.Bn*1.0)/touch_para.Divider;
cc1 = (touch_para.Cn*1.0)/touch_para.Divider;
aa2 = (touch_para.Dn*1.0)/touch_para.Divider;
bb2 = (touch_para.En*1.0)/touch_para.Divider;
cc2 = (touch_para.Fn*1.0)/touch_para.Divider;
GUI_Rectangle(0,0,320,240,Blue ,1);
//LCD_Str_6x12_O(100, 100,"Calibrate Success", 0);
delay_ms(1000);
return 0;
}这个代码应该执行完了 if((gap_x>11)||(gap_y>11))
{
//LCD_Str_6x12_O(100, 100,"Calibrate fail", 0);
//LCD_Str_6x12_O(100, 120," try again ", 0);
delay_ms(2000);
GUI_Rectangle(0,0,320,240,Blue ,1);
return 1;
}
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
这个代码继续向下执行的,可是它却回到了for(i=0;i<4;i++)
{
GUI_Rectangle(0,0,320,240,Green,1); //使整个屏幕显示背景颜色
//LCD_Str_6x12_O(10, 10,"Touch Calibrate", 0); //显示提示信息
//LCD_Num_6x12_O(10,25, i+1, 0); //显示触点次数
delay_ms(500);
DrawCross(DisplaySample.x,DisplaySample.y,Red); //显示校正用的“十”字
do
{
//Ptr=Read_2046_2();
Ptr=Read_2046(); //读取TSC2046数据到变量ptr
}
while( Ptr == (void*)0 ); //当ptr为空时表示没有触点被按下
ScreenSample.x= Ptr->x; //把读取的原始数据存放到ScreenSample结构体
ScreenSample.y= Ptr->y;
}
不知道这个我代码哪有返回的啊,求原子哥好好看看那??? |