
Konsole (VT100) über serielle Schnittstelle.Mit Hilfe dieser Klasse kann ein VT100-kompatibles Anzeigeterminal über die serielle Schnittstelle verbunden werden. Mehr ...
#include <device/serial_stream.h>
Ö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 ... | |
![]() | |
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 | |
Serial_Stream (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 ... | |
~Serial_Stream () | |
Destruktor. | |
void | flush () |
Methode zur Ausgabe des Pufferinhalts der Basisklasse Stringbuffer. Mehr ... | |
void | setForeground (Serial_Stream::Color c) |
Vordergrundfarbe (für alle nachfolgenden Ausgaben) ändern. Mehr ... | |
void | setBackground (Serial_Stream::Color c) |
Hintergrundfarbe (für alle nachfolgenden Ausgaben) ändern. Mehr ... | |
void | setAttribute (Serial_Stream::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 ... | |
![]() | |
O_Stream () | |
Konstruktor; Initiale Zahlenbasis ist das Dezimalsystem. Mehr ... | |
virtual | ~O_Stream () |
Destruktor. | |
O_Stream & | operator<< (char c) |
Stellt ein einzelnes Zeichen dar. Mehr ... | |
O_Stream & | operator<< (unsigned char c) |
Stellt ein einzelnes Zeichen dar. Mehr ... | |
O_Stream & | operator<< (const char *string) |
Darstellung einer nullterminierten Zeichenkette. Mehr ... | |
O_Stream & | operator<< (bool b) |
Stellt ein Boolean dar. Mehr ... | |
O_Stream & | operator<< (short ival) |
Darstellung ganzer Zahlen im Zahlensystem zur Basis base. Mehr ... | |
O_Stream & | operator<< (unsigned short ival) |
Darstellung ganzer Zahlen im Zahlensystem zur Basis base. Mehr ... | |
O_Stream & | operator<< (int ival) |
Darstellung ganzer Zahlen im Zahlensystem zur Basis base. Mehr ... | |
O_Stream & | operator<< (unsigned int ival) |
Darstellung ganzer Zahlen im Zahlensystem zur Basis base. Mehr ... | |
O_Stream & | operator<< (long ival) |
Darstellung ganzer Zahlen im Zahlensystem zur Basis base. Mehr ... | |
O_Stream & | operator<< (unsigned long ival) |
Darstellung ganzer Zahlen im Zahlensystem zur Basis base. Mehr ... | |
O_Stream & | operator<< (long long ival) |
Darstellung ganzer Zahlen im Zahlensystem zur Basis base. Mehr ... | |
O_Stream & | operator<< (unsigned long long ival) |
Darstellung ganzer Zahlen im Zahlensystem zur Basis base. Mehr ... | |
O_Stream & | operator<< (const void *ptr) |
Darstellung eines Zeigers als hexadezimale ganze Zahl. Mehr ... | |
O_Stream & | operator<< (O_Stream &(*f)(O_Stream &)) |
Aufruf einer Manipulatorfunktion. Mehr ... | |
![]() | |
virtual | ~Stringbuffer () |
Destruktor (hier nichts zu tun) | |
![]() | |
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 ... | |
![]() | |
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. | |
![]() | |
char | buffer [80] |
Zeichenpuffer. | |
int | pos |
Aktuelle Position im Puffer. | |
Weitere Geerbte Elemente | |
![]() | |
int | base |
Basis des zur Anzeige verwendeten Zahlensystems (z.B. 2, 8, 10 oder 16) Mehr ... | |
![]() | |
QueueLink< Gate > | queue_link |
Verkettungszeiger für Epilog Queue. | |
![]() | |
Stringbuffer () | |
Konstruktor; Markiert Puffer als leer. | |
void | put (char c) |
Fügt das Zeichen c in den Puffer ein. Mehr ... | |
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.
Attribtue.
Mittels Attribute kann die Darstellung der Ausgabe beeinflusst werden.
enum Serial_Stream::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.
Serial_Stream::Serial_Stream | ( | 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
|
virtual |
Verarbeitung des empfangenen Zeichens.
Hier wird das im Rahmen der Prolog-Behandlung empfangene Zeichen auf dem Bildschirm mit Hilfe des globalen CGA_Stream Objekts kout
ausgegeben.
Erneute Implementation von Gate.
|
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.
bool Serial_Stream::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.
x | Spalte |
y | Zeile |
true
, falls die Position erfolgreich empfangen wurde void Serial_Stream::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).
void Serial_Stream::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.
string | Auszugebende Zeichenkette |
length | Länge der Zeichenkette |
|
virtual |
void Serial_Stream::reset | ( | ) |
Terminal zurücksetzen.
Bildschirm löschen, Cursor auf den Anfang setzen und Farben sowie Attribute auf den Standardwert zurücksetzen
void Serial_Stream::setAttribute | ( | Serial_Stream::Attrib | a | ) |
Ausgabeformatierung (für alle nachfolgenden Ausgaben) ändern.
a | Ausgabettribut |
void Serial_Stream::setBackground | ( | Serial_Stream::Color | c | ) |
Hintergrundfarbe (für alle nachfolgenden Ausgaben) ändern.
c | Farbe |
void Serial_Stream::setForeground | ( | Serial_Stream::Color | c | ) |
Vordergrundfarbe (für alle nachfolgenden Ausgaben) ändern.
c | Farbe |
void Serial_Stream::setpos | ( | int | x, |
int | y | ||
) |
Setzen des Cursors in Spalte x
und Zeile y
.
x | Spalte |
y | Zeile |