Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Revision 0:bd5143ec272b, committed 2010-02-09
- Comitter:
- ms523
- Date:
- Tue Feb 09 15:05:33 2010 +0000
- Commit message:
Changed in this revision
diff -r 000000000000 -r bd5143ec272b Terminal.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Terminal.cpp Tue Feb 09 15:05:33 2010 +0000
@@ -0,0 +1,90 @@
+/* mbed ANSI/VT100 Terminal Library
+ * Copyright (c) 2007-2009 sford
+ * Released under the MIT License: http://mbed.org/license/mit
+ */
+
+#include "Terminal.h"
+#include "mbed.h"
+
+#define ASCII_BLOCK 219
+#define ASCII_BORDER_H 205
+#define ASCII_BORDER_V 186
+#define ASCII_BORDER_TL 201
+#define ASCII_BORDER_TR 187
+#define ASCII_BORDER_BL 200
+#define ASCII_BORDER_BR 188
+#define WIDTH 30
+
+Terminal::Terminal(PinName tx, PinName rx) : Serial(tx, rx) {}
+
+void Terminal::cls() {
+ this->printf("\033[2J");
+}
+
+void Terminal::locate(int column, int row) {
+ // Cursor Home <ESC>[{ROW};{COLUMN}H
+ this->printf("\033[%d;%dH", row + 1, column + 1);
+}
+
+static int rgb888tobgr111(int colour) {
+ int r = (colour >> 23) & 1;
+ int g = (colour >> 15) & 1;
+ int b = (colour >> 7) & 1;
+ return (b << 2) | (g << 1) | (r << 0);
+}
+
+void Terminal::foreground(int colour) {
+ // Set Attribute Mode <ESC>[{n}m
+ // Foreground Colours : 30 + bgr
+ int c = 30 + rgb888tobgr111(colour);
+ this->printf("\033[%dm", c);
+}
+
+void Terminal::background(int colour) {
+ // Set Attribute Mode <ESC>[{n}m
+ // Background Colours : 40 + bgr
+ int c = 40 + rgb888tobgr111(colour);
+ this->printf("\033[%dm", c);
+}
+
+void Terminal::box(int x, int y, int w, int h) {
+ // corners
+ locate(x, y);
+ putc(ASCII_BORDER_TL);
+ locate(x + w - 1, y);
+ putc(ASCII_BORDER_TR);
+ locate(x, y + h - 1);
+ putc(ASCII_BORDER_BL);
+ locate(x + w - 1, y + h - 1);
+ putc(ASCII_BORDER_BR);
+
+ // top
+ locate(x + 1, y);
+ for(int i=0; i<(w-2); i++){
+ putc(ASCII_BORDER_H);
+ }
+
+ // bottom
+ locate(x + 1, y + h - 1);
+ for(int i=0; i<(w-2); i++){
+ putc(ASCII_BORDER_H);
+ }
+
+ // left
+ locate(x, y + 1);
+ for(int i=1; i<(h-1); i++){
+ putc(ASCII_BORDER_V);
+ printf("\n");
+ putc(0x08);
+ }
+
+ // right
+ locate(x + w - 1, y + 1);
+ for(int i=1; i<(h-1); i++){
+ putc(ASCII_BORDER_V);
+ printf("\n");
+ putc(0x08);
+ }
+}
+
+
diff -r 000000000000 -r bd5143ec272b Terminal.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Terminal.h Tue Feb 09 15:05:33 2010 +0000
@@ -0,0 +1,28 @@
+/* mbed Terminal TextDisplay Library
+ * Copyright (c) 2007-2009 sford
+ * Released under the MIT License: http://mbed.org/license/mit
+ *
+ * Implementation of ANSI/VT100 Terminal escape codes
+ * for use with e.g. Teraterm, Hyperterminal
+ */
+
+#include "mbed.h"
+
+#ifndef MBED_TERMINAL_H
+#define MBED_TERMINAL_H
+
+class Terminal : public Serial {
+public:
+
+ Terminal(PinName tx, PinName rx);
+
+ // printf(), put(), baud() etc - inherited from Serial
+
+ void cls();
+ void locate(int column, int row);
+ void foreground(int colour);
+ void background(int colour);
+ void box(int x, int y, int w, int h);
+};
+
+#endif
diff -r 000000000000 -r bd5143ec272b main.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Tue Feb 09 15:05:33 2010 +0000
@@ -0,0 +1,33 @@
+#include "mbed.h"
+#include "Terminal.h"
+
+Terminal term(USBTX, USBRX); //Info transmitted to hypertermal via USB
+int Flag=0, Count=10;
+
+void Countdown(void){
+ if(Flag==1){
+ Count--;
+
+ if(Count<=0){
+ Flag=0; //Turn off MoveFlag at the end of the move.
+ }
+ term.locate(18,6);
+ term.printf("%d ",Count);
+ }
+}
+
+int main() {
+ Ticker Timer_100ms;
+ Timer_100ms.attach(&Countdown, 0.1); //Call Profile every 0.1 seconds
+
+ term.cls(); //Clear the screen (paint red)
+ term.locate(18,5);
+ term.printf("Count: %d ",Count);
+
+ while(1){
+ int Key=term.getc(); //Get the keypad pressed
+ if(Key==0x0D){ //See if it was ENTER
+ Flag=1;
+ }
+ }
+}
\ No newline at end of file
diff -r 000000000000 -r bd5143ec272b mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Tue Feb 09 15:05:33 2010 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/49a220cc26e0