PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ausgabe von int Werten



filth
15.09.2007, 13:07
Hi,

wie gebe ich integer Werte aus? Ich wollte mit den Odometriedaten spielen und dazu die Werte mir ausgeben lassen:


#include <asuro.h>

int main(void)
{
unsigned int data[2];

Init();
MotorDir(FWD, FWD);
MotorSpeed(120,120);
StatusLED(GREEN);



do {
OdometrieData(data);
SerWrite(data[0], sizeof(data[0]));
}
while(1);

while(1);
return 0;
}

Es kommen nur seltsame Zeichen, wahrschienlich muss man den int-wert in ascii umrechnen. Wie mache ich das?

Grüße
Alex

izaseba
15.09.2007, 13:19
wahrschienlich muss man den int-wert in ascii umrechnen. Wie mache ich das?
Die Antwort hast Du Dir schon selber gegeben
inttoascii also itoa

Gruß Sebastian

Roboaktiv
15.09.2007, 16:27
Ich habe sowas immer mir Strings gemacht.

Die Werte werden mittels sprintf() als in ein char umgeschrieben. Diesen Wert musst du dann halt nur noch statt den Textin die SerWrite Funktion einsetzten.

Dazu benötigst du aber noch eine andere Libary (Hab gerade vergessen wie die heißt)

Ich erinner mich aber, dass aus solchen Gründen, diese Methode auf Widerstand stößt. Auch hier im Forum.

izaseba
15.09.2007, 18:49
Dazu benötigst du aber noch eine andere Libary (Hab gerade vergessen wie die heißt)
stdio.h heißt sie
itoa braucht stdlib.h

Gruß Sebastian

damaltor
16.09.2007, 15:57
mach folgendes:

dein int wert ist in der variable "wert" gespeichert. mach folgendes:


unsigned char text[6];
itoa(wert,text,10);
SerWrite(text,6);

das sollte wohl helfen.

farratt
17.09.2007, 10:58
@damaltor: Es muss

unsigned char text[7];
itoa(wert,text,10);
SerWrite(text,6);
heißen, da die Funktion itoa einen nullterminierten String erzeugt. Der größtmögliche int + ein Minuszeichen + ein Terminatorzeichen sind eben 7 Zeichen. Bei SerWrite reicht dann die 6, da man das Terminatorzeichen nicht mitsenden muss.

Gruß farratt

damaltor
17.09.2007, 13:18
da hast du wohl recht... ich hab etwas zu sehr gespart =)