Friedrich-Alexander-Universität Erlangen-Nürnberg  /   Technische Fakultät  /   Department Informatik

Konsole (VT100) über serielle Schnittstelle.Mit Hilfe dieser Klasse kann ein VT100-kompatibles Anzeigeterminal über die serielle Schnittstelle verbunden werden. Mehr ...

#include <device/console.h>

Klassendiagramm für Console:
Zusammengehörigkeiten von Console:

Öffentliche Typen

enum  attrib {
  RESET = 0, BRIGHT = 1, DIM = 2, UNDERSCORE = 4,
  BLINK = 5, REVERSE = 7, HIDDEN = 8
}
 Attribtue. Mehr ...
 
enum  color {
  BLACK = 0, RED = 1, GREEN = 2, YELLOW = 3,
  BLUE = 4, MAGENTA = 5, CYAN = 6, WHITE = 7
}
 Farbcodes. Mehr ...
 
- Öffentliche Typen geerbt von Serial
enum  comPort { COM1 = 0x3f8, COM2 = 0x2f8, COM3 = 0x3e8, COM4 = 0x238 }
 COM-Port. Mehr ...
 
enum  baudRate {
  BAUD_300 = 384, BAUD_600 = 192, BAUD_1200 = 96, BAUD_2400 = 48,
  BAUD_4800 = 24, BAUD_9600 = 12, BAUD_19200 = 6, BAUD_38400 = 3,
  BAUD_57600 = 2, BAUD_115200 = 1
}
 Übertragungsgeschwindigkeit. Mehr ...
 
enum  dataBits { DATA_5BIT = 0, DATA_6BIT = 1, DATA_7BIT = 2, DATA_8BIT = 3 }
 Anzahl der Datenbits pro Zeichen.
 
enum  stopBits { STOP_1BIT = 0, STOP_1_5BIT = 4, STOP_2BIT = 4 }
 Anzahl der Stopbits pro Zeichen.
 
enum  parity {
  PARITY_NONE = 0, PARITY_ODD = 8, PARITY_EVEN = 24, PARITY_MARK = 40,
  PARITY_SPACE = 56
}
 Paritätsbit.
 

Öffentliche Methoden

 Console (Serial::comPort port=COM1, Serial::baudRate baudrate=BAUD_115200, Serial::dataBits databits=DATA_8BIT, Serial::stopBits stopbits=STOP_1BIT, Serial::parity parity=PARITY_NONE)
 Konstruktor für die VT100 kompatible Konsole. Mehr ...
 
 ~Console ()
 Destruktor.
 
void flush ()
 Methode zur Ausgabe des Pufferinhalts der Basisklasse Stringbuffer. Mehr ...
 
void setForeground (Console::color c)
 Vordergrundfarbe (für alle nachfolgenden Ausgaben) ändern. Mehr ...
 
void setBackground (Console::color c)
 Hintergrundfarbe (für alle nachfolgenden Ausgaben) ändern. Mehr ...
 
void setAttribute (Console::attrib a)
 Ausgabeformatierung (für alle nachfolgenden Ausgaben) ändern. Mehr ...
 
void reset ()
 Terminal zurücksetzen. Mehr ...
 
void setpos (int x, int y)
 Setzen des Cursors in Spalte x und Zeile y. Mehr ...
 
bool getpos (int &x, int &y)
 Abfragen der Cursorposition. Mehr ...
 
void print (char *string, int length)
 Anzeige mehrerer Zeichen ab der aktuellen Cursorposition. Mehr ...
 
void listen ()
 Initialisiere unterbrechungsgesteuerte serielle Verbindung. Mehr ...
 
bool prologue ()
 Enthält den Prolog der Unterbrechungsbehandlung. Mehr ...
 
void epilogue ()
 Verarbeitung des empfangenen Zeichens. Mehr ...
 
char getchar ()
 Schnittstelle für Anwendungen, um Daten von der seriellen Schnittstelle zu empfangen. Mehr ...
 
- Öffentliche Methoden geerbt von O_Stream
 O_Stream ()
 Konstruktor; Initiale Zahlenbasis ist das Dezimalsystem. Mehr ...
 
virtual ~O_Stream ()
 Destruktor.
 
O_Streamoperator<< (char c)
 Stellt ein einzelnes Zeichen dar. Mehr ...
 
O_Streamoperator<< (unsigned char c)
 Stellt ein einzelnes Zeichen dar. Mehr ...
 
O_Streamoperator<< (const char *string)
 Darstellung einer nullterminierten Zeichenkette. Mehr ...
 
O_Streamoperator<< (bool b)
 Stellt ein Boolean dar. Mehr ...
 
