Eric-Ethernet-2019

Dependencies:   mbed mbed-rtos C12832_lcd NTPClient EthernetInterface

Committer:
Aryane
Date:
Thu Feb 07 10:31:34 2019 +0000
Revision:
2:f3b7851c0245
Parent:
1:9095ffb76813
Eric-Ethernet

Who changed what in which revision?

UserRevisionLine numberNew contents of line
4180_1 0:9653261dbcda 1 #include "mbed.h"
4180_1 0:9653261dbcda 2 #include "EthernetInterface.h"
4180_1 0:9653261dbcda 3 #include "NTPClient.h"
4180_1 0:9653261dbcda 4 #include "C12832_lcd.h"
4180_1 0:9653261dbcda 5
4180_1 0:9653261dbcda 6 C12832_LCD lcd; //Graphics LCD
4180_1 0:9653261dbcda 7 EthernetInterface eth;
4180_1 0:9653261dbcda 8 NTPClient ntp;
Aryane 2:f3b7851c0245 9 Serial pc(USBTX,USBRX);
Aryane 2:f3b7851c0245 10
Aryane 2:f3b7851c0245 11 TCPSocketServer server;
Aryane 2:f3b7851c0245 12 TCPSocketConnection client;
Aryane 2:f3b7851c0245 13 int serveur_port =2000;
Aryane 2:f3b7851c0245 14 DigitalOut myled(LED1);
Aryane 2:f3b7851c0245 15
Aryane 2:f3b7851c0245 16 char ip[]="192.168.1.10";
Aryane 2:f3b7851c0245 17 char masque[]="255.255.255.0";
Aryane 2:f3b7851c0245 18 char passerelle[]="192.168.1.254";
4180_1 0:9653261dbcda 19
4180_1 0:9653261dbcda 20 int main()
Aryane 2:f3b7851c0245 21 {
Aryane 2:f3b7851c0245 22
Aryane 2:f3b7851c0245 23 // ANCIEN PROG
Aryane 2:f3b7851c0245 24 // int a; // moi
Aryane 2:f3b7851c0245 25 //char * adresseIP;// moi, adresse IP est un pointeur sur une chaine de car, mais un car suffit
Aryane 2:f3b7851c0245 26 // a=eth.init(); //Use DHCP, le a= c'est moi !
Aryane 2:f3b7851c0245 27 //pc.printf("eth init= %d\n",a); // moi
Aryane 2:f3b7851c0245 28 //wait(2);
Aryane 2:f3b7851c0245 29 //lcd.cls();
Aryane 2:f3b7851c0245 30 //lcd.printf("Getting IP Address\r\n");
Aryane 2:f3b7851c0245 31
Aryane 2:f3b7851c0245 32 /*if(eth.connect(60000)!=0)
Aryane 2:f3b7851c0245 33 {
Aryane 2:f3b7851c0245 34 lcd.printf("DHCP error - No IP");
Aryane 2:f3b7851c0245 35 wait(10);
Aryane 2:f3b7851c0245 36 }
Aryane 2:f3b7851c0245 37 else {
Aryane 2:f3b7851c0245 38 adresseIP=eth.getIPAddress(); // moi, getIPAddress retourne un pointeur sur une chaine de car
Aryane 2:f3b7851c0245 39 lcd.printf("IP is %s\n", adresseIP); // moi dans un pointeur sur un chaine de caractéres
Aryane 2:f3b7851c0245 40 pc.printf("IP est %s\n",eth.getIPAddress()); // moi
Aryane 2:f3b7851c0245 41 lcd.printf("MAC1 is %s\n", eth.getMACAddress());
Aryane 2:f3b7851c0245 42 pc.printf("MAC est %s\n",eth.getMACAddress()); // moi
Aryane 2:f3b7851c0245 43 wait(2);
Aryane 2:f3b7851c0245 44 }
Aryane 2:f3b7851c0245 45
4180_1 0:9653261dbcda 46 lcd.cls();
4180_1 0:9653261dbcda 47 lcd.printf("Trying to update time...\r\n");
Aryane 2:f3b7851c0245 48
Aryane 2:f3b7851c0245 49 if (ntp.setTime("0.pool.ntp.org") == 0)
Aryane 2:f3b7851c0245 50 {
Aryane 2:f3b7851c0245 51 lcd.printf("Set time successfully\r\n");
Aryane 2:f3b7851c0245 52 while(1) {
Aryane 2:f3b7851c0245 53 lcd.cls();
Aryane 2:f3b7851c0245 54 lcd.locate(0,0);
Aryane 2:f3b7851c0245 55 time_t ctTime;
Aryane 2:f3b7851c0245 56 ctTime = time(NULL);
Aryane 2:f3b7851c0245 57 lcd.printf("%s\r\n", ctime(&ctTime));
Aryane 2:f3b7851c0245 58 lcd.printf("Current Time (UTC)");
Aryane 2:f3b7851c0245 59 wait(1);
Aryane 2:f3b7851c0245 60 }
Aryane 2:f3b7851c0245 61 }
Aryane 2:f3b7851c0245 62 else {
Aryane 2:f3b7851c0245 63 lcd.printf("NTP Error\r\n");//rien
Aryane 2:f3b7851c0245 64 }
4180_1 0:9653261dbcda 65
Aryane 2:f3b7851c0245 66 eth.disconnect();*/
Aryane 2:f3b7851c0245 67
Aryane 2:f3b7851c0245 68 // FIN ANCIEN PROG
Aryane 2:f3b7851c0245 69
Aryane 2:f3b7851c0245 70 bool client_connected = false;
Aryane 2:f3b7851c0245 71 char buffer[100];
Aryane 2:f3b7851c0245 72
Aryane 2:f3b7851c0245 73 wait(2);
Aryane 2:f3b7851c0245 74 lcd.cls();
Aryane 2:f3b7851c0245 75 lcd.printf("Getting IP Address\r\n");
Aryane 2:f3b7851c0245 76 pc.printf("Mon Port serie OK\n\r");
Aryane 2:f3b7851c0245 77
Aryane 2:f3b7851c0245 78 /*if(eth.init(ip,masque,passerelle)!=0)
Aryane 2:f3b7851c0245 79 {
Aryane 2:f3b7851c0245 80 pc.printf("Erreur init Ethernet\n\r");
Aryane 2:f3b7851c0245 81 return -1;
Aryane 2:f3b7851c0245 82 }*/
Aryane 2:f3b7851c0245 83
Aryane 2:f3b7851c0245 84 eth.init();
Aryane 2:f3b7851c0245 85
Aryane 2:f3b7851c0245 86 if(eth.connect()!=0)
Aryane 2:f3b7851c0245 87 {
Aryane 2:f3b7851c0245 88 pc.printf("Erreur Connect\n\r");
Aryane 2:f3b7851c0245 89 return -1;
Aryane 2:f3b7851c0245 90 }
Aryane 2:f3b7851c0245 91
Aryane 2:f3b7851c0245 92 lcd.printf("IP est %s\n",eth.getIPAddress());
Aryane 2:f3b7851c0245 93 pc.printf("IP est %s\n",eth.getIPAddress()); // moi
Aryane 2:f3b7851c0245 94 lcd.printf("MAC1 is %s\n", eth.getMACAddress());
Aryane 2:f3b7851c0245 95 pc.printf("MAC est %s\n",eth.getMACAddress()); // moi
Aryane 2:f3b7851c0245 96 wait(2);
Aryane 2:f3b7851c0245 97
Aryane 2:f3b7851c0245 98 if(server.bind(serveur_port)!=0)
Aryane 2:f3b7851c0245 99 {
Aryane 2:f3b7851c0245 100 pc.printf("Erreur TCP Bind\n\r");
Aryane 2:f3b7851c0245 101 return -1;
Aryane 2:f3b7851c0245 102 }
Aryane 2:f3b7851c0245 103 wait(2);
Aryane 2:f3b7851c0245 104 lcd.cls();
Aryane 2:f3b7851c0245 105
Aryane 2:f3b7851c0245 106
Aryane 2:f3b7851c0245 107 lcd.printf("Succes TCP bind\n");
Aryane 2:f3b7851c0245 108 pc.printf("Succes TCP Bind\n"); // moi
Aryane 2:f3b7851c0245 109 wait(2);
Aryane 2:f3b7851c0245 110 lcd.cls();
Aryane 2:f3b7851c0245 111
Aryane 2:f3b7851c0245 112 if(server.listen()!=0)
Aryane 2:f3b7851c0245 113 {
Aryane 2:f3b7851c0245 114 pc.printf("Erreur TCP Listen \n");
Aryane 2:f3b7851c0245 115 return -1;
Aryane 2:f3b7851c0245 116 }
Aryane 2:f3b7851c0245 117 wait(2);
Aryane 2:f3b7851c0245 118 lcd.cls();
Aryane 2:f3b7851c0245 119
Aryane 2:f3b7851c0245 120 lcd.printf("Succes TCP listen\n");
Aryane 2:f3b7851c0245 121 pc.printf("Succes TCP listen\n"); // moi
Aryane 2:f3b7851c0245 122
Aryane 2:f3b7851c0245 123 wait(2);
Aryane 2:f3b7851c0245 124 lcd.cls();
Aryane 2:f3b7851c0245 125
Aryane 2:f3b7851c0245 126 lcd.printf("Connectez un client TCP \n");
Aryane 2:f3b7851c0245 127 lcd.printf("sur le port 2000\n");
Aryane 2:f3b7851c0245 128 pc.printf("Connectez un client TCP sur le port 2000\n"); // moi
Aryane 2:f3b7851c0245 129
Aryane 2:f3b7851c0245 130 client.set_blocking(false,100); // timeout 100 ms
Aryane 2:f3b7851c0245 131
Aryane 2:f3b7851c0245 132
Aryane 2:f3b7851c0245 133
4180_1 0:9653261dbcda 134
4180_1 0:9653261dbcda 135 while(1) {
Aryane 2:f3b7851c0245 136
Aryane 2:f3b7851c0245 137 if(client_connected==false)
Aryane 2:f3b7851c0245 138 {
Aryane 2:f3b7851c0245 139
Aryane 2:f3b7851c0245 140
Aryane 2:f3b7851c0245 141 if(server.accept(client)!=0)
Aryane 2:f3b7851c0245 142 {
Aryane 2:f3b7851c0245 143 pc.printf("Erreur TCP Listen accepte client \n");
Aryane 2:f3b7851c0245 144 return -1;
Aryane 2:f3b7851c0245 145 }
Aryane 2:f3b7851c0245 146 client_connected=true;
Aryane 2:f3b7851c0245 147 lcd.printf("Client TCP connecte\n");
Aryane 2:f3b7851c0245 148 pc.printf("Client TCP connecte\n"); // moi
Aryane 2:f3b7851c0245 149 pc.printf(" Adresse IP du client %s\r\n",client.get_address());
Aryane 2:f3b7851c0245 150 client.send("Hello\r\n",strlen("Hello\r\n"));
Aryane 2:f3b7851c0245 151
Aryane 2:f3b7851c0245 152 }
Aryane 2:f3b7851c0245 153 else
Aryane 2:f3b7851c0245 154 {
Aryane 2:f3b7851c0245 155 if(client.is_connected())
Aryane 2:f3b7851c0245 156 {
Aryane 2:f3b7851c0245 157 if(pc.readable())
Aryane 2:f3b7851c0245 158 {
Aryane 2:f3b7851c0245 159 buffer[0]=pc.getc();
Aryane 2:f3b7851c0245 160 client.send(buffer,1);
Aryane 2:f3b7851c0245 161
Aryane 2:f3b7851c0245 162 }
Aryane 2:f3b7851c0245 163 int nbcaractere=client.receive(buffer,sizeof(buffer));
Aryane 2:f3b7851c0245 164 if (nbcaractere>0)
Aryane 2:f3b7851c0245 165 {
Aryane 2:f3b7851c0245 166 buffer[nbcaractere-1]=0;
Aryane 2:f3b7851c0245 167 pc.printf("%s",buffer);
Aryane 2:f3b7851c0245 168 }
Aryane 2:f3b7851c0245 169 }
Aryane 2:f3b7851c0245 170 else
Aryane 2:f3b7851c0245 171 {
Aryane 2:f3b7851c0245 172 client_connected=false;
Aryane 2:f3b7851c0245 173 client.close();
Aryane 2:f3b7851c0245 174 pc.printf("client deconnecte\r\n");
Aryane 2:f3b7851c0245 175 pc.printf("Connectez un client sur le port TCP 2000....\r\n");
Aryane 2:f3b7851c0245 176 }
Aryane 2:f3b7851c0245 177
Aryane 2:f3b7851c0245 178 }
Aryane 2:f3b7851c0245 179 } // fin du while 1
Aryane 2:f3b7851c0245 180 }