Aus RN-Wissen.de
Wechseln zu: Navigation, Suche
Balkonkraftwerk Speicher und Wechselrichter Tests und Tutorials

(Einstellungen)
(Terminalsteuerung)
Zeile 79: Zeile 79:
 
http://www.roboternetz.de/wiki/uploads/Main/hyper6.jpg
 
http://www.roboternetz.de/wiki/uploads/Main/hyper6.jpg
  
==Terminalsteuerung==  
+
==Terminalsteuerung ANSII==
Eine Input-Routine
+
 
Terminalsteuerung-ANSII  
+
Ein Terminal bietet aber auch einiges mehr als das, was bei der allgemeinen Terminalsteuerung besprochen wurde.
Ein kleines Spiel mit BasCom
+
 
 +
* Volle Kontrolle über den Bildschirm
 +
* Alle Tasten können verwendet werden
 +
 
 +
Dazu werden ANSII-Sequenzen verwendet,das sind Zeichenfolgen mit ganz bestimmtem Aufbau. Und auch die werden noch von verschiedenen Herstellern um zusätzliche Funktionen erweitert. Besonders hervorgetan hat sich hier DEC (digital equipment corporation) mit seinen VTxxx Terminals. Viele Terminal-Emulationen bieten solche Typen an, wobei besonders die VT220 und aufwärts interessant sind. Aber auch schon VT100 ist ganz nett.
 +
 
 +
Die ganzen Steuersequenzen sind auch im Internet zu finden und Power-User sind gebeten, sich dort über alle Feinheiten zu informieren.
 +
 
 +
Für Microcontroller ist wohl einiges zu aufwendig, aber einige Möglichkeiten möchte ich hier darstellen, da man damit doch von den unleserlich schnell durchlaufenden Einzelzeilen wegkommen kann.
 +
 
 +
Nicht jeder hat die Möglichkeit, und manchmal zahlt es sich auch garnicht aus, eigens ein graphikfähiges PC-Programm zu schreiben, um mit seinem Microcontroller Dialog zu führen, oder ein bißchen Balkengraphik zu zeigen.
 +
 
 +
Den Typ VT100 bieten BasCom und Hyperterm an, wollen wir mal sehen
 +
 
 +
===VT100===
 +
'''Was wird gesendet ? (Auszug)'''
 +
Bei der normalen Schreibmaschinen-Tastatur ändert sich nix. Aber die anderen Blöcke werden nun lebendig
 +
 
 +
Nur das erste Zeichen eine Sequenz ist ein Kontrollzeichen, und zwar
 +
<ESC>, Code 27, die anderen sind normal lesbare ASCII Zeichen
 +
 
 +
'''Pfeiltasten'''
 +
* Pfeil rauf   
 +
