Ich denke, es ist möglich, weil ich vi direkt von meiner seriellen Schnittstelle über TeraTerm ausführen kann. Dort kann ich Text bearbeiten, zur nächsten Zeile gehen, dann zurückkommen und die erste Zeile bearbeiten! Wie machen sie das?
Welchen Charakter über UART könnte ich senden, um "eine Zeile nach oben" zu gehen?
EDIT: Anscheinend funktioniert der Zeilenvorschub. "\ f", um den Bildschirm zu löschen. Dies funktioniert jedoch nur für Hyperterminal auf meinem Computer und nicht für Teraterm. Weiß jemand warum?
Was Sie in einem Konsolenfenster sehen, ist das Ergebnis eines automatischen Echos (das häufig ein- oder ausgeschaltet werden kann), bei dem das Konsolenprogramm die Zeichen zeichnet, die Sie auf dem Bildschirm senden, oder das Ergebnis des Empfangs von Zeichen. Dies bedeutet, dass es zwei Möglichkeiten gibt, dies zu ändern:
Es gibt viele Möglichkeiten, dies zu tun, aber so würde ich mich einer vereinfachten Hobby-Implementierung nähern:
1920/BAUDRATE/11
erledigt , bedeutet dies eine maximale Bildwiederholfrequenz von etwa 5 Hz bei 115200 Baud (unter Verwendung von 1 Startbit, 1 Stopp, 1 Parität, 8 Daten). .\033[5D
; rechts :\033[5C
; auf und ab standardmäßig undefiniert.)uint8_t framewrite(const char *s, uint8_t row, uint8_t col)
... Wo
*s
befindet sich Ihr [terminiertes] char-Arrayrow
undcol
wo soll das erste Zeichen erscheinen? (Die Rückgabeuint8_t
dient zur Fehlererkennung.)uint8_t frame_clear(void)
,uint8_t frame_shiftrowsdown(void)
usw.pblinkchar
) mit abwechselnframewrite(pblinkchar,cursor_row,cursor_col)
.Ich bin mir sicher, dass es viel einfachere (ich denke, Software-Leute nennen es "elegant") Möglichkeiten gibt, dies durch Programmieren eines PC-Fensters zu tun, und Sie können wahrscheinlich herausfinden, wie dies durch das Durchstöbern dieses Tutorials geht , aber das Obige ähnelt dem, was ich habe Das haben wir in der Vergangenheit getan und arbeiten für einfache Benutzeroberflächen mit Mikros mit viel freiem Speicher.
quelle
Dies ist eine indirekte Antwort auf Ihre Frage. Wenn Sie sich in VI befinden, müssen Sie nur 'k' senden, um den Cursor nach oben zu bewegen.
Auf dieser VT100-Befehlsseite sieht es so aus, als würde die Aufwärtspfeiltaste durch Senden der folgenden Sequenz dargestellt:
ESC [ A
oder0x1B, 0x5B, 0x41
. Ich weiß nicht, ob das funktionieren wird, aber ich bin interessiert zu wissen, ob es funktioniert.quelle