Eric-Ethernet-2019
Dependencies: mbed mbed-rtos C12832_lcd NTPClient EthernetInterface
Diff: main.cpp
- Revision:
- 2:f3b7851c0245
- Parent:
- 1:9095ffb76813
--- a/main.cpp Tue Oct 01 19:53:45 2013 +0000 +++ b/main.cpp Thu Feb 07 10:31:34 2019 +0000 @@ -6,39 +6,175 @@ C12832_LCD lcd; //Graphics LCD EthernetInterface eth; NTPClient ntp; +Serial pc(USBTX,USBRX); + +TCPSocketServer server; +TCPSocketConnection client; +int serveur_port =2000; +DigitalOut myled(LED1); + +char ip[]="192.168.1.10"; +char masque[]="255.255.255.0"; +char passerelle[]="192.168.1.254"; int main() -{ - eth.init(); //Use DHCP - wait(2); - lcd.cls(); - lcd.printf("Getting IP Address\r\n"); - if(eth.connect(60000)!=0) { - lcd.printf("DHCP error - No IP"); - wait(10); - } else { - lcd.printf("IP is %s\n", eth.getIPAddress()); - wait(2); - } +{ + +// ANCIEN PROG +// int a; // moi + //char * adresseIP;// moi, adresse IP est un pointeur sur une chaine de car, mais un car suffit + // a=eth.init(); //Use DHCP, le a= c'est moi ! + //pc.printf("eth init= %d\n",a); // moi + //wait(2); + //lcd.cls(); + //lcd.printf("Getting IP Address\r\n"); + + /*if(eth.connect(60000)!=0) + { + lcd.printf("DHCP error - No IP"); + wait(10); + } + else { + adresseIP=eth.getIPAddress(); // moi, getIPAddress retourne un pointeur sur une chaine de car + lcd.printf("IP is %s\n", adresseIP); // moi dans un pointeur sur un chaine de caractéres + pc.printf("IP est %s\n",eth.getIPAddress()); // moi + lcd.printf("MAC1 is %s\n", eth.getMACAddress()); + pc.printf("MAC est %s\n",eth.getMACAddress()); // moi + wait(2); + } + lcd.cls(); lcd.printf("Trying to update time...\r\n"); - if (ntp.setTime("0.pool.ntp.org") == 0) { - lcd.printf("Set time successfully\r\n"); - while(1) { - lcd.cls(); - lcd.locate(0,0); - time_t ctTime; - ctTime = time(NULL); - lcd.printf("%s\r\n", ctime(&ctTime)); - lcd.printf("Current Time (UTC)"); - wait(1); - } - } else { - lcd.printf("NTP Error\r\n"); - } + + if (ntp.setTime("0.pool.ntp.org") == 0) + { + lcd.printf("Set time successfully\r\n"); + while(1) { + lcd.cls(); + lcd.locate(0,0); + time_t ctTime; + ctTime = time(NULL); + lcd.printf("%s\r\n", ctime(&ctTime)); + lcd.printf("Current Time (UTC)"); + wait(1); + } + } + else { + lcd.printf("NTP Error\r\n");//rien + } - eth.disconnect(); + eth.disconnect();*/ + + // FIN ANCIEN PROG + + bool client_connected = false; + char buffer[100]; + + wait(2); + lcd.cls(); + lcd.printf("Getting IP Address\r\n"); + pc.printf("Mon Port serie OK\n\r"); + + /*if(eth.init(ip,masque,passerelle)!=0) + { + pc.printf("Erreur init Ethernet\n\r"); + return -1; + }*/ + + eth.init(); + + if(eth.connect()!=0) + { + pc.printf("Erreur Connect\n\r"); + return -1; + } + + lcd.printf("IP est %s\n",eth.getIPAddress()); + pc.printf("IP est %s\n",eth.getIPAddress()); // moi + lcd.printf("MAC1 is %s\n", eth.getMACAddress()); + pc.printf("MAC est %s\n",eth.getMACAddress()); // moi + wait(2); + + if(server.bind(serveur_port)!=0) + { + pc.printf("Erreur TCP Bind\n\r"); + return -1; + } + wait(2); + lcd.cls(); + + + lcd.printf("Succes TCP bind\n"); + pc.printf("Succes TCP Bind\n"); // moi + wait(2); + lcd.cls(); + + if(server.listen()!=0) + { + pc.printf("Erreur TCP Listen \n"); + return -1; + } + wait(2); + lcd.cls(); + + lcd.printf("Succes TCP listen\n"); + pc.printf("Succes TCP listen\n"); // moi + + wait(2); + lcd.cls(); + + lcd.printf("Connectez un client TCP \n"); + lcd.printf("sur le port 2000\n"); + pc.printf("Connectez un client TCP sur le port 2000\n"); // moi + + client.set_blocking(false,100); // timeout 100 ms + + + while(1) { - } -} + + if(client_connected==false) + { + + + if(server.accept(client)!=0) + { + pc.printf("Erreur TCP Listen accepte client \n"); + return -1; + } + client_connected=true; + lcd.printf("Client TCP connecte\n"); + pc.printf("Client TCP connecte\n"); // moi + pc.printf(" Adresse IP du client %s\r\n",client.get_address()); + client.send("Hello\r\n",strlen("Hello\r\n")); + + } + else + { + if(client.is_connected()) + { + if(pc.readable()) + { + buffer[0]=pc.getc(); + client.send(buffer,1); + + } + int nbcaractere=client.receive(buffer,sizeof(buffer)); + if (nbcaractere>0) + { + buffer[nbcaractere-1]=0; + pc.printf("%s",buffer); + } + } + else + { + client_connected=false; + client.close(); + pc.printf("client deconnecte\r\n"); + pc.printf("Connectez un client sur le port TCP 2000....\r\n"); + } + + } + } // fin du while 1 + }