Wie funktionieren Text User Interfaces (TUI)?

8

Ich wurde kürzlich beauftragt, ein altes COBOL-Programm zu portieren. Ich bin an GUIs gewöhnt und kann nicht verstehen, wie eine TUI funktioniert. Ich habe viel über Google gesucht, aber nichts gefunden.

Ich wusste, dass Konsolenanwendungen zeilenweise ausgegeben werden können, aber wie werden Farben usw. auf den Terminalbildschirm gezeichnet? Wie wird all dieses Zeug gezeichnet? Unterstützen Terminals das irgendwie? Gibt es einen Standard? Ich bin ziemlich verwirrt.

GorillaApe
quelle
1
Welche Plattform (en) werden Sie verwenden?
Jon Onstott
Versuchen ui.stackexchange.com
Maniero

Antworten:

7

Ich bin mir ziemlich sicher, dass Ihre Antwort je nach Plattform hier variieren wird. Es gibt viele verschiedene Arten von Terminals / Konsolen und für viele mehr als einen Standard zum Schreiben darauf. Die meisten von ihnen, die ich gesehen habe, verwenden eine Art Escape-Sequenz (z. B. ANSI-Zeichen-Escape-Zeichen für dos, YMMV), bei der Sie ein spezielles Escape-Zeichen senden, um das Schreiben auf den Bildschirm zu unterbrechen. Anschließend können Sie den Cursor bewegen, die Farben ändern usw.

Wenn Sie buchstäblich etwas für dumme Terminals schreiben, werden Sie wahrscheinlich etwas wie https://secure.wikimedia.org/wikipedia/en/wiki/Ncurses verwenden

Rechnung
quelle
3
IBM Server verwenden in der Regel die Protokolle 3270 und 5250 zusätzlich zu Telnet. Seitenorientierte Updates.
1
Wenn er ein COBOL / CICS-Programm auf eine Midrange-Plattform portiert, sind Flüche ein guter Vorschlag. Die Frage sagt uns nicht genug.
Jeremy
Viele andere Plattformen bieten oder verwenden ein VT-100- oder VT-200-kompatibles Protokoll, sodass sie die gängigen "ANSI" -Codes verwenden.
Greyfade
@ Thorbjørn Ravn Andersen - Yup. Und wenn Sie darüber hinaus etwas sehen, das "Novell Virtual Terminal" heißt, laufen Sie ... rennen Sie wie die Hölle
Tim Post
@ Tim, bah, stell dich den Herausforderungen, anstatt feige wegzulaufen!
0

Der Oberbegriff für diese Art von Schnittstelle lautet "Befehlszeile". Sie werden wahrscheinlich besser dafür googeln als für "Textbenutzeroberfläche".

Dan Ray
quelle
4
Nein, ein Befehlszeilenprogramm erhält nur stdin und Argumente und kann nur stdout und stderr sowie einen Rückkehrcode ausgeben. Ein TUI hingegen kann jede Position auf dem Bildschirm aktualisieren und alle Terminaleingaben einzeln abfangen. en.wikipedia.org/wiki/Text_user_interface
Jeremy
0

Keine Sorge, es stehen Hunderte von Standards zur Auswahl :)

Ich fühle mich mit text- und konsolenbasierten Anwendungen leider wohler als mit ihren älteren Brüdern aus grafischen Fenstern. Ich fürchte, zu viele Tage im FidoNet.

Das allererste, was ich tun würde, ist, ein paar VT100-Codes von der alten Digital-Firma zu lernen. Sie können niemals Anwendungen in VT100-Codes schreiben (wahrscheinlich davon abraten), aber es ist eine sehr gute und einfache Einführung in die Steuerung der Konsolenmatrix.

Bibliotheken wie Flüche verpacken diese Steuercodes (und viele andere Terminalcodes) und abstrahieren sie, damit sich Benutzer über ihre eigenen Terminals anmelden können. Dinge wie VT100 können sogar Remote-Druck (lokal) ausführen, mit dem wir heute noch in RDP zu kämpfen haben.

Um die Situation für Sie noch schlimmer zu machen, verwenden IBM Systeme keine zeilen- oder zeichenbasierte Steuerung, sondern bildschirm- und blockbasierte Protokolle. Beispiele sind die Terminalprotokolle 3270 und 5250 , die mangels eines besseren Vergleichs in der Request | Response-Architektur an HTTP denken. So fähig diese auch sind, sie sind eine echte PITA IMNSHO, mit der man arbeiten kann, und sollten ihre eigene Frage sein.

Schlimmer noch wäre das Schreiben einer Konsolenanwendung in einer DOS / Windows-Welt. Antworten Sie mit Ihrer Zielentwicklungsplattform.

Jé Queue
quelle