PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : kollision!



KaAhnung
07.01.2009, 13:16
hallo,
wenn ich dieses programm schreibe:

#include "asuro.h"

int main(void)
{
Init();
if (PollSwitch()==0)
{MotorDir(FWD,FWD);
MotorSpeed(150,150);
StatusLED(GREEN);
}
else
{MotorDir(FWD,FWD);
MotorSpeed(0,0);
StatusLED(RED);
}

while(1);
return 0;
}

sagt mir das programm programmers notepad folgendes:

test.c: In function `main':
test.c:25: error: parse error at end of input
make: *** [test.o] Error 1

> Process Exit Code: 2

was ist der fehler bei dem programm?
danke schon mal für die hilfe

radbruch
07.01.2009, 15:55
Hallo

Auch mit deiner Formatierung wird dein Programm bei mir anstandslos übersetzt:


#include "asuro.h"

int main(void)
{
Init();
if (PollSwitch()==0)
{
MotorDir(FWD,FWD);
MotorSpeed(150,150);
StatusLED(GREEN);
}
else
{
MotorDir(FWD,FWD);
MotorSpeed(0,0);
StatusLED(RED);
}

while(1);
return 0;
}

Hast du nach der letzten Änderung nochmals gespeichert vor dem Kompilieren? Bei dir sind's übrigends von #include bis zur } nach return 0 nur 19 Zeilen! Der Error in Zeile 25 muss also irgendwo hinter dem Ende sein.

Gruß

mic

KaAhnung
02.03.2009, 19:24
ja das klappt jetzt auch, abe rder roboter hält nicht an, wenn die taster vorne gedrückt werden! was soll ich machen?

radbruch
02.03.2009, 20:16
Das ist schon klar dass der nicht anhält. Die IF-Anweisung wird nur einmal ausgeführt. Wenn du ihn mit gedrückter Taste einschaltest sollte er rückwärts fahren. Besser wäre natürlich wenn die IF-Anweisung in der while-Schleife wäre:


#include "asuro.h"

int main(void)
{
Init();

while(1) if (PollSwitch()==0) // kein ; nach while() !!!
{
MotorDir(FWD,FWD);
MotorSpeed(150,150);
StatusLED(GREEN);
}
else
{
MotorDir(FWD,FWD);
MotorSpeed(0,0);
StatusLED(RED);
}

return 0;
}
Das hatte ich doch glatt übersehen, sorry.

mic

KaAhnung
12.03.2009, 15:44
vielen dank für die hilfe!

KaAhnung
12.03.2009, 15:47
nur eine frage noch: warum steht in der klammer nach while eine 1?

Valen
12.03.2009, 16:20
while(0) ist gleich wie: while(FALSE)

while(1) ist gleich wie: while(TRUE)

aber while(2) oder while(-1) oder jede andere integer das "nicht gleich 0" ist auch gleich wie while(true). Wenn die while schleife IMMER ausgefuhrt werden mus ist ein "1" vollstandig. Das muss nicht unbedingt ein logik förmel rein.