Forum: Mikrocontroller und Digitale Elektronik ANSI escape Befehl gesucht


von Mathias F. (savag)


Lesenswert?

Hallo Leute,
ich gebe momentan ein paar Werte über die UART raus.
Alle Werte befinden sich in einer Zeile.
Am Anfang einer Ausgabe Lösche ich erst alles per "\033[2J" und schreibe 
es dann neu im Terminal(es soll nicht jedes mal eine neue Zeile 
entstehen).

Momentan kann man sehen dass die Zeile von links nach rechts aufgebaut 
wird, was nicht so schön ist.

Nun zu meiner Frage:

Gibt es die möglichkeit den Text erst sichtbar zu machen sobald die 
Zeile fertig geschrieben ist?

von Stefan F. (Gast)


Lesenswert?

> Gibt es die möglichkeit den Text erst sichtbar zu machen
> sobald die Zeile fertig geschrieben ist?

Ich glaube: nein

Zu Zeiten, als wir noch mit Modems kommunizierten, war es völlig normal, 
dass man dem Aufbau der Bildschirmseiten zuschauen konnte. Und danach 
wurde an diesen Sequenzen meines Wissens nach nichts mehr geändert.

von zyxw (Gast)


Lesenswert?

Die Baudrate erhöhen?
Bei 1Mbaud dauern 80 Zeichen nicht mal eine Millisekunde.

von Mathias F. (savag)


Lesenswert?

Hallo,
ja das ist mein Plan B :)
Habe ich schon mit 256000 getestet.

von Bauform B. (bauformb)


Lesenswert?

Es sieht wesentlich besser aus, wenn man möglichst wenig löscht sondern 
den alten Inhalt überschreibt. Im einfachsten Fall verwendet man statt 
"\033[2J" nur "\r". Man kann die Textausgabe gezielt in einer bestimmten 
Zeile und Spalte beginnen mit z.B. "\033[1;11H" für Zeile 1, Spalte 11. 
Wenn die Texte unterschiedlich lang sind, kann man (nur!) den Rest der 
Zeile mit "\033[K" löschen.

So ähnlich betreibe ich Displays mit 4800 Baud, da kann man den 
Bildaufbau natürlich beobachten, aber nur beim ersten Mal. Wenn sich 
eine Information ändert, sieht man kein Flackern. Beschleunigt wird das 
ganze, indem ich den statischen Text nur einmal schreibe und dann nur 
noch die Änderungen gezielt ausgebe.

von Äxl (geloescht) (Gast)


Lesenswert?

Cursor positionieren, nur die Änderungen ausgeben. War damals so üblich. 
funktioniert gut und reicht.

von Jack (Gast)


Lesenswert?

Mathias F. schrieb:
> Gibt es die möglichkeit den Text erst sichtbar zu machen sobald die
> Zeile fertig geschrieben ist?

Theoretisch ist es möglich. Praktisch hängt es von der Funktion des 
Terminals ab - und die meisten Emulatoren können es nicht.

Schau dir die Page-Kommandos wie Next Page (NP), Page Position Absolute 
(PPA), Page Position Forward (PPF) usw. in 
http://www.ecma-international.org/publications/standards/Ecma-048.htm 
an. Dummerweise sind die richtigen Sequenzen auch noch schwierig zu 
konstruieren, weil der Standard eine übertrieben komplizierte 
Darstellung gewählt hat.

von MaWin (Gast)


Lesenswert?

Mathias F. schrieb:
> Gibt es die möglichkeit den Text erst sichtbar zu machen sobald die
> Zeile fertig geschrieben ist?

Viele Terminals können mehrere Seiten.
Also abwechselnd Seite 1 bzw. Seite 2 komplett aufbauen und danach mit 1 
Kommando umschalten.

von Erwin D. (Gast)


Lesenswert?

MaWin schrieb:
> Mathias F. schrieb:
>> Gibt es die möglichkeit den Text erst sichtbar zu machen sobald die
>> Zeile fertig geschrieben ist?
>
> Viele Terminals können mehrere Seiten.
> Also abwechselnd Seite 1 bzw. Seite 2 komplett aufbauen und danach mit 1
> Kommando umschalten.

Also das gleiche, was Jack schon vorgeschlagen hatte.
Nur bei ihm war ein Link dabei, in dem man nachlesen kann...

von A. S. (Gast)


Lesenswert?

Mathias F. schrieb:
> Habe ich schon mit 256000 getestet.

Also 115.2k 230.4k und dann eher 1MBaud, 2 oder 3, zumindest bei den 
billigen USB-umsetzer

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.