PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Gettime(); Funktion ausgeben mit SerWrite();



scoozer
09.12.2006, 22:18
Hallo!

Ich wollte gerne die Zeit ausgeben, die mein Asuro braucht um das Hauptprogramm durchzuführen.

Wie mache ich das genau?


Danke!!!

EDH
10.12.2006, 08:22
gettime giebt einen unsigned ling zurück.
dieser muss jetzt in einen string umgewandelt werden. daüf kannst du diese funktion hernehmen:


char *convert (unsigned long int wert, int laenge)
{
char *ret =(char *) malloc(laenge+1 * sizeof(char));
int i;

for(i=0; i<laenge; i++)
{
ret[laenge-i-1] = (wert % 10) + 48;
wert = wert / 10;
}
ret[laenge]='\0';
return ret;
}


das ist im prinzip das gleiche wie bei itoa(). allerdings ist itoa() nicht ansi c.

paramter 1 ist die zeit, parameter 2 ist die länge der zahl. im zweifelsfall 10 übergeben.
der string der zurüdkgegeben wird, kann dann direkt mit serwrite ausgegeben werden.

der_andi
10.12.2006, 12:13
Wie wärs einfach mit PrintInt()?

EDH
10.12.2006, 12:54
PrintInt überträgt einn integer.
bei gettime haben wir es aber mit einem unsigned long int zu tun.

wenn man versucht des dann mit printint zu übertragen kommt schwachsinn raus.

scoozer
10.12.2006, 13:04
Hallo,

Vielen Dank erstmal! Nun habe ich Probleme die Funktion anzuwenden. :/
Ich habe char *convert (unsigned long int wert, int laenge); deklariert und die Funktion in meinen Funktionsdefinitionen geschrieben.
ret ist der ausgegebene String oder verstehe ich das falsch? Nun, was muss ich bei SerWrite(hier reinschreiben)?

EDH
10.12.2006, 13:10
beispiel:



unsigned long int time;
time = Gettime();
char string[11] = convert(time, 10);
SerWrite(string, strlen(string);


ist jetzt nur mal so auf die schnelle hingeschrieben, und noch nicht getestet.,

scoozer
10.12.2006, 13:22
Hallo,

Leider funktioniert es nicht. Was genau bedeutet "strlen"?

edit:

unsigned long int time;
unsigned char string[11];
time=Gettime();
string[11] = *convert(time,10);

SerWrite(string,strlen(string));

So compiliert er das. Aber er gibt auch nur seltsames aus, auf jedenfall nicht die Zeit. Muss ich im Hauptprogramm die Gettime Funktion aufrufen? Und ich muss doch auch ein Ende setzen oder? Bisher habe ich bevor ASURO losfährt nur das Gettime(); .

edit2: Nun ja, Encoder_Init hab ich vor der Ausgabe und Encoder_Stop dannach, daran dürfte es nicht liegen. Hab Gettime mal aus dem Hauptprogramm rausgenommen... aber er gibt immernoch nur Áo aus ;) bzw. seltsames...

edit3: Ne, krieg ich irgendwie nicht hin :(. Hab schon string versucht global zu deklarieren, aber wenn ich das dann unsigned char mache, funktioniert eine andere Ausgabe von mir nicht mehr. Nur mit char gehts, aber er gibt dann einfach gar nichts mehr aus. :-/

der_andi
10.12.2006, 21:13
Welchen Wertebereich hat denn gleich nochmal besagtes unsigned long int?

EDH
10.12.2006, 21:15
0 bis 4294967295

(keine garantie)