<ESC>[A
 +
* Pfeil runter
 +
<ESC>[B
 +
* Pfeil rechts
 +
<ESC>[C
 +
* Pfeil links
 +
<ESC>[D
 +
 
 +
'''EDIT Keys'''
 +
* Pos 1 (Home)
 +
<ESC>[1~
 +
* Bild rauf
 +
<ESC>[5~
 +
* Bild runter
 +
<ESC>[6~
 +
 
 +
'''Was kann man senden ? (Auszug)'''
 +
Wie beim Empfangen, bei den "normalen" Zeichen ändert sich nichts. Ich will auch nur einige Beispiele bringen, die auf den Geschmack bringen sollen.
 +
 
 +
!!! Freie Positionierung des Cursors irgendwo am Schirm
 +
<ESC>[''nn'';''mm''f
 +
dabei ist
 +
* nn die Zeilennummer  1-24
 +
* mm die Spalternummer 1-80 oder 1-132
 +
 
 +
BasCom Beispiel, das auch der C-Programmierer versteht
 +
PRINT chr(27);"[01;40f";
 +
stellt den Cursor in die oberste Zeile, genau in die Mitte.'- (führende Nullen können sein, müssen aber nicht)-'
 +
 
 +
'''Zeichen-Attribute'''
 +
<ESC>[''param''m    '-(das ist ein kleines "m" am Schluß)-'
 +
Mögliche "param" sind
 +
* 0 = normal
 +
* 1 = heller (bold)
 +
* 4 = unterstrichen
 +
* 5 = blinkend
 +
* 7 = reverse (dunkel auf hell bzw. umgekehrt)
 +
dabei können mehrere Attribute angegeben werden, dann aber mit semikolon getrennt
 +
<ESC>[''param1'';''param2'';''param3''m
 +
 
 +
'''Beispiel:'''
 +
will man bei einer Eingabe den Aufforderungstext verkehrt darstellen, sendet man
 +
PRINT chr(27);"[7m";  ' setzt attribut "revers"
 +
PRINT "VORNAME ?>";    ' der Text
 +
PRINT chr(27);"[0m";  ' Attribut wieder normal
 +
 
 +
http://www.roboternetz.de/wiki/uploads/Main/Ansii_2.jpg
 +
 
 +
(das geht natürlich auch in einem Print-Befehl auf einmal)
 +
 
 +
 
 +
'''Lösch-Befehle'''
 +
* rechts vom Cursor die Zeile löschen
 +
<ESC>[K
 +
* Links vom Cursor die Zeile löschen
 +
<ESC>[1K
 +
* Vom Cursor abwärst den ganzen Schirm löschen
 +
<ESC>[J
 +
* Oberhalb des Cursors den ganzen Schirm löschen
 +
<ESC>[J
 +
 
 +
'''Beispiel:'''
 +
Beim Programmstart erstmal den gesamten Schirm löschen und eine Überschrift in der Mitte 
 +
PRINT chr(27);"[1;1f";    ' Cursor ganz rauf
 +
PRINT chr(27);"[J";      ' den ganzen Schirm löschen
 +
PRINT chr(27);"[1;38f";  ' In die Mitte der ersten Zeile
 +
PRINT chr(27);"[7m";      ' setzt attribut "revers"
 +
PRINT "START";            ' Überschrift
 +
PRINT chr(27);"[0m";      ' setzt attribut normal
 +
PRINT                    ' (=neue Zeile) Cursor am Anfang der zweiten Zeile
 +
 
 +
 
 +
'''Anmerkung:'''
 +
Man kann mit diesen Sequenzen einiges tun, auch einige Spiele aus der Urzeit lassen sich damit programmieren, vor allem aber kann man z.B. Sensorwerte übersichtlich an verschiedenen Stellen des Schirme so plazieren, daß man mehrere im Auge behalten kann.
 +
 
 +
 
 +
 
 +
==Ein kleines Spiel mit BasCom==

Version vom 16. November 2005, 18:49 Uhr

Allgemeines zu Terminals

Was hat ein Terminal mit Robotik zu tun ? Eigentlich nix. Aber wer nicht ein LCD-Display und eine Tastatur auf seinem Board eingebaut hat, ist darauf angewiesen, mit einer Terminal-Emulation Kontakt mit seinem Controllerboard aufzunehmen.

Gleich vorweg: da kaum ein Bastler mit einem richtigen "physischen" Terminal was zu tun hat, werde ich den Zusatz "Emulation" in Zukunft streichen, das verwirrt nur und bringt nix. Bei so einem Terminal sind ein paar Dinge einzustellen, und auf die sollte man auch achten. Häufig verwendet werden


BasCom Terminal

Die Möglichkeiten beschränken sich auf das Wichtigste

Options-->Communications

http://www.roboternetz.de/wiki/uploads/Main/basterm1.jpg

Es ist nicht viel einzustellen, die gezeigten Werte sind der Normalfall

Hyperterm Terminal

Nach dem Programmstart erscheint

Neue Verbindung

http://www.roboternetz.de/wiki/uploads/Main/hyper1.jpg

Da gibt man irgendeinen Namen für die Verbindung ein, z.B. "Roboternetz"

Es erscheint Verbinden mit

http://www.roboternetz.de/wiki/uploads/Main/hyper2.jpg

Wir geben das COM-Port ein, wo das Kabel zum Controller angesteckt ist

Jetzt kommt's drauf an, was im Controller eingestellt wurde.

Anschlußeinstellungen

http://www.roboternetz.de/wiki/uploads/Main/hyper3.jpg

  • Baudrate (Bits pro Sekunde) - Beliebt ist 9600, das muß aber mit dem übereinstimmen, was wir dem Controller gesagt haben
  • Datenbits - Normalerweise "8"
  • Parität - Normalerweise "keine"
  • Stoppbits - Normalerweise "1"
  • Flußsteuerung - Normalerweise "kein"
Jetzt ist das Hyperterm soweit zufrieden, wir aber nicht.

http://www.roboternetz.de/wiki/uploads/Main/hyper4.jpg

Es geht weiter bei

Einstellungen

Datei-->Eigenschaften-->Einstellungen

http://www.roboternetz.de/wiki/uploads/Main/hyper5.jpg


Interessant sind

  • Rücktaste sendet*
    • CAN (Ctrl-H) --> Terminalsteuerung
    • DEL --> Terminalsteuerung

Emulation wird hier Verschiedenes angeboten

  • Auto Detect
  • TTY

Solange man nur "print" und "input" sagt, reicht das allemal

  • VT100 / VT220 und ev. andere

diese Typen verstehen die normalen "ANSII-Steuersequenzen" und einige mehr ANSII-Sequenzen

Das reicht, um mit dem Robby eine Unterhaltung führen zu können

ASCII-Konfiguration

Um das Interesse zu wecken, einmal ein Bild der Einstellungen. Beim Thema "Terminalsteuerung" gibt's dazu mehr Information

http://www.roboternetz.de/wiki/uploads/Main/hyper6.jpg

Terminalsteuerung ANSII

Ein Terminal bietet aber auch einiges mehr als das, was bei der allgemeinen Terminalsteuerung besprochen wurde.

  • Volle Kontrolle über den Bildschirm
  • Alle Tasten können verwendet werden

Dazu werden ANSII-Sequenzen verwendet,das sind Zeichenfolgen mit ganz bestimmtem Aufbau. Und auch die werden noch von verschiedenen Herstellern um zusätzliche Funktionen erweitert. Besonders hervorgetan hat sich hier DEC (digital equipment corporation) mit seinen VTxxx Terminals. Viele Terminal-Emulationen bieten solche Typen an, wobei besonders die VT220 und aufwärts interessant sind. Aber auch schon VT100 ist ganz nett.

Die ganzen Steuersequenzen sind auch im Internet zu finden und Power-User sind gebeten, sich dort über alle Feinheiten zu informieren.

Für Microcontroller ist wohl einiges zu aufwendig, aber einige Möglichkeiten möchte ich hier darstellen, da man damit doch von den unleserlich schnell durchlaufenden Einzelzeilen wegkommen kann.

Nicht jeder hat die Möglichkeit, und manchmal zahlt es sich auch garnicht aus, eigens ein graphikfähiges PC-Programm zu schreiben, um mit seinem Microcontroller Dialog zu führen, oder ein bißchen Balkengraphik zu zeigen.

Den Typ VT100 bieten BasCom und Hyperterm an, wollen wir mal sehen

VT100

Was wird gesendet ? (Auszug) Bei der normalen Schreibmaschinen-Tastatur ändert sich nix. Aber die anderen Blöcke werden nun lebendig

Nur das erste Zeichen eine Sequenz ist ein Kontrollzeichen, und zwar 
<ESC>, Code 27, die anderen sind normal lesbare ASCII Zeichen

Pfeiltasten

  • Pfeil rauf
<ESC>[A
  • Pfeil runter
<ESC>[B
  • Pfeil rechts
<ESC>[C
  • Pfeil links
<ESC>[D

EDIT Keys

  • Pos 1 (Home)
<ESC>[1~
  • Bild rauf
<ESC>[5~
  • Bild runter
<ESC>[6~

Was kann man senden ? (Auszug) Wie beim Empfangen, bei den "normalen" Zeichen ändert sich nichts. Ich will auch nur einige Beispiele bringen, die auf den Geschmack bringen sollen.

!!! Freie Positionierung des Cursors irgendwo am Schirm

<ESC>[nn;mmf

dabei ist

  • nn die Zeilennummer 1-24
  • mm die Spalternummer 1-80 oder 1-132

BasCom Beispiel, das auch der C-Programmierer versteht

PRINT chr(27);"[01;40f";

stellt den Cursor in die oberste Zeile, genau in die Mitte.'- (führende Nullen können sein, müssen aber nicht)-'

Zeichen-Attribute

<ESC>[paramm     '-(das ist ein kleines "m" am Schluß)-'

Mögliche "param" sind

  • 0 = normal
  • 1 = heller (bold)
  • 4 = unterstrichen
  • 5 = blinkend
  • 7 = reverse (dunkel auf hell bzw. umgekehrt)

dabei können mehrere Attribute angegeben werden, dann aber mit semikolon getrennt

<ESC>[param1;param2;param3m 

Beispiel: will man bei einer Eingabe den Aufforderungstext verkehrt darstellen, sendet man

PRINT chr(27);"[7m";   ' setzt attribut "revers"
PRINT "VORNAME ?>";    ' der Text
PRINT chr(27);"[0m";   ' Attribut wieder normal

http://www.roboternetz.de/wiki/uploads/Main/Ansii_2.jpg

(das geht natürlich auch in einem Print-Befehl auf einmal)


Lösch-Befehle

  • rechts vom Cursor die Zeile löschen
<ESC>[K
  • Links vom Cursor die Zeile löschen
<ESC>[1K
  • Vom Cursor abwärst den ganzen Schirm löschen
<ESC>[J
  • Oberhalb des Cursors den ganzen Schirm löschen
<ESC>[J

Beispiel: Beim Programmstart erstmal den gesamten Schirm löschen und eine Überschrift in der Mitte

PRINT chr(27);"[1;1f";    ' Cursor ganz rauf
PRINT chr(27);"[J";       ' den ganzen Schirm löschen
PRINT chr(27);"[1;38f";   ' In die Mitte der ersten Zeile 
PRINT chr(27);"[7m";      ' setzt attribut "revers"
PRINT "START";            ' Überschrift
PRINT chr(27);"[0m";      ' setzt attribut normal
PRINT                     ' (=neue Zeile) Cursor am Anfang der zweiten Zeile


Anmerkung: Man kann mit diesen Sequenzen einiges tun, auch einige Spiele aus der Urzeit lassen sich damit programmieren, vor allem aber kann man z.B. Sensorwerte übersichtlich an verschiedenen Stellen des Schirme so plazieren, daß man mehrere im Auge behalten kann.


Ein kleines Spiel mit BasCom


LiFePO4 Speicher Test