PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Eigenes Programm



tom(geppel)
01.09.2008, 10:36
Hallo Leute;
ich hab schon vor paar Tagen ein Programm geschrieben , aber es funkt nicht was hab ich wieder falsch gemacht?:

#include "asuro.h"
int main(void) {
unsigned char schnell; // Schneller Gang
unsigned char langsam; //langsamer Gang
schnell = 220;
langsam = 95;

Init();
{
MotorDir(FWD,FWD);
MotorSpeed(schnell,schnell);
while(PollSwitch()==0);
}
{
if(PollSwitch()<8); // da steht kein Smili sondern ne 8^^
{
MotorDir(RWD,RWD);
MotorSpeed(langsam,langsam);
}

else
{
MotorDir(RWD,RWD);
MotorSpeed(schnell,schnell);
}


while(1);

}
}

Der Fehler ist ein Parase Error bei else. Und wenn ich return 0 nach while(1) mache, dann kommt noch mal ne Fehlermeldung. Wieso???

Noch mal ne Frage kann man das auch in Microsoft VisualStudio programmieren ?(Ich habe das Programm kann aber kein C++)

MfG
Tom

askazo
01.09.2008, 13:14
Ui, da stimmt aber einiges nicht....
Du hast ein wenig zu sehr mit den geschweiften Klammern rumgeworfen - kein Wunder, dass der Compiler meckert.

So wär's schon besser:

#include "asuro.h"
int main(void) {
unsigned char schnell; // Schneller Gang
unsigned char langsam; //langsamer Gang
schnell = 220;
langsam = 95;

Init();

MotorDir(FWD,FWD);
MotorSpeed(schnell,schnell);
while(PollSwitch()==0);


if(PollSwitch() < 8 )
{
MotorDir(RWD,RWD);
MotorSpeed(langsam,langsam);
}
else
{
MotorDir(RWD,RWD);
MotorSpeed(schnell,schnell);
}


while(1);

}

In Ordnung ist das Programm so immer noch nicht, aber es müsste sich zumindest compilieren lassen. Die weitere Fehlersuche überlasse ich dann erst mal Dir - durch Fehler lernt man schließlich am meisten. Wenn Du gar nicht weiterkommst, einfach wieder hier melden.

Zum Visual Studio kann ich Dir leider nix sagen...

Gruß,
askazo

hai1991
01.09.2008, 15:53
hallo tom(geppel)

ich glaube dein fehler ist das ';' nach dem if (falls ich das mit dem smili richtig entziffern konnte)
denn bei folgendem code


if( /*abfrage*/ ); // das ; bedeutet mache nichts falls /*abfrage*/ true ist

{
// irgend welche befehler o.ä.
// welche wegen des ;(von oben) immer ausgeführt werden, ohne rücksicht auf die if-abfrage
}

else //parse error, da direkt vor else keine if-abfrage (mit anweisungsblock) ist
{
// irgend welche befehler o.ä.
}



und noch kurz als hinweis:
dein beitrag wäre leichter zu lesen wenn du den code-button benützen würdest. dann gibt es auch kein problem mit smilies o.ä.

und falls du die { nach Init() und vor if(...) wegen der übersichtlichkeit gemacht hast:
lass sie lieber weg und rücke den code mittels tabulator etwas ein. somit wird das lesen auch erleichtert.
damit du siehst was ich meine:


#include "asuro.h"
int main(void)
{
unsigned char schnell; // Schneller Gang
unsigned char langsam; //langsamer Gang
schnell = 220;
langsam = 95;

Init();

MotorDir(FWD,FWD);
MotorSpeed(schnell,schnell);
while(PollSwitch()==0);

if(PollSwitch() < 8 )
{
MotorDir(RWD,RWD);
MotorSpeed(langsam,langsam);
}
else
{
MotorDir(RWD,RWD);
MotorSpeed(schnell,schnell);
}

while(1);
return 0;
}



ich hoffe, dass dir diese tips weiter helfen

tom(geppel)
01.09.2008, 17:17
OKey;
danke für die Antworten, ich glaube dass ich die gewünschte Funktion anders hinbekommen muss.

Aber trotzdem verstehe ich nicht wieso ASURO nie vorwärts fährt. :?

MfG
Tom