- LiTime Speicher und Akkus         
Ergebnis 1 bis 8 von 8

Thema: Problem mit AsuroManuel Code 9.1.5 (Schleifen)

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    29.07.2005
    Alter
    33
    Beiträge
    128

    Problem mit AsuroManuel Code 9.1.5 (Schleifen)

    Anzeige

    Praxistest und DIY Projekte
    Hi Leuz,
    da ich noch etwas probleme mit C habe, habe ich mich dazu entschlossen das Handbuch (der teil des progammierens) durchzuarbeiten!

    jetzt habe ich den Code von teil 9.1.5 RAUSKOPIERT und er tut nicht xD

    Code:
    Code:
    #include "asuro.h"
    int main(void) 
    {
    	Init()
    	MotorDir(RWD,RWD); 				 // Beide Motoren auf vorwärts
    	MotorSpeed(120,120);			 // Beide Motoren etwa halbe Kraft voraus
    	StatusLED(GREEN); 				 // Status-Leuchtdiode auf grün schalten
    	
    	while (PollSwitch()==0)
    	{ 								 // Solange keine Kollision erfolgte...
    		SerWrite(“Alles OK!\n”,10); // ... Euphorie verbreiten
    	}
    	
    	MotorSpeed(0,0); 				// Kollision! Sofort anhalten!
    	StatusLED(RED); 				// Statusleuchtdiode rot schalten
    	while (1) 
    	{
    		SerWrite(“Aua!\n”,5);			// und weinen!
    	}
    	return 0;
    }
    der Compiler sagt volgendes:

    Code:
    test.c:5: error: parse error before "MotorDir"
    test.c:11: error: stray '\223' in program
    test.c:11: error: `Alles' undeclared (first use in this function)
    test.c:11: error: (Each undeclared identifier is reported only once
    test.c:11: error: for each function it appears in.)
    test.c:11: error: parse error before "OK"
    test.c:11: error: stray '\' in program
    test.c:11: error: stray '\224' in program
    test.c:18: error: stray '\223' in program
    test.c:18: error: `Aua' undeclared (first use in this function)
    test.c:18: error: parse error before '!' token
    test.c:18: error: stray '\' in program
    test.c:18: error: stray '\224' in program
    test.c:21:2: warning: no newline at end of file
    make: *** [test.o] Error 1
    kann das mir jemand bitte erklären.. und sagen was im Compiler "vorgeht" ??

    greezZ und thx im vorraus. Listner

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    02.01.2008
    Alter
    32
    Beiträge
    239
    hallo listner

    der erste Fehler ist in Zeile 5 (test.c:5: error
    parse error before "MotorDir" bedeutet, dass vor "MotorDir" etwas nicht stimmt... ich würde vermuten, dass nach Init() ein ';' gesetzt werden muss

    der nächste Fehler ist in Zeile 11 (test.c:11: error
    ich glaube dass er die " nicht als solche erkennt, versuch es einmal so: SerWrite("Alles OK!\n",10);

    in Zeile 18 ist wieder das selbe wie in Zeile 11
    versuch es mit SerWrite("Aua!\n",5);


    ich hoffe es funktioniert jetzt (habe es noch nicht ausprobiert)

    mfg hai1991

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    29.07.2005
    Alter
    33
    Beiträge
    128
    ok, vielen dank, das tut jetzt!!

    noch ne frage, man sollte die PollSwitch() funktin ja immer mehrmals aufrufen,

    warum funktioniert das in diesem fall dan auch so??

    liegt es daran, das durch die while schleife sie ja praktisch mehrmals aufgerufen wird??

    greezZ

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    12.09.2007
    Alter
    30
    Beiträge
    98
    nein, besser wäre es, wenn man es soch machen würde:
    Code:
    #include "asuro.h"
    int main(void)
    {
       Init();
       MotorDir(RWD,RWD);              // Beide Motoren auf vorwärts
       MotorSpeed(120,120);          // Beide Motoren etwa halbe Kraft voraus
       StatusLED(GREEN);              // Status-Leuchtdiode auf grün schalten
       
       while (PollSwitch()==0 && PollSwitch()==0)
       {                          // Solange keine Kollision erfolgte...
          SerWrite("Alles OK!\n",10); // ... Euphorie verbreiten
       }
       
       MotorSpeed(0,0);             // Kollision! Sofort anhalten!
       StatusLED(RED);             // Statusleuchtdiode rot schalten
       while (1)
       {
          SerWrite("Aua!\n",5);         // und weinen!
       }
       return 0;
    }
    mfg liggi
    Lieber am Asuro rumschrauben als alles andere.
    Meine Homepage

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    29.07.2005
    Alter
    33
    Beiträge
    128
    ja, so hab ich es gemeint,

    also ist es bei dem vorgegebenen code aus dem manual nur "zufall" dass es funktioniert?

    greezZ

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    02.01.2008
    Alter
    32
    Beiträge
    239
    es heißt ja nicht, dass es bei einmaligem Aufruf von PollSwitch() nicht funktioniert, aber es kann vorkommen, dass er bei laufenden Motoren kurzzeitig eine falsche Spannung übermittelt bekommt ==> er sagt zB "Aua", obwohl er nirgends ankommt
    dies kann man vermeiden, indem man sie öfter aufruft

    mfg hai1991

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    29.07.2005
    Alter
    33
    Beiträge
    128
    ok, danke!!!

    Ne frage noch, gibt es ne möglichkeit die werte von variablen auslesen, ohne die neue lib zu benutzen? also mit der standartversion 2.1???

    wäre mir sehr wichtig, denn cih versuche erst mal mit der 2.1 klaarzukommen, (programmiertechnisch) bevor ich mir "erweiterungen" antuen will

    greezZ

  8. #8
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    02.01.2008
    Alter
    32
    Beiträge
    239
    schau einmal hier nach https://www.roboternetz.de/phpBB2/vi...39126&start=22
    radbruch hat eine sehr gute Variante aufgeführt (die Funktion PrintChar())

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test