Hi,
das hängen bleiben kommt denke ich vom case, also wenn dein distance > als 363 ist, dann wird dein stopp übersrungen. kann man auch den case distance>= 363 verwenden? dann nimm den, oder falls das nicht geht, lass den letzten case weg, und mache dafür eine if abfragen, also

Code:
if(distance>=363) 
{
                  MotorDir(BREAK,BREAK);
                  for (i=0; i<100; i++)
                     {
                     Sleep(255);
                     }
                     zaehler++; 
}
vielleicht hilft das, oder wo im unterprogramm bleibt es hängen?
gruß jeffrey