O_Streamoperator<< (short ival)
 Darstellung ganzer Zahlen im Zahlensystem zur Basis base. Mehr ...
 
O_Streamoperator<< (unsigned short ival)
 Darstellung ganzer Zahlen im Zahlensystem zur Basis base. Mehr ...
 
O_Streamoperator<< (int ival)
 Darstellung ganzer Zahlen im Zahlensystem zur Basis base. Mehr ...
 
O_Streamoperator<< (unsigned int ival)
 Darstellung ganzer Zahlen im Zahlensystem zur Basis base. Mehr ...
 
O_Streamoperator<< (long ival)
 Darstellung ganzer Zahlen im Zahlensystem zur Basis base. Mehr ...
 
O_Streamoperator<< (unsigned long ival)
 Darstellung ganzer Zahlen im Zahlensystem zur Basis base. Mehr ...
 
O_Streamoperator<< (const void *ptr)
 Darstellung eines Zeigers als hexadezimale ganze Zahl. Mehr ...
 
O_Streamoperator<< (O_Stream &(*f)(O_Stream &))
 Aufruf einer Manipulatorfunktion. Mehr ...
 
- Öffentliche Methoden geerbt von Stringbuffer
virtual ~Stringbuffer ()
 Destruktor (hier nichts zu tun)
 
- Öffentliche Methoden geerbt von Serial
 Serial (Serial::comPort port=COM1, Serial::baudRate baudrate=BAUD_115200, Serial::dataBits databits=DATA_8BIT, Serial::stopBits stopbits=STOP_1BIT, Serial::parity parity=PARITY_NONE)
 Konstruktor. Mehr ...
 
int read (bool blocking=true)
 Lese ein Byte von serieller Schnittstelle. Mehr ...
 
int write (char out, bool blocking=true)
 Schreibe ein Byte auf die serieller Schnittstelle. Mehr ...
 
bool receiveInterrupt (bool enable)
 Unterbrechung bei Datenempfang. Mehr ...
 
- Öffentliche Methoden geerbt von Gate
 Gate ()
 Konstruktor. Mehr ...
 
virtual ~Gate ()
 Destruktor. Mehr ...
 
bool set_queued ()
 Setzt atomar ein Flag um zu markieren, dass sich das Objekt gerade in einer Epilog-Warteschlange befindet. Mehr ...
 
void set_dequeued ()
 Setzt das in set_queued() gesetzte Flag zurück. Mehr ...
 

Geschützte Attribute

BBuffer< char, 16 > buffer_prologue
 Buffer für im Prolog ausgelesene Zeichen.
 
- Geschützte Attribute geerbt von Stringbuffer
char buffer [80]
 Zeichenpuffer.
 
int pos
 Aktuelle Position im Puffer.
 

Weitere Geerbte Elemente

- Öffentliche Attribute geerbt von O_Stream
int base
 Basis des zur Anzeige verwendeten Zahlensystems (z.B. 2, 8, 10 oder 16) Mehr ...
 
- Öffentliche Attribute geerbt von Gate
QueueLink< Gatequeue_link
 Verkettungszeiger für Epilog Queue.
 
- Geschützte Methoden geerbt von Stringbuffer
 Stringbuffer ()
 Konstruktor; Markiert Puffer als leer.
 
void put (char c)
 Fügt das Zeichen c in den Puffer ein. Mehr ...
 

Ausführliche Beschreibung

Konsole (VT100) über serielle Schnittstelle.

Mit Hilfe dieser Klasse kann ein VT100-kompatibles Anzeigeterminal über die serielle Schnittstelle verbunden werden.

Eine Anwendung, welche komfortabel eine Verbindung erstellt (mit der Möglichkeit die Geschwindigkeit sowie Übertragungsformat einzustellen), ist /proj/i4bs/tools/serial.

Beispielaufruf für eine Verbindung mit dem Rechner StuBS4 bei 19200 Baud mit 7 Datenbits, geradem Paritätsbit und 2 Stoppbits:

/proj/i4bs/tools/serial 4 19200 7e2

Durch Escape-Codes kann die Darstellung (u.a. Farbe und Position) beeinflusst werden.

Dokumentation der Aufzählungstypen

◆ attrib

Attribtue.

Mittels Attribute kann die Darstellung der Ausgabe beeinflusst werden.

◆ color

Farbcodes.

Für Vorder- und Hintergrund sind acht Farbattribute vorhanden. Die tatsächliche Farbe wird von den anderen Attributen beeinflusst und kann je nach Terminalemulator deutlich unterschiedlich aussehen.

Beschreibung der Konstruktoren und Destruktoren

