Eric-Ethernet-2019

Dependencies:   mbed mbed-rtos C12832_lcd NTPClient EthernetInterface

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
+     }