OOStuBS/MPStuBS
|
Konsole (VT100) über serielle Schnittstelle. Mehr ...
#include <console.h>
Öffentliche Typen | |
enum | attrib |
Attribtue. Mehr ... | |
enum | color |
Farbcodes. Mehr ... | |
Öffentliche Typen geerbt von Serial | |
enum | comPort |
COM-Port. Mehr ... | |
enum | baudRate |
Übertragungsgeschwindigkeit. Mehr ... | |
enum | dataBits |
Anzahl der Datenbits pro Zeichen. | |
enum | stopBits |
Anzahl der Stopbits pro Zeichen. | |
enum | parity |
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_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<< (const void *ptr) |
Darstellung eines Zeigers als hexadezimale ganze Zahl. Mehr ... | |
O_Stream & | operator<< (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. | |
Private Methoden | |
void | write_number (int x) |
Mehrstellige Zahl als ASCII schreiben. | |
Private Attribute | |
BBuffer< char, 16 > | buffer_epilogue |
Puffer für Zeichen abholbereite Zeichen. | |
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< Gate > | queue_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 ... | |
Konsole (VT100) über serielle Schnittstelle.
Mit Hilfe dieser Klasse kann ein VT100-kompatibles Anzeigeterminal über die serielle Schnittstelle verbunden werden.
Mit dem Programm screen
kann ein Terminal unter Angabe der Schnittstelle sowie Verbindungsgeschwindigkeit geöffnet werden, z.B. mit screen /dev/ttyS0 115200
Durch Escape-Codes kann die Darstellung (u.a. Farbe und Position) beeinflusst werden.
enum Console::attrib |
Attribtue.
Mittels Attribute kann die Darstellung der Ausgabe beeinflusst werden.
enum Console::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.
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
|
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.
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.
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.
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.
x | Spalte |
y | Zeile |
true
, falls die Position erfolgreich empfangen wurde 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).
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.
string | Auszugebende Zeichenkette |
length | Länge der Zeichenkette |
|
virtual |
void Console::reset | ( | ) |
Terminal zurücksetzen.
Bildschirm löschen, Cursor auf den Anfang setzen und Farben sowie Attribute auf den Standardwert zurücksetzen
void Console::setAttribute | ( | Console::attrib | a | ) |
Ausgabeformatierung (für alle nachfolgenden Ausgaben) ändern.
a | Ausgabettribut |
void Console::setBackground | ( | Console::color | c | ) |
Hintergrundfarbe (für alle nachfolgenden Ausgaben) ändern.
c | Farbe |
void Console::setForeground | ( | Console::color | c | ) |
Vordergrundfarbe (für alle nachfolgenden Ausgaben) ändern.
c | Farbe |
void Console::setpos | ( | int | x, |
int | y | ||
) |
Setzen des Cursors in Spalte x
und Zeile y
.
x | Spalte |
y | Zeile |