Important changes to forums and questions
All forums and questions are now archived. To start a new conversation or read the latest updates go to forums.mbed.com.
7 years, 5 months ago.
PAGE WEB
Hello, I use wiznet w7500 card and I have a program to turn on and off an LED by clicking a button on a web page but it does not work
Can someone help me? Here is my program:
- include "mbed.h"
- include "EthernetInterface.h"
- include "mbed_rpc.h"
- include "HTTPServer.h"
- include <stdio.h>
- include <string.h>
- define HTTPD_SERVER_PORT 80
- define HTTPD_MAX_REQ_LENGTH 1023
- define HTTPD_MAX_HDR_LENGTH 255
- define HTTPD_MAX_FNAME_LENGTH 127
- define HTTPD_MAX_DNAME_LENGTH 127
Serial pc(USBTX, USBRX);
char buffer[HTTPD_MAX_REQ_LENGTH+1]; char httpHeader[HTTPD_MAX_HDR_LENGTH+1]; char fileName[HTTPD_MAX_FNAME_LENGTH+1]; char dirName[HTTPD_MAX_DNAME_LENGTH+1]; char *uristr; char *eou; char *qrystr;
RpcDigitalOut led2(LED2, "led2"); RpcDigitalOut led3(LED3, "led3"); RpcDigitalOut led4(LED4, "led4");
HTTP WEB SERVER char recv_buffer[1024] = {0,}; char echoHeader[1024] = {0,}; char * findrfid = 0;
int main (void) {
pc.printf("Init end\r\n"); WEB SERVER Star printf("Wait a second...\r\n"); IP Setting..
- ifdef dhcp uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x00, 0x01, 0x02}; EthernetInterface eth; eth.init(mac_addr); Use DHCP eth.connect();
- else uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x00, 0x01, 0x02}; char ip_addr[] = "21.140.0.20"; char subnet_mask[] = "255.255.254.0"; char gateway_addr[] = "21.140.1.254"; EthernetInterface eth; eth.init(mac_addr, ip_addr, subnet_mask, gateway_addr); Not Use DHCP
while(1) { Wait link up if(eth.link() == true) break; } printf("Check Ethernet Link\r\n"); printf("Link up\r\n");
- endif
eth.connect(); printf("Server IP Address is %s\r\n", eth.getIPAddress());
TCPSocketServer server; server.bind(HTTPD_SERVER_PORT); printf("bind complete\r\n"); server.listen(); printf("listen complete\r\n"); while (true) { printf("Wait for new connection...\r\n"); TCPSocketConnection client; server.accept(client); client.set_blocking(false, 0); Timeout after (1.5)s
printf("Connection from: %s\r\n", client.get_address());
while (true) { int n = client.receive(recv_buffer, sizeof(recv_buffer)); if (n <= 0) break; n = n < 0
print received message to terminal recv_buffer[n] = '\0'; printf("Received message from Client :'%s'\r\n",recv_buffer); if(recv_buffer[0] == 'G' && recv_buffer[1] == 'E' && recv_buffer[2] == 'T') { printf("GET request incomming.\n\r");
setup http response header + data char send_buffer[]={ "<!DOCTYPE HTML>" "\r\n\n\r<html>" "\n\r\n\r\n\r<head>" "\n\r<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">" "\n\r<title>Wizwiki-W7500 Web Server</title>\n\r<meta name=\"generator\">" "\n\r</head>\n\r\n\r" "<body bgcolor=\"white\" text=\"black\" link=\"blue\" vlink=\"purple\" alink=\"red\">\r\n" "<h1>Wizwiki-W7500</h1>\r\n" "<p><form methode=\"GET\">\r\n" "<center>" "<input type='button' value='LED1on ' ID='btn_LED1a' onclick='led1.wrte(1)' > <br >" "<br>" "<input type='button' value='LED1oFF ' ID='btn_LED1b' onclick='led1.write(0)'><br>" "</center>" "\r\n</form>" "</p>\r\n" "</body>\n\r" "</html>\r\n" };
sprintf(echoHeader,"HTTP/1.1 200 OK\n\rContent-Length: %d\n\rContent-Type: text/html\n\rConnection: Closen\n\rRefresh: 5\n\r\n\r\n\r",strlen(send_buffer)); client.send(echoHeader,strlen(echoHeader)); client.send(send_buffer,strlen(send_buffer));
} if (n <= 0) break; } client.close(); } }
2 Answers
7 years, 5 months ago.
Si vous voulez recevoir plus de reponses il faut poser les question en anglais...
In your case it looks like you tried to implement the EthernetInterface.h library on a Wiznet board. This will not work. You need to use the Wiznet library. Search in the compiler "import" for "W7500" or Wiznet and you will find examples of how to implement the code using their library.
7 years, 5 months ago.
Hello Amy,
You might start with this demo, if you use mbed 2 or this one, in case you use mbed 5. Then delete the EthernetInterface library, import the WIZnetInterface library, compile and see how it works.
NOTE: There is a demo also for the WIZ5500 boards but it's using a differenct library.
TIP FOR EDITING: You can copy and paste your code here as text and enclose it within
tags as below (each marker on separate line). Then it's going to be displayed in frame as formatted code.<<code>> and <</code>>
<<code>> #include "mbed.h" DigitalOut led1(LED1); int main() { while (1) { led1 = !led1; wait(0.5); } } <</code>>