Forum: Mikrocontroller und Digitale Elektronik PC RS232 als Bildschirm für AVR verwenden


von Hofinger (Gast)


Lesenswert?

Mahlzeit,
ich würde gerne per RS232 den PC als Display für meinen AVR verwenden, 
allerdings habe ich das Problem, wenn ich sekündlich etwas schicken 
möchte, dass alles untereinander angezeigt wird, ich hätte aber gern, 
dass es jedesmal überschrieben wird. Gibt es einen Befehl um die gesamte 
Konsole zu löschen? Denke mal nicht, oder? Habt ihr eine andere Idee?

Lg
Hofinger

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Mit einem echten Terminalprogramm und Steuerzeichen geht das, natürlich.

von Hofinger (Gast)


Lesenswert?

echtes Terminalprogramm heißt was ?  Und welche Steuerzeichen?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Hyperterminal ist ein Beispiel für ein für diesen Zweck völlig 
ausreichendes Terminalprogramm.

Das emuliert den ANSI- resp. VT100-Terminalbefehlssatz; mit einer Suche 
nach "VT100 escape sequences" ist dessen Dokumentation leicht zu finden.

von Rene B. (themason) Benutzerseite


Lesenswert?

@Hofinger

Also VT100 kann ich auch nur empfehlen. Ist recht einfach zu 
implementieren und bietet viele Möglichkeiten. (Cursor, Farben).
Ich selbst habe damit schon eine Menüsteuerung realisiert. Ging sehr 
schnell von der Hand. Mit ner handvoll Funktionen lässt sich sehr viel 
machen, egal ob Debugging, Menüsteuerung oder eben das sekündliche 
Update eines Bildschirmbereiches zur Ausgabe. Als "Monitor" reicht dann 
hyperterm oder putty.
Und die paar ESC-Sequenzen sind im nu implementiert.
Dann mal ran ans Werk :-)

von Karl H. (kbuchegg)


Lesenswert?

Übrigens solltest du von der Technik des 'Ich lösche mal den ganzen 
Bildschirm' Abstand nehmen.

* Das dauert dann relativ lange bis wieder alle Fixtexte am Monitor 
stehen.
* Zudem flackert es
* Die in den letzten Zeilen ausgegebenen Dinge sind schlecht zu lesen 
eben weil sie sie höllisch flackern

Daher ist die meistgebrauchte Escape Sequenz die des 
Cursor-Positionierens.

Es ist auch oft recht hilfreich, wenn man sich vorher einen Plan macht, 
wie die Anzeige aussehen soll, welche Texte wohin kommen, welche fix 
sind, welche variabel sind, wie groß die Feldbreiten sein sollen. Auch 
sollte man den Vorteil des rechtsbündigen Ausgebens von Zahlen (also mit 
führenden Leerzeichen bzw. führenden Nullen) nicht unterschätzen. Dann 
braucht man meistens das Feld vorher nicht löschen, sondern kann einfach 
die neue Zahl drüberschreiben, ohne das Artefakte des vorhergehenden 
Inhalts übrig bleiben.

Auf Anforderung des Benutzers (Spezialtaste) kann man dann immer noch 
einen kompletten Monitor-Update machen, damit man sich auch im laufenden 
Betrieb an den µC frisch koppeln kann und dann wieder eine vollständige 
Anzeige (inklusive Fixtexte) anfordern kann (oder die zb in jedem 10 
Updatezyklus automatisch gemacht wird. Da steht dann Tür und Tor offen)

von frankman (Gast)


Lesenswert?

So, nachdem jetzt jeder nur schmarrn geschrieben hat, antworte ich jetzt 
mal auf die Frage:


Du mußt am Ende der Zeile nicht ein "carriage return, line feed" 
schicken, sondern nur ein "carriage return"

also  0x0D am Ende der Zeile statt 0x0A ( Also HEX 0D, Dezimal 13, im 
C-Code schreibt mann statt \n also ein \r)



Dann wird deine (eine) Zeile auf dem Bildschirm überschrieben....

von Hofinger (Gast)


Lesenswert?

Aaah, so geht das :)

Danke Leute!

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.