dank dir kolission, dass du dich mit dem Thema beschäftigt hast.
Habs jetzt hinbekommen, indem ich mehrfach abfrage, ob ein gültiger Wert sich wiederholt (zumindest ungefähr).
Funktioniert sehr gut.
hier mal der code, ist vielleicht etwas schwierig zu durchblicken, aber vom prinzip her sollte mans verstehen.
Code:
void get_pos_pixel(void)
{
struct touch_position t_pos;
unsigned int xmax, ymax;
unsigned int prell_min, prell_max;
char count;
xmax = x[2] - x[0];
ymax = y[2] - y[3];
get_pos_AD(&t_pos);
if((t_pos.y < y[2]) | (t_pos.x < x[2])) {
get_pos_AD(&t_pos);
count = 0;
do{
if (count == 0) {
prell_min = t_pos.x - 8;
prell_max = t_pos.x + 8;
}
get_pos_AD(&t_pos);
if (count < 0x20) {
if((t_pos.x < prell_max) & (t_pos.x > prell_min))
count++;
else if (count == 0)
count = 0;
else
count--;
}
else { // count == 0xFF
positionX = (((t_pos.x - x[0])* 0x80) / xmax);
positionY = (((t_pos.y - y[3])* 0x40) / ymax);
count--;
}
}
while((t_pos.y < y[2]) | (t_pos.x < x[2]));
}
else{
positionX = 0x3FF;
positionY = 0x3FF;
}
}
also bis dann
Lesezeichen