Forum: Mikrocontroller und Digitale Elektronik Formatierte Ausgabe


von Sascha (Gast)


Lesenswert?

Hallo,

für Debug-Zwecke, will ich die Werte vom A/D-Wandler MAX186 über den
UART vom AVR an den PC übergeben. Soweit geht es auch. Nur wie stelle
ich es an, das die Werte nicht fortlaufend hinereinander geschrieben
werden, sondern die alten überschrieben werden? So eine Art
Seitenrücksprung?

Mfg Sascha

von thomas_p. (Gast)


Lesenswert?

Einfach einen Cartridgereturn zum Rechner schicken ( 0d in Hexadezimal
bzw. \r als Ersatzdarstellung in C )

von Sascha (Gast)


Lesenswert?

Hi,

habs damit ja schon probiert:

printf("\r");

Ändert sich aber nichts daran, das die Werte fortlaufend sind.

Mfg Sascha

von Thomas Burkhardt (Gast)


Lesenswert?

Je nach Terminaleinstellungen kann es notwendig sein statt nur einem CR
ein CR/LF zu schicken - also 0D 0A

Sollte aber am Terminal auch einstellbar sein... Minicom kanns :)

von Sascha (Gast)


Lesenswert?

Hi,

auch dieses habe ich jetzt ausprobiert. Bringt auch keinen Erfolg.
Weder by Hyperterminal oder bei  Terminal.

Mfg Sascha

von Rufus T. Firefly (Gast)


Lesenswert?

Wenn nur CR (0x0d - Carriage Return) gesendet wird, sollte das Terminal
zum Zeilenanfang (nicht Seitenanfang!) zurückspringen. Ein LF (0x0a -
Line Feed) springt in die nächste Zeile, ohne die horizontale Position
zu verändern.

Beispiel: Nacheinander werden folgende Zeichen übertragen

h a l l o <cr> n a s e

Danach sollte auf dem Bildschim "naseo" zu lesen sein und der Cursor
auf dem "o" stehen.

Beispiel: Nacheinander werden folgende Zeichen übertragen

h a l l o <lf> n a s e

Danach sollte folgendes auf dem Bildschirm stehen:
hallo
     nase

Zum "Debuggen" von derlei Dingen ist ein Terminal hilfreich, das den
empfangenen Hexcode darstellen kann; weder Hyperterminal noch das
Win3.11-Terminal können das.

von crazy horse (Gast)


Lesenswert?

hatte auch schon derartige Probleme mit diversen Terminalprogramme.
cr heisst eigentlich zum Anfang der Zeile zurückzukehren, die meisten
Programme stellen sich aber so "schlau" an, dass sie meinen, dem
dummen Benutzer unter die Arme greifen zu müssen, der meint mit cr
schon eine neue Zeile :-)
Was bis jetzt bei allen Programmen geholfen hat: vor der Ausgabe die
entsprechende Anzahl backspaces zu senden (0x08). Wenn deine Anzeige
also lautet:
15.654
musst du vor der Ausgabe 6 x 0x08 senden. Ändert sich die Länge des
auszugebenden strings, bei der Ausgabe mitzählen (printf gibt auch
einen  Rückgabewert, wieviele Zeichen ausgegeben wurden), und das beim
nächsten Mal mitverarbeiten.

von Rufus T. Firefly (Gast)


Lesenswert?

Wenn printf verwendet wird, kann es auch sein, daß der C-Compiler dem
Anwender unter die Arme greift und aus einem \n ein \x0d\x0a macht.
Ein einzelnes \r sollte allerdings nicht übersetzt werden.

Hilfreich ist - wie bereits gesagt - ein anständiges Terminalprogramm,
das die empfangenen Hex-Codes anzeigen kann.
Wenn ich mich recht irre, konnte das mal ein uraltes ProComm - aus der
präkolumbianischen 16-Bit-Windows-Zeit.

von Dirk B (Gast)


Lesenswert?


von Jens123 (Gast)


Lesenswert?

da bin ich froh, dass ich linux nutzen kann =)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.