printf, Zeitverzögerung

Gast #1203313
Lesenswert?

Hallo,

ich habe ein System, das Daten über eine serielle Schnittstelle an einen 
uC schickt, der verarbeitet diese, und schickt das Ergebnis wieder über 
den UART zum PC (Terminal).
Was ich nicht verstehe:
Und zwar lege ich meine zu verschickenden Daten in eine Buffer, und dann 
versende ich diese zum uC, und danach mach ich erst eine paar Ausgaben 
am Bildschirm, jedoch ist es so, dass wenn ich die printf Ausgaben 
herausnehme mein ganzen System erheblich schneller ist. Weiß jemand 
woran das liegt? Hier noch ein kleiner Ausschnitt meines Codes:

app->txBuf[app->txId++] = (MyByte8T)c;
SendBuffer();
printf ("\nPing-Funktion gewaehlt!!!\n");
printf("Zu Uebertragender Wert[Buffer Inhalt]: %u 
\n",app->txBuf[app->txId]);
printf("Wert Tickcounter beim Senden: %u \n",time_send);
printf("Wert Tickcounter beim Senden für us: %u \n",time_send2);
app->mode = 0;
app->txId = 0;

Wie man sehen kann, rufe ich vor dem printf erst die SendeBuffer - 
Funktion auf. Ich verstehe also nicht, warum das printf überhaupts 
Auswirkungen hat?!?!
#1203365
Lesenswert?

Ein printf ist auch auf einem PC nicht unbedingt schnell.

> Aber, ich muss unbedingt ein paar Ausgaben machen, wie kann ich das denn
> sonst machen?

Weniger ausgeben.

(Im Ernst)

Da muss nicht unbedingt stehen

Ping-Funktion gewaehlt!!!
Zu Uebertragender Wert[Buffer Inhalt]: 12
Wert Tickcounter beim Senden: 1045
Wert Tickcounter beim Senden für us: 857

Dieselbe Information kannst du auch kürzer kriegen. Es reicht ja wohl 
völlig, wenn dort steht

Ping - Tx: 12 - T1: 1045 - T2: 857

und schon läuft dein PC-Programm schneller (unter anderem deswegen, weil 
es nicht soviel scrollen muss)
#1203373
Lesenswert?

Cherry wrote:
> @Karl Heinz
>
> Ich weiß nicht genau was du damit meinst, wohin die Ausgabe des printf
> geht.
> Aber die Ausgabe erfolgt auch wieder auf dem Terminal, wo die Eingabe
> auch getätigt worden ist.

Hab überlesen, dass dein printf wohl im PC-Programm gemacht werden.
Siehe nachfolgende Antwort.
Gast #1203378
Lesenswert?

@ Karl Heinz

Ja ich weiß, ich habe diese ganzen Ausgaben schon gelöscht und kompakter 
formuliert. Jedoch ist eigentlich ein printf (mit ca. 1ms) schon 
zulange, da ich eine exakte Zeitmessung in us brauche, und ich mit so 
einem verfälschten Ergebnis nichts anfangen kann.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren