+ refactor old sketch to lib

This commit is contained in:
Rob Tillaart 2013-09-30 20:14:38 +02:00
parent b812c2ca38
commit df54800ca6
2 changed files with 303 additions and 0 deletions

230
libraries/VT100/VT100.h Normal file
View File

@ -0,0 +1,230 @@
#ifndef VT100_h
#define VT100_h
//
// FILE: VT100.h
// AUTHOR: Rob Tillaart
// VERSION: 0.1.00
// PURPOSE: VT100 codes, to be sent by serial.print() et al.
// DATE: 2013-09-30
// URL:
//
// Released to the public domain
//
// a sourcec of VT100 codes
// http://ascii-table.com/ansi-escape-sequences-vt-100.php
// CHAR MODES
#define OFF "\033[0m"
#define BOLD "\033[1m"
#define LOWINTENS "\033[2m"
#define UNDERLINE "\033[4m"
#define BLINK "\033[5m"
#define REVERSE "\033[7m"
// POSITIONING
#define CLS "\033[2J" // Esc[2J Clear entire screen
#define GOTOXY(x,y) "\033[x;yH" // Esc[Line;ColumnH
#define HOME "\033[H"
#define CUD(x) "\033[xB" // Move cursor up n lines
// Esc[ValueA Move cursor up n lines CUU
// Esc[ValueB Move cursor down n lines CUD
// Esc[ValueC Move cursor right n lines CUF
// Esc[ValueD Move cursor left n lines CUB
// ADDITIONAL CODES depend on terminal if supported.
/*
Esc[20h Set new line mode LMN
Esc[?1h Set cursor key to application DECCKM
none Set ANSI (versus VT52) DECANM
Esc[?3h Set number of columns to 132 DECCOLM
Esc[?4h Set smooth scrolling DECSCLM
Esc[?5h Set reverse video on screen DECSCNM
Esc[?6h Set origin to relative DECOM
Esc[?7h Set auto-wrap mode DECAWM
Esc[?8h Set auto-repeat mode DECARM
Esc[?9h Set interlacing mode DECINLM
Esc[20l Set line feed mode LMN
Esc[?1l Set cursor key to cursor DECCKM
Esc[?2l Set VT52 (versus ANSI) DECANM
Esc[?3l Set number of columns to 80 DECCOLM
Esc[?4l Set jump scrolling DECSCLM
Esc[?5l Set normal video on screen DECSCNM
Esc[?6l Set origin to absolute DECOM
Esc[?7l Reset auto-wrap mode DECAWM
Esc[?8l Reset auto-repeat mode DECARM
Esc[?9l Reset interlacing mode DECINLM
Esc= Set alternate keypad mode DECKPAM
Esc> Set numeric keypad mode DECKPNM
Esc(A Set United Kingdom G0 character set setukg0
Esc)A Set United Kingdom G1 character set setukg1
Esc(B Set United States G0 character set setusg0
Esc)B Set United States G1 character set setusg1
Esc(0 Set G0 special chars. & line set setspecg0
Esc)0 Set G1 special chars. & line set setspecg1
Esc(1 Set G0 alternate character ROM setaltg0
Esc)1 Set G1 alternate character ROM setaltg1
Esc(2 Set G0 alt char ROM and spec. graphics setaltspecg0
Esc)2 Set G1 alt char ROM and spec. graphics setaltspecg1
EscN Set single shift 2 SS2
EscO Set single shift 3 SS3
Esc[m Turn off character attributes SGR0
Esc[0m Turn off character attributes SGR0
Esc[1m Turn bold mode on SGR1
Esc[2m Turn low intensity mode on SGR2
Esc[4m Turn underline mode on SGR4
Esc[5m Turn blinking mode on SGR5
Esc[7m Turn reverse video on SGR7
Esc[8m Turn invisible text mode on SGR8
Esc[Line;Liner Set top and bottom lines of a window DECSTBM
Esc[ValueA Move cursor up n lines CUU
Esc[ValueB Move cursor down n lines CUD
Esc[ValueC Move cursor right n lines CUF
Esc[ValueD Move cursor left n lines CUB
Esc[H Move cursor to upper left corner cursorhome
Esc[;H Move cursor to upper left corner cursorhome
Esc[Line;ColumnH Move cursor to screen location v,h CUP
Esc[f Move cursor to upper left corner hvhome
Esc[;f Move cursor to upper left corner hvhome
Esc[Line;Columnf Move cursor to screen location v,h CUP
EscD Move/scroll window up one line IND
EscM Move/scroll window down one line RI
EscE Move to next line NEL
Esc7 Save cursor position and attributes DECSC
Esc8 Restore cursor position and attributes DECSC
EscH Set a tab at the current column HTS
Esc[g Clear a tab at the current column TBC
Esc[0g Clear a tab at the current column TBC
Esc[3g Clear all tabs TBC
Esc#3 Double-height letters, top half DECDHL
Esc#4 Double-height letters, bottom half DECDHL
Esc#5 Single width, single height letters DECSWL
Esc#6 Double width, single height letters DECDWL
Esc[K Clear line from cursor right EL0
Esc[0K Clear line from cursor right EL0
Esc[1K Clear line from cursor left EL1
Esc[2K Clear entire line EL2
Esc[J Clear screen from cursor down ED0
Esc[0J Clear screen from cursor down ED0
Esc[1J Clear screen from cursor up ED1
Esc[2J Clear entire screen ED2
Esc5n Device status report DSR
Esc0n Response: terminal is OK DSR
Esc3n Response: terminal is not OK DSR
Esc6n Get cursor position DSR
EscLine;ColumnR Response: cursor is at v,h CPR
Esc[c Identify what terminal type DA
Esc[0c Identify what terminal type (another) DA
Esc[?1;Value0c Response: terminal type code n DA
Escc Reset terminal to initial state RIS
Esc#8 Screen alignment display DECALN
Esc[2;1y Confidence power up test DECTST
Esc[2;2y Confidence loopback test DECTST
Esc[2;9y Repeat power up test DECTST
Esc[2;10y Repeat loopback test DECTST
Esc[0q Turn off all four leds DECLL0
Esc[1q Turn on LED #1 DECLL1
Esc[2q Turn on LED #2 DECLL2
Esc[3q Turn on LED #3 DECLL3
Esc[4q Turn on LED #4 DECLL4
Codes for use in VT52 compatibility mode
Esc< Enter/exit ANSI mode (VT52) setansi
Esc= Enter alternate keypad mode altkeypad
Esc> Exit alternate keypad mode numkeypad
EscF Use special graphics character set setgr
EscG Use normal US/UK character set resetgr
EscA Move cursor up one line cursorup
EscB Move cursor down one line cursordn
EscC Move cursor right one char cursorrt
EscD Move cursor left one char cursorlf
EscH Move cursor to upper left corner cursorhome
EscLineColumn Move cursor to v,h location cursorpos(v,h)
EscI Generate a reverse line-feed revindex
EscK Erase to end of current line cleareol
EscJ Erase to end of screen cleareos
EscZ Identify what the terminal is ident
Esc/Z Correct response to ident identresp
VT100 Special Key Codes
These are sent from the terminal back to the computer when the particular key is pressed.
Note that the numeric keypad keys send different codes in numeric mode than in alternate mode.
See escape codes above to change keypad mode.
Function Keys:
EscOP PF1
EscOQ PF2
EscOR PF3
EscOS PF4
Arrow Keys:
Reset Set
up EscA EscOA
down EscB EscOB
right EscC EscOC
left EscD EscOD
Numeric Keypad Keys:
EscOp 0
EscOq 1
EscOr 2
EscOs 3
EscOt 4
EscOu 5
EscOv 6
EscOw 7
EscOx 8
EscOy 9
EscOm -(minus)
EscOl ,(comma)
EscOn .(period)
EscOM ^M
Printing:
Esc[i Print Screen Print the current screen
Esc[1i Print Line Print the current line
Esc[4i Stop Print Log Disable log
Esc[5i Start Print Log Start log; all received text is echoed to a printer
*/
#endif

