Steuerbefehl für das Löschen des Display (C-Code)

Gast #4038778
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
}
#4038787
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.
#4038793
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.
Gast #4038820
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.

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