Forum: Mikrocontroller und Digitale Elektronik Terminal


von cerberus (Gast)


Lesenswert?

Hallo.
Ich übertrage Zeichen vom Terminalprogramm via serieller Schnittstelle
zum uC. Dabei habe ich festgestellt, dass beim betätigen der
Cursortasten die Zeichen "A" "B" "C" und "D" übertragen
werden.
Ich denke das das falsch ist.
Habe ich einen Fehler bei der Initalisierung gemacht und empfange nur 7
Bit statt 8?

Wenn ich Zeichen vom Cursor senden kann, kann ich sie dann auch
empfangen und so auswerten? d.H. kann ich den Cursor durch das
Termial-Fenster wandern lassen und Text an bestimmten Stellen
plazieren?
Wenn ja, welche Zeichen müßte ich dann senden?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Vermutlich emuliert das Terminalprogramm ein VT100/VT52-Terminal der
Firma DEC. Dessen Befehlssatz wird auch als "ANSI-Sequenzen"
bezeichnet.

Die Cursortasten senden i.d.R. eine Folge von Zeichen;
ESC (0x1b) A (0x41) für Cursor 'rauf
ESC (0x1b) B (0x42) für Cursor 'runter
ESC (0x1b) C (0x43) für Cursor nach rechts
ESC (0x1b) D (0x44) für Cursor nach links

Sendest Du mit Deinem µC diese Zeichen an das Terminalprogramm, sollte
sich wie von Dir angenommen der Cursor bewegen.

von cerberus (Gast)


Lesenswert?

Verstehe. Ich werte also nur das 2. Zeichen aus?
Wenn ich also 0x1b 0x41 sende, wandert der Coursor eine Zeile nach
oben?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Ja, so müsste das sein.

von cerberus (Gast)


Lesenswert?

Danke Dir. Werde ich doch gleich mal ausprobieren

von cerberus (Gast)


Lesenswert?

So sieht die Zeile jetzt aus

/C
sprintf(mystring,"Datum\n\r%02d:%02d:%02d
%02d.%02d.%02d\x1b\x41\r", stunde, minute, sekunde, tag,
monat,jahr);
send_string_uart0(mystring);
/C

aber sobald das \x1b im String steht, stürzt das Terminalprogamm
sofort ab.
Mach ich was falsch? Gibt es noch eine andere Möglichkeit?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Wenn das Terminalprogramm abstürzt, machst nicht Du etwas falsch,
sondern derjenige, der das Terminalprogramm geschrieben hat. Probiere
ein anderes, notfalls tut's auch HyperTerminal (falls das nicht das
abstürzende Programm sein sollte).

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.