App:Library:FabGL:Class:Terminal
class Terminal
ANSI-VT100互換のディスプレイ端末。
#include <terminal.h> |
ストリームを継承します。
Public Member Functions
void activate (TerminalTransition transition=TerminalTransition::None)
|
int available ()
|
int availableForWrite ()
|
bool begin (BaseDisplayController *displayController, int maxColumns=-1, int maxRows=-1, Keyboard *keyboard=nullptr)
|
Canvas * canvas ()
|
void clear (bool moveCursor=true)
|
void connectLocally ()
|
void connectSerialPort (HardwareSerial &serialPort, bool autoXONXOFF=true)
|
void connectSerialPort (uint32_t baud, uint32_t config, int rxPin, int txPin, FlowControl flowControl, bool inverted=false, int rtsPin=-1, int ctsPin=-1)
|
bool CTSStatus ()
|
void deactivate ()
|
void disableSerialPortRX (bool value)
|
void disconnectLocally ()
|
void enableCursor (bool value)
|
void end ()
|
void flowControl (bool enableRX)
|
bool flowControl ()
|
void flush (bool waitVSync)
|
void flush ()
|
int getColumns ()
|
int getRows ()
|
bool isActive ()
|
Keyboard * keyboard ()
|
void loadFont (FontInfo const *font)
|
void localInsert (uint8_t c)
|
void localWrite (uint8_t c)
|
void localWrite (char const *str)
|
int peek ()
|
void pollSerialPort ()
|
int read ()
|
int read (int timeOutMS)
|
bool RTSStatus ()
|
void send (uint8_t c)
|
void send (char const *str)
|
void setBackgroundColor (Color color, bool setAsDefault=true)
|
void setColorForAttribute (CharStyle attribute, Color color, bool maintainStyle)
|
void setColorForAttribute (CharStyle attribute)
|
void setForegroundColor (Color color, bool setAsDefault=true)
|
void setLogStream (Stream &stream)
|
void setRTSStatus (bool value)
|
void setTerminalType (TermType value)
|
SoundGenerator * soundGenerator ()
|
TermInfo const & terminalType ()
|
void unRead (uint8_t c)
|
bool waitFor (int value, int timeOutMS=-1)
|
size_t write (const uint8_t *buffer, size_t size)
|
size_t write (uint8_t c)
|
bool XOFFStatus ()
|
Public Attributes
Delegate< char const * > onUserSequence
|
Delegate< VirtualKey *, bool > onVirtualKey
|
Delegate< VirtualKeyItem * > onVirtualKeyItem
|
Static Public Attributes
static int inputConsumerTaskStackSize = 2048
|
static int inputQueueSize = 1024
|
static int keyboardReaderTaskStackSize = 2048
|
Detailed Description
An ANSI-VT100 compatible display terminal.
Implements most of common ANSI, VT52, VT100, VT200, VT300, VT420 and VT500 escape codes, like non-CSI codes (RIS, IND, DECID, DECDHL, etc..),
like CSI codes (private modes, CUP, TBC, etc..), like CSI-SGR codes (bold, italic, blinking, etc...) and like DCS codes (DECRQSS, etc..).
Supports conversion from PS/2 keyboard virtual keys to ANSI or VT codes (keypad, cursor keys, function keys, etc..).
Terminal can receive codes to display from Serial Port or it can be controlled directly from the application. In the same way Terminal can send keyboard codes to a Serial Port or directly to the application.
For default it supports 80x25 or 132x25 characters at 640x350. However any custom resolution and text buffer size is supported specifying a custom font.
There are three cursors styles (block, underlined and bar), blinking or not blinking.
Terminal inherits from Stream so applications can use all Stream and Print input and output methods.
Terminal passes 95/110 of VTTEST VT100/VT102 Compatibility Test Score Sheet.
Example1:
fabgl::VGAController VGAController; fabgl::PS2Controller PS2Controller; fabgl::Terminal Terminal; // Setup 80x25 columns loop-back terminal (send what you type on keyboard to the display) void setup() { PS2Controller.begin(PS2Preset::KeyboardPort0); VGAController.begin(); VGAController.setResolution(VGA_640x350_70HzAlt1); Terminal.begin(&VGAController); Terminal.connectLocally(); // to use Terminal.read(), available(), etc.. Terminal.enableCursor(true); } void loop() { if (Terminal.available()) { char c = Terminal.read(); switch (c) { case 0x7F: // DEL -> backspace + ESC[K Terminal.write("\b\e[K"); break; case 0x0D: // CR -> CR + LF Terminal.write("\r\n"); break; case 32 ... 126: // printable chars Terminal.write(c); break; } } } |
Example2:
fabgl::VGAController VGAController;
fabgl::PS2Controller PS2Controller; fabgl::Terminal Terminal; // Setup 80x25 columns terminal using UART2 to communicate with the server, // VGA to display output and PS2 device as keyboard input void setup() { Serial2.begin(115200); PS2Controller.begin(PS2Preset::KeyboardPort0); VGAController.begin(); VGAController.setResolution(VGA_640x350_70HzAlt1); Terminal.begin(&VGAController); Terminal.connectSerialPort(Serial2); Terminal.enableCursor(true); } void loop() { Terminal.pollSerialPort(); } |
Examples:
- Others/KeyboardScanCodes/KeyboardScanCodes.ino, Others/KeyboardVirtualKeys/KeyboardVirtualKeys.ino, SSD1306_OLED/128x32/SimpleTerminalOut/SimpleTerminalOut.ino, SSD1306_OLED/128x64/NetworkTerminal/NetworkTerminal.ino, SSD1306_OLED/128x64/RTClock/RTClock.ino, SSD1306_OLED/128x64/SimpleTerminalOut/SimpleTerminalOut.ino, ST7789_TFT/240x240/SimpleTerminalOut/SimpleTerminalOut.ino, VGA/Altair8800/Altair8800.ino, VGA/AnsiTerminal/AnsiTerminal.ino, VGA/LoopbackTerminal/LoopbackTerminal.ino, VGA/MultitaskingCPM/MultitaskingCPM.ino, VGA/NetworkTerminal/NetworkTerminal.ino, VGA/SimpleTerminalOut/SimpleTerminalOut.ino, VGA/SimpleTextTerminalOut/SimpleTextTerminalOut.ino, and VGA/Songs/Songs.ino.
Definition at line 953 of file terminal.h.
The documentation for this struct was generated from the following file:
- terminal.h
- terminal.cpp