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.
Dependencies: EthernetNetIf TextLCD mbed
main.cpp
00001 #include "mbed.h" 00002 #include "EthernetNetIf.h" 00003 #include "TCPSocket.h" 00004 #include "TextLCD.h" 00005 00006 #define TCP_LISTENING_PORT 50505 00007 00008 BusOut myleds(LED1, LED2, LED3, LED4); 00009 TextLCD lcd(p24, p26, p27, p28, p29, p30); 00010 00011 void onTCPSocketEvent(TCPSocketEvent e) ; 00012 void onConnectedTCPSocketEvent(TCPSocketEvent e) ; 00013 00014 EthernetNetIf eth ; 00015 TCPSocketErr tcpErr ; 00016 TCPSocket tcpSock ; 00017 TCPSocket* pConnectedSock ; 00018 Host client ; 00019 00020 int main() { 00021 lcd.locate(0,0); 00022 lcd.printf("Setting up..."); 00023 EthernetNetIf eth; //(1) 00024 //EthernetNetIf eth( // (2) -- static IP address 00025 // IpAddr(192,168,0,6), // IP Address 00026 // IpAddr(255,255,255,0), // Subnet Mask 00027 // IpAddr(192,168,0,1), // Default Gateway 00028 // IpAddr(192,168,0,1) // DNS Server 00029 //) ; 00030 00031 EthernetErr ethErr = eth.setup(); 00032 if( ethErr != ETH_OK ) 00033 { 00034 lcd.locate(0,0); 00035 printf("Error %d in setup.\r\n", ethErr); 00036 lcd.printf("NW Setup Error!", ethErr); 00037 return -1; 00038 } 00039 lcd.locate(0,0); 00040 lcd.printf("Setup OK "); 00041 printf("Setup OK\r\n"); 00042 00043 IpAddr ip = eth.getIp() ; 00044 00045 lcd.locate(0,1); 00046 lcd.printf("%d.%d.%d.%d",ip[0],ip[1],ip[2],ip[3]); 00047 00048 printf("mbed IP Address is [%d.%d.%d.%d]\r\n", ip[0], ip[1], ip[2], ip[3]) ; 00049 00050 tcpSock.setOnEvent(&onTCPSocketEvent) ; 00051 00052 printf("Bindding...\r\n") ; 00053 tcpErr = tcpSock.bind(Host(IpAddr(), TCP_LISTENING_PORT)); 00054 if ( tcpErr != ETH_OK ){ 00055 printf("Bindding Error.\r\n") ; 00056 return -1 ; 00057 } 00058 00059 printf("Listen...\r\n"); 00060 tcpErr = tcpSock.listen() ; 00061 if ( tcpErr != ETH_OK ){ 00062 printf("Listen Error.\r\n") ; 00063 return -1 ; 00064 } 00065 00066 while(1) { 00067 Net::poll(); 00068 } 00069 } 00070 00071 void onTCPSocketEvent(TCPSocketEvent e) 00072 { 00073 printf("---IN TCPSocketEvent ---\r\n"); 00074 00075 if ( e == TCPSOCKET_ACCEPT ){ 00076 printf("Listening: TCP Socket Accepted\r\n"); 00077 tcpErr=tcpSock.accept(&client, &pConnectedSock); 00078 00079 if ( tcpErr != TCPSOCKET_OK ) { 00080 printf("onTcpSocketEvent Error \r\n"); 00081 return; 00082 } 00083 pConnectedSock->setOnEvent(&onConnectedTCPSocketEvent); 00084 IpAddr clientIp = client.getIp(); 00085 printf("Controler IP Address is [%d.%d.%d.%d].\r\n", 00086 clientIp[0], clientIp[1], clientIp[2], clientIp[3]); 00087 } 00088 printf("--- OUT TCPSocketEvent ---\r\n\r\n") ; 00089 } 00090 00091 void onConnectedTCPSocketEvent(TCPSocketEvent e) 00092 { 00093 printf("--- IN ConnectEvent ---\r\n"); 00094 char buf[128] ; 00095 00096 switch(e) 00097 { 00098 case TCPSOCKET_CONNECTED: 00099 printf("Connected to host.\r\n") ; 00100 break; 00101 case TCPSOCKET_WRITEABLE: 00102 printf("Can write data to buf.\r\n"); 00103 break; 00104 case TCPSOCKET_READABLE: 00105 printf("Data in buf.\r\n"); 00106 pConnectedSock->recv(buf,sizeof(buf)) ; 00107 printf("n = %s\r\n",buf) ; 00108 myleds = atoi(buf) ; 00109 break; 00110 case TCPSOCKET_CONTIMEOUT: 00111 printf("Connection timed out.\r\n"); 00112 break ; 00113 case TCPSOCKET_CONRST: 00114 printf("Connection was reset by remote host.\r\n"); 00115 break ; 00116 case TCPSOCKET_CONABRT: 00117 printf("Connection was aborted.\r\n") ; 00118 break ; 00119 case TCPSOCKET_ERROR: 00120 printf("Unknown error.\r\n") ; 00121 break ; 00122 case TCPSOCKET_DISCONNECTED: 00123 printf("Tcp Socket Disconnected\r\n") ; 00124 pConnectedSock->close() ; 00125 break; 00126 } 00127 printf("--- OUT ConnectEvent ---\r\n\r\n"); 00128 }
Generated on Fri Aug 12 2022 07:16:20 by
1.7.2