Forum: Mikrocontroller und Digitale Elektronik Steuerbefehl für das Löschen des Display (C-Code)


von Timmy (Gast)


Lesenswert?

Hallo zusammen,

ich sende per UART jede Sekunde die aktuelle Raumtemperatur. Nun möchte 
ich, dass die Ausgabe über ein Terminalprogramm einmalig erscheint und 
nicht nacheinander. Das heisst nach der Ausgabe soll das Display 
gelöscht werden.

Mit dem Terminalprogramm PuTTy funktioniert das auch mit dem 
Steuerbefehl "\x1B[2J\x1B[;H". Jedoch nicht mit dem Terminalprogramm 
HTerm oder in einer Terminal-App wie z.B. Bluetooth Terminal am 
Smartphone (Temperatur wird über ein Bluetooth-Modul an das Smartphone 
gesendet).

Kann mir jemand eine Lösung für das Problem nennen bzw. weitere 
Steuerbefehle?

Beispiel:
1
void send_uart_message()
2
{
3
  if (uart_tx_flag == 1)
4
  {
5
    Puffer_output[0]='\0';
6
    Puffer_temp[0]='\0';
7
    
8
    dtostrf(temperatur, 3, 1, Puffer_temp);    
9
    
10
    put_string("\x1B[2J\x1B[;H");
11
12
    while (uart_tx_flag != 1)
13
    {
14
    }
15
        
16
    strcat(Puffer_output, "T: ");
17
    strcat(Puffer_output, Puffer_temp);
18
    strcat(Puffer_output, "'C");
19
        
20
    put_string(Puffer_output);
21
    
22
    messung_1s = 0;
23
  }
24
}

: Bearbeitet durch User
von Karl H. (kbuchegg)


Lesenswert?

Timmy schrieb:

> Kann mir jemand eine Lösung für das Problem nennen

Du musst dein Terminalprogramm studieren (bzw. die Doku dazu), welche 
Emulation es anbietet. Viele unterstützen die sog. VT100 Emulation. Aus 
der stammt auch die von dir benutze Sequenz.

http://www.ccs.neu.edu/research/gpc/MSim/vona/terminal/VT100_Escape_Codes.html

Wenn das Terminalprogramm, das du benutzt, in den Konfigurationsoptionen 
dazu gebracht werden kann, VT100 zu 'sprechen', bist du aus dem 
Schneider. Wenn nicht, kannst du nur versuchen rauszufinden, was 
unterstützt wird. Im schlimmsten Fall kannst du noch einen Formfeed (das 
ist ein ASCII Zeichen http://de.wikipedia.org/wiki/Steuerzeichen) 
versuchen. Wenn das auch nicht klappt, dann hast du schlechte Karten.

von Falk B. (falk)


Lesenswert?

@Timmy (Gast)

>Mit dem Terminalprogramm PuTTy funktioniert das auch mit dem
>Steuerbefehl "\x1B[2J\x1B[;H".

Ist doch super!

> Jedoch nicht mit dem Terminalprogramm
>HTerm

Das ist auch kein normales Terminalprogramm! Das ist eins zum Debuggen! 
Das kann das nicht.

> oder in einer Terminal-App wie z.B. Bluetooth Terminal am
>Smartphone (Temperatur wird über ein Bluetooth-Modul an das Smartphone
>gesendet).

Die Steuercodes oben funktionieren nur, wenn das Termiinal eine VT100 
Emulation oder ähnliches beherrscht.

>Kann mir jemand eine Lösung für das Problem nennen bzw. weitere
>Steuerbefehle?

Dazu müste man die Eigenschaften deines Bluetooth Terminals kennen.

von Noch einer (Gast)


Lesenswert?

>Im schlimmsten Fall kannst du noch einen Formfeed ... versuchen.

Der schlimmste Fall findet sich als Kommentar in der alten termcap.

# There are known to be at least three flavors of the tty40
# The 40-1 is a half duplex terminal and is hopeless.  The 40-2 is
# braindamaged but has hope and is described here. The 40-4 is a 3270
# lookalike and beyond hope.

von ./. (Gast)


Lesenswert?

(VT100-)Bildschirm loeschen geht auch mit:

Reset Terminal: ESC c := 0x1b 0x63

statt ESC [ H ESC [ J

von Wolfgang (Gast)


Lesenswert?

./. schrieb:
> (VT100-)Bildschirm loeschen geht auch mit:

Damit das funktioniert, muss das Terminalprogamm zumindest über eine 
VT100-Emulation verfügen.

Heutzutage ist für solche Spielereien eher üblich, einen kleinen 
Web-Server laufen zu lassen, der die Datenanzeige als HTML-Page für 
beliebige Web-Browser zur Verfügung stellt.

von ./. (Gast)


Lesenswert?

> (VT100-)Bildschirm loeschen geht auch mit:

Damit das funktioniert, muss das Terminalprogamm zumindest über eine
VT100-Emulation verfügen.

Aaah, Captain Obvious,

Du solltest Deinen Parser auch auf Text in Klammern erweitern.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Ein Terminalprogramm, das kein Terminal emuliert, ist kein 
Terminalprogramm.
"hTerm", "Bray" und Co. emulieren keine Terminals -- und damit sind sie 
keine Terminalprogramme.

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.