Servidor Web embebido

Dependencies:   WIZnet_Library

Committer:
Ademir501
Date:
Tue Jul 01 17:53:19 2014 +0000
Revision:
1:f39ba31afda9
Parent:
0:2f0a30377d42
wiznet.h;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Ademir501 0:2f0a30377d42 1 //w5500
Ademir501 0:2f0a30377d42 2 #include "mbed.h"
Ademir501 0:2f0a30377d42 3 #include "WIZnetInterface.h"
Ademir501 0:2f0a30377d42 4
Ademir501 0:2f0a30377d42 5 #define ECHO_SERVER_PORT 80
Ademir501 0:2f0a30377d42 6
Ademir501 0:2f0a30377d42 7 SPI spi(PTD7, PTD6, PTD5); // mosi, miso, sclk
Ademir501 0:2f0a30377d42 8 WIZnetInterface eth(&spi, PTD4, PTA20); // spi, cs, reset
Ademir501 0:2f0a30377d42 9 Serial pc(PTA2,PTA1);
Ademir501 0:2f0a30377d42 10 DigitalOut led(PTB0);
Ademir501 0:2f0a30377d42 11
Ademir501 0:2f0a30377d42 12 void f_ethernet_init(void);
Ademir501 0:2f0a30377d42 13
Ademir501 0:2f0a30377d42 14
Ademir501 1:f39ba31afda9 15
Ademir501 0:2f0a30377d42 16 const char * IP_Addr = "169.254.175.210";
Ademir501 0:2f0a30377d42 17 const char * IP_Subnet = "255.255.255.0";
Ademir501 0:2f0a30377d42 18 const char * IP_Gateway = "169.254.175.209";
Ademir501 1:f39ba31afda9 19 char data[8];
Ademir501 1:f39ba31afda9 20 int lenght;
Ademir501 1:f39ba31afda9 21
Ademir501 0:2f0a30377d42 22 int ret,dummy;
Ademir501 0:2f0a30377d42 23 int lv=1;
Ademir501 1:f39ba31afda9 24 bool status;
Ademir501 0:2f0a30377d42 25
Ademir501 0:2f0a30377d42 26
Ademir501 0:2f0a30377d42 27 char a[]={"HTTP/1.0 200 OK\r\nContent-Type: text/html\r\nPragma: no-cache\r\n\r\n"};
Ademir501 0:2f0a30377d42 28 char b[]={"<html>\r\n<body>\r\n"};
Ademir501 1:f39ba31afda9 29 char c[]={"<body bgcolor=\"green\">"};
Ademir501 1:f39ba31afda9 30 char c1[]={"<body bgcolor=\"000ff0\"></body>\r\n"};
Ademir501 1:f39ba31afda9 31 char d[]={"<title>FRDM KL46Z</title>\r\n"};
Ademir501 1:f39ba31afda9 32 char e[]={"<center><h2>Pagina Web usando Wiznet</h2>\r\n"};
Ademir501 1:f39ba31afda9 33 char f[]={"<br /><hr></center>\r\n"};
Ademir501 1:f39ba31afda9 34 //char g[]={"<FONT FACE=\"Arial\" SIZE=\"8\" COLOR=\"FF0000\">"};
Ademir501 1:f39ba31afda9 35 //char w[]={"<meta http-equiv=\"refresh\" content=\"10; url=/\">\r\n"};
Ademir501 1:f39ba31afda9 36 char h[]={"<center><div STYLE=\"position:absolute;bgcolor:black; top:100px; left:200px;width:54px\">"};
Ademir501 0:2f0a30377d42 37
Ademir501 1:f39ba31afda9 38 //char r[]={"HTTP/1.1 200 OK\r\n"};
Ademir501 1:f39ba31afda9 39 //char s[]={"Content-Type: text/html\r\n"};
Ademir501 1:f39ba31afda9 40 //char t[]={"Connection: close\r\n"};
Ademir501 1:f39ba31afda9 41 //char u[]={"Refresh: 5\r\n\r\n"};
Ademir501 1:f39ba31afda9 42 //char v[]={"<!DOCTYOE HTML>\r\n"};
Ademir501 1:f39ba31afda9 43 //char y[]={"<html>\r\n"};
Ademir501 0:2f0a30377d42 44
Ademir501 0:2f0a30377d42 45
Ademir501 1:f39ba31afda9 46 char paq_en[64];
Ademir501 1:f39ba31afda9 47
Ademir501 0:2f0a30377d42 48
Ademir501 0:2f0a30377d42 49 int main()
Ademir501 0:2f0a30377d42 50 {
Ademir501 0:2f0a30377d42 51 f_ethernet_init();
Ademir501 0:2f0a30377d42 52 TCPSocketServer server;
Ademir501 1:f39ba31afda9 53 TCPSocketConnection client;
Ademir501 0:2f0a30377d42 54 server.bind(ECHO_SERVER_PORT);
Ademir501 0:2f0a30377d42 55 server.listen();
Ademir501 0:2f0a30377d42 56 pc.printf("\nEsperando conexion con cliente...\n");
Ademir501 1:f39ba31afda9 57
Ademir501 1:f39ba31afda9 58
Ademir501 0:2f0a30377d42 59 while(lv)
Ademir501 0:2f0a30377d42 60 {
Ademir501 0:2f0a30377d42 61 lv=server.accept(client);
Ademir501 0:2f0a30377d42 62 if(!lv)
Ademir501 0:2f0a30377d42 63 {
Ademir501 0:2f0a30377d42 64 pc.printf("Cliente conectado: %s\n", client.get_address());
Ademir501 0:2f0a30377d42 65
Ademir501 0:2f0a30377d42 66 }
Ademir501 0:2f0a30377d42 67 else
Ademir501 0:2f0a30377d42 68 {
Ademir501 0:2f0a30377d42 69 wait(10);
Ademir501 0:2f0a30377d42 70 }
Ademir501 0:2f0a30377d42 71 }
Ademir501 1:f39ba31afda9 72 client.receive(data,sizeof(data));
Ademir501 1:f39ba31afda9 73 pc.printf("%c",data);
Ademir501 1:f39ba31afda9 74
Ademir501 1:f39ba31afda9 75 client.send(a,sizeof(a));
Ademir501 1:f39ba31afda9 76 client.send(b,sizeof(b));
Ademir501 1:f39ba31afda9 77 client.send(c,sizeof(c));
Ademir501 1:f39ba31afda9 78 client.send(d,sizeof(d));
Ademir501 1:f39ba31afda9 79 client.send(e,sizeof(e));
Ademir501 1:f39ba31afda9 80 client.send(f,sizeof(f));
Ademir501 1:f39ba31afda9 81
Ademir501 1:f39ba31afda9 82
Ademir501 1:f39ba31afda9 83 while(1)
Ademir501 1:f39ba31afda9 84 {
Ademir501 1:f39ba31afda9 85 while(client.is_connected())
Ademir501 1:f39ba31afda9 86 {
Ademir501 1:f39ba31afda9 87 dummy++;
Ademir501 1:f39ba31afda9 88
Ademir501 1:f39ba31afda9 89
Ademir501 1:f39ba31afda9 90 client.send(h,sizeof(h));
Ademir501 1:f39ba31afda9 91 sprintf(paq_en,"<p style=\"color:white;font-size:200px\">%d</p></div></center>\r\n",dummy);
Ademir501 1:f39ba31afda9 92 client.send(paq_en,sizeof(paq_en));
Ademir501 1:f39ba31afda9 93 wait(1);
Ademir501 1:f39ba31afda9 94 client.send(h,sizeof(h));
Ademir501 1:f39ba31afda9 95 sprintf(paq_en,"<p style=\"color:green;font-size:200px\">%d</p></div></center>\r\n",dummy);
Ademir501 1:f39ba31afda9 96 client.send(paq_en,sizeof(paq_en));
Ademir501 1:f39ba31afda9 97
Ademir501 1:f39ba31afda9 98 }
Ademir501 1:f39ba31afda9 99 server.bind(ECHO_SERVER_PORT);
Ademir501 1:f39ba31afda9 100 server.listen();
Ademir501 1:f39ba31afda9 101 server.accept(client);
Ademir501 0:2f0a30377d42 102
Ademir501 1:f39ba31afda9 103
Ademir501 0:2f0a30377d42 104 client.send(a,sizeof(a));
Ademir501 0:2f0a30377d42 105 client.send(b,sizeof(b));
Ademir501 0:2f0a30377d42 106 client.send(c,sizeof(c));
Ademir501 0:2f0a30377d42 107 client.send(d,sizeof(d));
Ademir501 0:2f0a30377d42 108 client.send(e,sizeof(e));
Ademir501 1:f39ba31afda9 109 client.send(f,sizeof(f));
Ademir501 1:f39ba31afda9 110 client.send(paq_en,sizeof(paq_en));
Ademir501 1:f39ba31afda9 111 }
Ademir501 0:2f0a30377d42 112
Ademir501 1:f39ba31afda9 113
Ademir501 0:2f0a30377d42 114 }
Ademir501 0:2f0a30377d42 115
Ademir501 0:2f0a30377d42 116 void f_ethernet_init()
Ademir501 0:2f0a30377d42 117 {
Ademir501 0:2f0a30377d42 118 uint8_t mac[]={0x00,0x08,0xDC,0x1C,0xAA,0xCA};
Ademir501 0:2f0a30377d42 119 // mbed_mac_address((char *)mac);
Ademir501 0:2f0a30377d42 120 pc.printf("\tIniciando Servidor Ethernet...\n\r");
Ademir501 0:2f0a30377d42 121 wait(1);
Ademir501 0:2f0a30377d42 122 ret = eth.init(mac, IP_Addr, IP_Subnet, IP_Gateway);
Ademir501 0:2f0a30377d42 123 if(!ret)
Ademir501 0:2f0a30377d42 124 {
Ademir501 0:2f0a30377d42 125 pc.printf("Inicializado, MAC= %s\n\r",eth.getMACAddress());
Ademir501 0:2f0a30377d42 126 }
Ademir501 0:2f0a30377d42 127 else
Ademir501 0:2f0a30377d42 128 {
Ademir501 0:2f0a30377d42 129 pc.printf("Fallo comunicacion... Reinicie dispositivos...\n\r");
Ademir501 0:2f0a30377d42 130 }
Ademir501 0:2f0a30377d42 131 pc.printf("Conectando.");
Ademir501 1:f39ba31afda9 132 wait(0.5);
Ademir501 0:2f0a30377d42 133 pc.printf(".");
Ademir501 1:f39ba31afda9 134 wait(0.5);
Ademir501 0:2f0a30377d42 135 pc.printf(".\n\r");
Ademir501 1:f39ba31afda9 136 wait(0.5);
Ademir501 0:2f0a30377d42 137 ret = eth.connect();
Ademir501 0:2f0a30377d42 138 if(!ret)
Ademir501 0:2f0a30377d42 139 {
Ademir501 0:2f0a30377d42 140 pc.printf("Conexion Establecida!\n\n\r");
Ademir501 0:2f0a30377d42 141 wait(1);
Ademir501 0:2f0a30377d42 142 pc.printf("IP=%s\n\rMASK=%s\n\rGW=%s\n\r",eth.getIPAddress(), eth.getNetworkMask(), eth.getGateway());
Ademir501 0:2f0a30377d42 143 }
Ademir501 0:2f0a30377d42 144 else
Ademir501 0:2f0a30377d42 145 {
Ademir501 0:2f0a30377d42 146 pc.printf("Fallo conexion... Reinicie dispositivos...\n\r");
Ademir501 0:2f0a30377d42 147 }
Ademir501 1:f39ba31afda9 148 }
Ademir501 1:f39ba31afda9 149