PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Odometrie auslesen; brauche Hilfe



Orre
18.01.2009, 11:21
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]

tim09
18.01.2009, 12:07
http://en.wikipedia.org/wiki/Itoa
Ich habe diese Itoa fkt. benutzt.

radbruch
18.01.2009, 18:01
Hallo

So geht's auch, nicht optimal aber verständlich:

// aus: https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=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:
https://www.roboternetz.de/phpBB2/viewtopic.php?t=35598

Gruß

mic

Orre
20.01.2009, 20:35
Danke radbruch,
is nicht ganz der Weg, den ich gedacht hatte.
So kann ich aber schon mal die Werte auslesen.

ruebenhaupt
22.01.2009, 00:27
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?

Orre
24.01.2009, 00:10
Okay danke, ich werd nochma schauen.

ruebenhaupt
29.01.2009, 22:40
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.