◆ Console()

Console::Console ( Serial::comPort  port = COM1,
Serial::baudRate  baudrate = BAUD_115200,
Serial::dataBits  databits = DATA_8BIT,
Serial::stopBits  stopbits = STOP_1BIT,
Serial::parity  parity = PARITY_NONE 
)

Konstruktor für die VT100 kompatible Konsole.

beinhaltet die serielle Verbindung

Dokumentation der Elementfunktionen

◆ epilogue()

void Console::epilogue ( )
virtual

Verarbeitung des empfangenen Zeichens.

In dieser Methode soll das ein Empfangenes Zeichen einem eventuell wartenden Thread signalisiert werden. Dazu wird ein Semaphor verwendet, dessen Zähler angibt, wieviele Zeichen im Empfangspuffer zur Abholung bereitstehen. Wenn ein Zeichen nicht in den Puffer geschrieben werden konnte (da der Puffer voll ist) darf der Semaphor also auch nicht hochgezählt werden.

Optional:
Methode anpassen

Erneute Implementation von Gate.

◆ flush()

void Console::flush ( )
virtual

Methode zur Ausgabe des Pufferinhalts der Basisklasse Stringbuffer.

Die Methode wird implizit aufgerufen, sobald der Puffer voll ist, kann aber auch explizit verwendet werden, um eine Ausgabe zu erzwingen.

Implementiert O_Stream.

◆ getchar()

char Console::getchar ( )

Schnittstelle für Anwendungen, um Daten von der seriellen Schnittstelle zu empfangen.

Diese Methode gibt das zuletzt empfangene Byte zurück. Wenn noch kein unabgerufenes Byte empfangen wurde, wird der aufrufende Anwendungsthread solange blockiert. Dies wird durch die Verwendung eines Semaphors erreicht.

Optional:
Methode implementieren
Rückgabe
empfangenes Zeichen

◆ getpos()

bool Console::getpos ( int &  x,
int &  y 
)

Abfragen der Cursorposition.

Es ist möglich die aktuelle Cursorposition über einen speziellen Escape- code zu empfangen. Allerdings kann es abhängig von der Implementierung sein, dass aufgrund eines nicht angeschlossenen Terminals oder Datenübertragungsfehlers endlos gewartet wird.

Parameter
xSpalte
yZeile
Rückgabe
true , falls die Position erfolgreich empfangen wurde

◆ listen()

void Console::listen ( )

Initialisiere unterbrechungsgesteuerte serielle Verbindung.

Wir beschränken uns nur auf Interrupts beim Empfang, allerdings könnte auf die gleiche Art und Weise auch das Senden umgesetzt werden (Unterbrechung sobald Leitung frei ist).

◆ print()

void Console::print ( char *  string,
int  length 
)

Anzeige mehrerer Zeichen ab der aktuellen Cursorposition.

Mit dieser Methode kann eine Zeichenkette string ausgegeben werden, wobei an der aktuellen Position des Cursors begonnen wird. Da die Zeichenkette anders als sonst bei C üblich keine Nullterminierung zu enthalten braucht, wird der Parameter length benötigt, der angeben muss, aus wievielen Zeichen string besteht.

Parameter
stringAuszugebende Zeichenkette
lengthLänge der Zeichenkette

◆ prologue()

bool Console::prologue ( )
virtual

Enthält den Prolog der Unterbrechungsbehandlung.

Das empfangene Zeichen wird in einen lokalen Puffer (z.B. BBuffer ) gelegt und (bei Erfolg) ein Epilog angefordert.

Rückgabe
Gibt true zurück, falls ein Epilog notwendig ist, ansonsten false.

Implementiert Gate.

◆ reset()

void Console::reset ( )

Terminal zurücksetzen.

Bildschirm löschen, Cursor auf den Anfang setzen und Farben sowie Attribute auf den Standardwert zurücksetzen

◆ setAttribute()

void Console::setAttribute ( Console::attrib  a)

Ausgabeformatierung (für alle nachfolgenden Ausgaben) ändern.

Parameter
aAusgabettribut

◆ setBackground()

void Console::setBackground ( Console::color  c)

Hintergrundfarbe (für alle nachfolgenden Ausgaben) ändern.

Parameter
cFarbe

◆ setForeground()

void Console::setForeground ( Console::color  c)

Vordergrundfarbe (für alle nachfolgenden Ausgaben) ändern.

Parameter
cFarbe

◆ setpos()

void Console::setpos ( int  x,
int  y 
)

Setzen des Cursors in Spalte x und Zeile y.

Parameter
xSpalte
yZeile

Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Dateien: