-         

Seite 1 von 4 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 40

Thema: einfache tests mit der lib 2.7

  1. #1
    Erfahrener Benutzer Roboter Genie Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    70
    Beiträge
    1.344

    einfache tests mit der lib 2.7

    Anzeige

    hi allerseits,

    bin schon wieder da...

    ein einfaches progrämmchen, rauskopiert aus der encoder.c und um ein paar zeilen ergänzt:
    Code:
    #include "asuro.h"
    #include "inka.h"
    
    int i=0;
    int main(void)
    {
      Init();
      WaitforStart();
    /*-------------------------------------------*/
    EncoderInit ();
      for (int i = 0; i < 4; i++)
      {
        Go (200, 150);
        Turn (90, 150);
      }
    /*---------------------------------------------*/
    return 0;
    }
    was bedeutet in diesem zusammenhang diese fehlermeldung beim compilieren?
    ../test_lib_2_7.c:13: error: 'for' loop initial declaration used outside C99 mode

    bin etwas verwirrt...
    gruß inka

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    14.04.2007
    Ort
    Einhausen
    Alter
    61
    Beiträge
    674
    Das geht in C so nicht, nur in C++:

    C++
    Code:
    for (int i = 0; i < 4; i++)
      {
        Go (200, 150);
        Turn (90, 150);
      }
    C
    Code:
    int i;
    for (i = 0; i < 4; i++)
      {
        Go (200, 150);
        Turn (90, 150);
      }
    http://www.it-academy.cc/article/1446/ANSI+C99+Grundlagen.html#1.9.4.Die%20for-Schleife|outline

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Alter
    48
    Beiträge
    2.731
    Hallo,

    wenn man den C-Standard ändert kann man u.a. die Variable auch im for deklarieren, zB:
    Code:
    CFLAGS += -std=gnu99
    im makefile mit dazuschreiben

    Erklärung:
    http://ccrma.stanford.edu/planetccrm...avr-gcc.1.html

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    14.04.2007
    Ort
    Einhausen
    Alter
    61
    Beiträge
    674
    Ja, das mag richtig sein. Aus Gründen der Übertragbarkeit von Sourcecode hier im Forum sollte man auf diese Kunstgriffe bei ASURO vielleicht besser verzichten.

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Alter
    48
    Beiträge
    2.731
    Wenn man es schafft die neue Lib zu verwenden, schafft man es auch diesen Kunstgriff anzubringen.
    Wobei ich der Meinung bin, das die Lib in diesem Fall der grössere Kunstgriff ist.

  6. #6

  7. #7
    Erfahrener Benutzer Roboter Genie Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    70
    Beiträge
    1.344
    nach dem entfernen des "int" aus der zählschleife ist die fehlermeldung weg. Es ging mir nur darum zu wissen woher diese kommt. Der codeschnipsel steht in der encoder.c zwar "nur" im komentar, ist aber nicht desto trotz falsch, vielleicht sollte man es irgendwo vermerken, sonst fallen noch mehr anfänger drauf rein...
    gruß inka

  8. #8

  9. #9
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Jena
    Alter
    31
    Beiträge
    3.912
    also ich denke es ist egal, wo die variable deklariert ist, zwar ist es im for-header schcieker als in der zeile drüber, aber ich würde auch auf kompatibilität setzen...
    kleinschreibung ist cool!

  10. #10
    Erfahrener Benutzer Roboter Genie Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    70
    Beiträge
    1.344
    jetzt habe ich vorsichtshalber das original selftest geflasht und ablaufen lassen, alles funktioniert tadellos, wenn ich allerdings das programm
    Code:
    #include "asuro.h" 
    #include "inka.h" 
    
    int i=0; 
    int main(void) 
    { 
      Init(); 
      WaitforStart(); 
    /*-------------------------------------------*/ 
    EncoderInit (); 
      for (i = 0; i < 4; i++) 
      { 
        Go (200, 150); 
        Turn (90, 150); 
      } 
    /*---------------------------------------------*/ 
    return 0; 
    }
    flashe und starte, ruckt der asuro nur 4x nacheinander ca 3cm mit ein bischen ausschlag nach rechts, aber von einem rechteck/quadrat kann keine rede sein.
    Die odoscheiben sind nicht original, sie haben 6x sw und 6x ws, allerdings laufen die inneren spitzen nicht zu radmitte, sondern tangential zum innenkreis des rades (wurde mal so probiert im thread "asuro will nach hause"). Ich denke aber dass das keine rolle spielen kann. Werden die funktionen go und turn aus irgendwelchen gründen (einbinden von bibliotheken??) nicht richtig interpretiert?
    gruß inka

Seite 1 von 4 123 ... LetzteLetzte

Berechtigungen

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