ハイパー・マイコン mbedでインターネット 電子工作 3章 リスト3-1 TCPMessageBoardのプログラム
Dependencies: EthernetInterface TextLCD mbed-rtos mbed
main.cpp@0:2809bb7303a8, 2014-07-09 (annotated)
- Committer:
- sunifu
- Date:
- Wed Jul 09 14:02:53 2014 +0000
- Revision:
- 0:2809bb7303a8
Ver1.0
Who changed what in which revision?
User | Revision | Line number | New 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 | } |