Archiv verlassen und diese Seite im Standarddesign anzeigen : kollision!
KaAhnung
07.01.2009, 14: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, 16: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, 20: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, 21: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, 16:44
vielen dank für die hilfe!
KaAhnung
12.03.2009, 16:47
nur eine frage noch: warum steht in der klammer nach while eine 1?
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.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.