This program opens a socket and wait connection through Wi-Fi. When the socket is connected, print out received characters to LCD.

Dependencies:   TextLCD mbed

Committer:
nakata
Date:
Mon Apr 23 08:56:58 2012 +0000
Revision:
0:ac3682c7c208
Child:
1:e87727c8979d
telnet works now.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nakata 0:ac3682c7c208 1 #include "TextLCD.h"
nakata 0:ac3682c7c208 2
nakata 0:ac3682c7c208 3 #define SCREEN_WIDTH 16
nakata 0:ac3682c7c208 4 #define SCREEN_HEIGHT 2
nakata 0:ac3682c7c208 5 #define CR 13
nakata 0:ac3682c7c208 6 #define LF 10
nakata 0:ac3682c7c208 7
nakata 0:ac3682c7c208 8 TextLCD lcd(p24, p26, p27, p28, p29, p30); // rs, e, d4-d7
nakata 0:ac3682c7c208 9
nakata 0:ac3682c7c208 10 class LcdScreen {
nakata 0:ac3682c7c208 11 protected:
nakata 0:ac3682c7c208 12 unsigned char cram[SCREEN_HEIGHT][SCREEN_WIDTH];
nakata 0:ac3682c7c208 13 int cursor_x;
nakata 0:ac3682c7c208 14 int cursor_y;
nakata 0:ac3682c7c208 15 public:
nakata 0:ac3682c7c208 16 LcdScreen()
nakata 0:ac3682c7c208 17 {
nakata 0:ac3682c7c208 18 cursor_x = 0;
nakata 0:ac3682c7c208 19 cursor_y = 0;
nakata 0:ac3682c7c208 20
nakata 0:ac3682c7c208 21 int x, y;
nakata 0:ac3682c7c208 22 for ( y = 0; y < SCREEN_HEIGHT; y++ ) {
nakata 0:ac3682c7c208 23 for ( x = 0; x < SCREEN_WIDTH; x++ ) {
nakata 0:ac3682c7c208 24 cram[y][x] = ' ';
nakata 0:ac3682c7c208 25 }
nakata 0:ac3682c7c208 26 }
nakata 0:ac3682c7c208 27
nakata 0:ac3682c7c208 28 syncScreen();
nakata 0:ac3682c7c208 29 }
nakata 0:ac3682c7c208 30
nakata 0:ac3682c7c208 31 void syncScreen()
nakata 0:ac3682c7c208 32 {
nakata 0:ac3682c7c208 33 int x, y;
nakata 0:ac3682c7c208 34
nakata 0:ac3682c7c208 35 for ( y = 0; y < SCREEN_HEIGHT; y++ ) {
nakata 0:ac3682c7c208 36 lcd.locate(0,y);
nakata 0:ac3682c7c208 37 for ( x = 0; x < SCREEN_WIDTH; x++ ) {
nakata 0:ac3682c7c208 38 lcd.putc(cram[y][x]);
nakata 0:ac3682c7c208 39 }
nakata 0:ac3682c7c208 40 }
nakata 0:ac3682c7c208 41 }
nakata 0:ac3682c7c208 42
nakata 0:ac3682c7c208 43 void scroll()
nakata 0:ac3682c7c208 44 {
nakata 0:ac3682c7c208 45 int x;
nakata 0:ac3682c7c208 46 for ( x = 0; x < SCREEN_WIDTH; x++ ) {
nakata 0:ac3682c7c208 47 cram[0][x] = cram[1][x];
nakata 0:ac3682c7c208 48 cram[1][x] = ' ';
nakata 0:ac3682c7c208 49 }
nakata 0:ac3682c7c208 50 }
nakata 0:ac3682c7c208 51
nakata 0:ac3682c7c208 52 void print(const unsigned char *data)
nakata 0:ac3682c7c208 53 {
nakata 0:ac3682c7c208 54 const unsigned char *p;
nakata 0:ac3682c7c208 55 for ( p = data; *p != '\0'; p++ ) {
nakata 0:ac3682c7c208 56 if ( *p == CR ) {
nakata 0:ac3682c7c208 57 cursor_x = 0;
nakata 0:ac3682c7c208 58 } else if ( *p == LF ) {
nakata 0:ac3682c7c208 59 cursor_y++;
nakata 0:ac3682c7c208 60 } else if ( 0x20 <= *p && *p <= 0x7f ) {
nakata 0:ac3682c7c208 61 if ( cursor_x >= SCREEN_WIDTH ) {
nakata 0:ac3682c7c208 62 cursor_x = 0;
nakata 0:ac3682c7c208 63 cursor_y++;
nakata 0:ac3682c7c208 64 }
nakata 0:ac3682c7c208 65 if ( cursor_y >= SCREEN_HEIGHT ) {
nakata 0:ac3682c7c208 66 scroll();
nakata 0:ac3682c7c208 67 cursor_y = SCREEN_HEIGHT - 1;
nakata 0:ac3682c7c208 68 }
nakata 0:ac3682c7c208 69 cram[cursor_y][cursor_x++] = *p;
nakata 0:ac3682c7c208 70 }
nakata 0:ac3682c7c208 71 }
nakata 0:ac3682c7c208 72 if ( cursor_x >= SCREEN_WIDTH ) {
nakata 0:ac3682c7c208 73 cursor_x = 0;
nakata 0:ac3682c7c208 74 ++cursor_y;
nakata 0:ac3682c7c208 75 }
nakata 0:ac3682c7c208 76 syncScreen();
nakata 0:ac3682c7c208 77 }
nakata 0:ac3682c7c208 78 };