-         

+ Antworten
Ergebnis 1 bis 7 von 7

Thema: Odometrie auslesen; brauche Hilfe

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    11.01.2009
    Beiträge
    6

    Odometrie auslesen; brauche Hilfe

    Anzeige

    GearBest Black Friday Verbraucherelektronik Promotion
    Ich habe Probleme mit dem Auslesen von LineData oder OdometrieData - Werten über die IR-Schnittstelle an den Hyperterminal.

    Hierbei habe ich bereits ein kleines Programm geschrieben, das Werte misst und sie über SerWrite() an den Hyperterminal sendet. Doch man merkt schnell, dass diese Werte nur als Ascii-code ankommen.
    Nach einigem googeln habe ich Funktionen (itoa, sprintf..) aus der <stdlib.h> oder/und <stdio.h> gefunden, die die Werte in Strings wandeln und somit lesbar machen würden, aber ich schaffe es nicht die Libs über #include einzubinden.

    Habe <stdlib.h> oder <stdio.h> runtergeladen und in meinen Firts Try Ordner kopiert.
    Doch angesichts 281 Fehlermeldungen nach einem "make" hat dies nicht sooo gut funktioniert.^^

    Was mache ich falsch? Bin ich auf einem völlig falschem Weg?
    Wäre nett, wenn Jemand bock hat, ein solches Prog. zu schreiben.

    [/b][/code]

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    05.06.2008
    Beiträge
    17
    http://en.wikipedia.org/wiki/Itoa
    Ich habe diese Itoa fkt. benutzt.

  3. #3
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    53
    Beiträge
    5.768
    Blog-Einträge
    8
    Hallo

    So geht's auch, nicht optimal aber verständlich:
    Code:
    // aus: http://www.roboternetz.de/phpBB2/zei...=328394#328394
    void PrintInteger(unsigned int x)
    {
       char ergebnis[5]  = {'0','0','0','0','0'};
       while (x >=10000) { ergebnis[0]++; x -=10000; }
       while (x >= 1000) { ergebnis[1]++; x -= 1000; }
       while (x >=  100) { ergebnis[2]++; x -=  100; }
       while (x >=   10) { ergebnis[3]++; x -=   10; }
       ergebnis[4] +=x;
       //x=0;
       //while(ergebnis[x]=='0') ergebnis[x++]=' ';
    
       SerWrite(ergebnis,5);
    }
    Hier werden noch andere Ansätze besprochen:
    http://www.roboternetz.de/phpBB2/viewtopic.php?t=35598

    Gruß

    mic

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    11.01.2009
    Beiträge
    6
    Danke radbruch,
    is nicht ganz der Weg, den ich gedacht hatte.
    So kann ich aber schon mal die Werte auslesen.

  5. #5
    Du hast vielleicht das Problem, dass der Compiler den Pfad zu den Standard-libs nicht kennt. Wenn du dann nur eine Datei kopierst, hängt diese dann von weiteren Standard-Dateien ab, was die Fehlermeldungen beim Kompilieren verursacht.

    Hier nützt es nichts, den Pfad in PATH einzutragen, sondern du musst ihn im makefile hinter einem "-I" (Minus großes i für Include) eintragen. Leider kann ich dir auch nicht die genaue Stelle sagen, wo es hingehört. Versuch es mal bei den Compiler-Flags?

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    11.01.2009
    Beiträge
    6
    Okay danke, ich werd nochma schauen.

  7. #7
    Hab grad nochmal deinen ersten Beitrag gelesen. Du hast dir nur die zwei Headerdateien heruntergeladen - das reicht nicht. Du musst die komplette, unveränderte Verzeichnisstruktur von WinAvr auf der Platte haben. Dann findet der Compiler nicht nur die Header mit den Funktionsdeklarationen, sondern auch die zugehörigen Libs mit dem Code. Der Compiler findet diese dann auch ohne zusätzliche Pfadangaben im makefile.

    Ich kann bei mir sprintf, memcpy usw ohne weiters verwenden, ich brauche nur die beiden von dir genannten #include Anweisungen im Source file.

+ Antworten

Berechtigungen

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