View File

@ -0,0 +1,73 @@
//
// FILE: VT100.ino
// AUTHOR: Rob Tillaart
// VERSION: 0.1.00
// PURPOSE: demo vt100 codes
// DATE: 2013-09-30
// URL:
//
// Released to the public domain
//
#include "VT100.h"
void setup()
{
Serial.begin(115200);
Serial.println("VT100 demo sketch");
delay(1000);
Serial.print(CLS);
Serial.println("Hello World");
Serial.print(OFF);
Serial.println("Goodbye");
delay(100);
Serial.print(BOLD);
Serial.println("bold - Hello World");
Serial.print(OFF);
Serial.println("Goodbye");
delay(100);
Serial.print(LOWINTENS);
Serial.println("lowintense - Hello World");
Serial.print(OFF);
Serial.println("Goodbye");
delay(100);
Serial.print(UNDERLINE);
Serial.println("underline - Hello World");
Serial.print(OFF);
Serial.println("Goodbye");
delay(100);
Serial.print(BLINK);
Serial.println("blink - Hello World");
Serial.print(OFF);
Serial.println("Goodbye");
delay(100);
Serial.print(REVERSE);
Serial.println("reverse - Hello World");
Serial.print(OFF);
Serial.println("Goodbye");
delay(100);
// experimental section (does not work yet)
Serial.print(CUD(3));
Serial.println("Cursor Down 3 - Hello World");
Serial.print(OFF);
Serial.println("Goodbye");
delay(100);
Serial.print(GOTOXY(3,3));
Serial.println("gotoxy 3,3 - Hello World");
Serial.print(OFF);
Serial.println("Goodbye");
delay(100);
}
void loop()
{
}
// END OF FILE