在案例LCD触摸屏控制LED上
Coordinate *Read_2046_2(void)
{
static Coordinate screen2;
int TP_X[1],TP_Y[1];
uint8_t count=0;
int buffer[2][10]={{0},{0}};
int min_x,max_x;
int min_y,max_y;
int i=0;
#if 0 采样次数5
do
{
Touch_GetAdXY(TP_X,TP_Y);
buffer[0][count]=TP_X[0];
buffer[1][count]=TP_Y[0];
count++;
}
while(!INT_IN_2046&& count<5);
if(INT_IN_2046)
{
touch_flag = 0;
}
if(count ==5)
{
max_x=min_x=buffer[0][0];
max_y=min_y=buffer[1][0];
for(i=1; i<5; i++)
{
if(buffer[0]<min_x)
{
min_x=buffer[0];
}
else
if(buffer[0]>max_x)
{
max_x = buffer[0];
}
}
for(i=1; i<5; i++)
{
if(buffer[1]<min_y)
{
min_y=buffer[1];
}
else
if(buffer[1]>max_y)
{
max_y = buffer[1];
}
}
screen2.x=(buffer[0][0]+buffer[0][1]+buffer[0][2]+buffer[0][3]+buffer[0][4]-min_x-max_x)/3;
screen2.y=(buffer[1][0]+buffer[1][1]+buffer[1][2]+buffer[1][3]+buffer[1][4]-min_y-max_y)/3;
return &screen2;
}
#endif
#if 1
do
{ 采样次数10
Touch_GetAdXY(TP_X,TP_Y);
buffer[0][count]=TP_X[0];
buffer[1][count]=TP_Y[0];
count++;
}
while(!INT_IN_2046&& count<10);
if(INT_IN_2046)
{
//LED1_TOGGLE;
//Lcd_show_bmp(38, 184,&quot;/led/ui_rb_button.bmp&quot;);
LED1_OFF;
LED2_OFF;
LED3_OFF;
touch_flag = 0;
}
if(count ==10)
{
max_x=min_x=buffer[0][0];
max_y=min_y=buffer[1][0];
for(i=1; i<10; i++)
{
if(buffer[0]<min_x)
{
min_x=buffer[0];
}
else
if(buffer[0]>max_x)
{
max_x = buffer[0];
}
}
for(i=1; i<10; i++)
{
if(buffer[1]<min_y)
{
min_y=buffer[1];
}
else
if(buffer[1]>max_y)
{
max_y = buffer[1];
}
}
screen2.x=(buffer[0][0]+buffer[0][1]+buffer[0][2]+buffer[0][3]+buffer[0][4]+buffer[0][5]+buffer[0][6]+buffer[0][7]+buffer[0][8]+buffer[0][9]-min_x-max_x)>>3;
screen2.y=(buffer[1][0]+buffer[1][1]+buffer[1][2]+buffer[1][3]+buffer[1][4]+buffer[1][5]+buffer[1][6]+buffer[1][7]+buffer[1][8]+buffer[1][9]-min_y-max_y)>>3;
return &screen2;
}
#endif
return 0;
}
我想知道采样次数5跟10是什么和有什么区别。还有案例上还有个函数 Coordinate *Read_2046(void)与Coordinate *Read_2046_2(void) 有什么区别?? |