Eric-Ethernet-2019
Dependencies: mbed mbed-rtos C12832_lcd NTPClient EthernetInterface
main.cpp@2:f3b7851c0245, 2019-02-07 (annotated)
- 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?
User | Revision | Line number | New 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 | } |