ハイパー・マイコン mbedでインターネット 電子工作 3章 リスト3-1 TCPMessageBoardのプログラム  

Dependencies:   EthernetInterface TextLCD mbed-rtos mbed

Committer:
sunifu
Date:
Wed Jul 09 14:02:53 2014 +0000
Revision:
0:2809bb7303a8
Ver1.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sunifu 0:2809bb7303a8 1 #include "mbed.h"
sunifu 0:2809bb7303a8 2 #include "EthernetInterface.h"
sunifu 0:2809bb7303a8 3 #include "TextLCD.h"
sunifu 0:2809bb7303a8 4
sunifu 0:2809bb7303a8 5 #define MESSAGEBOARD_SERVER_PORT 55555
sunifu 0:2809bb7303a8 6
sunifu 0:2809bb7303a8 7 TextLCD lcd(p24, p26, p27, p28, p29, p30);
sunifu 0:2809bb7303a8 8
sunifu 0:2809bb7303a8 9 int main() {
sunifu 0:2809bb7303a8 10 int stat;
sunifu 0:2809bb7303a8 11 EthernetInterface eth;
sunifu 0:2809bb7303a8 12
sunifu 0:2809bb7303a8 13 lcd.cls();
sunifu 0:2809bb7303a8 14
sunifu 0:2809bb7303a8 15 // USE DHCP
sunifu 0:2809bb7303a8 16 eth.init();
sunifu 0:2809bb7303a8 17 // Use Static IP
sunifu 0:2809bb7303a8 18 //eth.init("192.168.0.9","255.255.255.0","192.168.0.1");
sunifu 0:2809bb7303a8 19
sunifu 0:2809bb7303a8 20 stat = eth.connect();
sunifu 0:2809bb7303a8 21
sunifu 0:2809bb7303a8 22 lcd.locate(0,1);
sunifu 0:2809bb7303a8 23 printf("\r\n");
sunifu 0:2809bb7303a8 24 if ( stat == 0 ){
sunifu 0:2809bb7303a8 25 printf("IPAddress[%s]\r\n",eth.getIPAddress());
sunifu 0:2809bb7303a8 26 lcd.printf("%s",eth.getIPAddress());
sunifu 0:2809bb7303a8 27 }else{
sunifu 0:2809bb7303a8 28 printf("DHCP Error...\r\n");
sunifu 0:2809bb7303a8 29 lcd.printf("DHCP Error!");
sunifu 0:2809bb7303a8 30 exit(-1);
sunifu 0:2809bb7303a8 31 }
sunifu 0:2809bb7303a8 32
sunifu 0:2809bb7303a8 33 TCPSocketServer server;
sunifu 0:2809bb7303a8 34 server.bind(MESSAGEBOARD_SERVER_PORT);
sunifu 0:2809bb7303a8 35 server.listen();
sunifu 0:2809bb7303a8 36
sunifu 0:2809bb7303a8 37 while (true) {
sunifu 0:2809bb7303a8 38
sunifu 0:2809bb7303a8 39 printf("Wait for new connection...\r\n");
sunifu 0:2809bb7303a8 40 TCPSocketConnection client;
sunifu 0:2809bb7303a8 41 server.accept(client);
sunifu 0:2809bb7303a8 42
sunifu 0:2809bb7303a8 43 printf("Connection from: %s\r\n", client.get_address());
sunifu 0:2809bb7303a8 44 char buffer[17];
sunifu 0:2809bb7303a8 45 while (true) {
sunifu 0:2809bb7303a8 46 int n = client.receive(buffer, sizeof(buffer));
sunifu 0:2809bb7303a8 47
sunifu 0:2809bb7303a8 48 buffer[n]='\0';
sunifu 0:2809bb7303a8 49 if ( !client.is_connected() ){
sunifu 0:2809bb7303a8 50 printf("Disconnection...\r\n");
sunifu 0:2809bb7303a8 51 break;
sunifu 0:2809bb7303a8 52 }
sunifu 0:2809bb7303a8 53 lcd.locate(0,0);
sunifu 0:2809bb7303a8 54 lcd.printf(" ");
sunifu 0:2809bb7303a8 55 if ( n > 0 ){
sunifu 0:2809bb7303a8 56 lcd.locate(0,0);
sunifu 0:2809bb7303a8 57 lcd.printf("%s",buffer);
sunifu 0:2809bb7303a8 58 printf("Send Character[%d:%s]\r\n",n,buffer);
sunifu 0:2809bb7303a8 59 }
sunifu 0:2809bb7303a8 60 else{
sunifu 0:2809bb7303a8 61 printf("[0]-\r\n");
sunifu 0:2809bb7303a8 62 }
sunifu 0:2809bb7303a8 63 }
sunifu 0:2809bb7303a8 64 client.close();
sunifu 0:2809bb7303a8 65 }
sunifu 0:2809bb7303a8 66 }