Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: WIZWebtInterface mbed
Fork of HTTP_Test_Server_Web by
Diff: main.cpp
- Revision:
- 3:dc786e394e82
- Parent:
- 2:0523b50f44fd
diff -r 0523b50f44fd -r dc786e394e82 main.cpp
--- a/main.cpp Fri Nov 04 08:11:34 2016 +0000
+++ b/main.cpp Wed Nov 16 05:25:55 2016 +0000
@@ -1,17 +1,18 @@
#include "mbed.h"
#include "EthernetInterface.h"
+#include "wizHTML.h"
#include <stdio.h>
#include <string.h>
#define MAC "\x00\x08\xDC\x11\x34\x78"
-#define IP "192.168.1.123"
+#define IP "192.168.1.12"
#define MASK "255.255.255.0"
#define GATEWAY "192.168.1.1"
#define HTTPD_SERVER_PORT 80
-#define HTTPD_MAX_REQ_LENGTH 1023
-#define HTTPD_MAX_HDR_LENGTH 255
+#define HTTPD_MAX_REQ_LENGTH 102
+#define HTTPD_MAX_HDR_LENGTH 96
#define HTTPD_MAX_FNAME_LENGTH 127
#define HTTPD_MAX_DNAME_LENGTH 127
@@ -21,21 +22,15 @@
DigitalIn myInD11(D11);
DigitalOut myOutD12(D12);
AnalogIn myInA1(A1);
-Timeout button_ledTimeout;
-Timeout receive_dht11Timeout;
+Timeout buttonLedTimeout;
+Timeout receiveDht11Timeout;
unsigned char RH,RL,TH,TL;
unsigned char data_byte;
unsigned int U8FLAG;
-unsigned char status_led;
-unsigned char seaver_ip[] = IP;
-char led_control[6] = "cloce";
-
-
-//SDFileSystem sd(p5, p6, p7, p8, "sd"); // LPC1768 MBD2PMD
-//SDFileSystem sd(P0_18, P0_17, P0_15, P0_16, "sd"); // Seeeduino Arch Pro SPI2SD
-//SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd"); // K64F
-//SDFileSystem sd(PB_3, PB_2, PB_1, PB_0, "sd"); // WIZwiki-W7500
+char seaver_ip[] = IP;
+char led_control[6];
+unsigned int loopCnt = 10000;
EthernetInterface eth;
TCPSocketServer server;
@@ -49,28 +44,10 @@
char *eou;
char *qrystr;
-
-Ticker ledTick;
-
-void receive_dht11();
-unsigned char receive_byte();
+void receiveDht11();
+unsigned char receiveByte();
-void delay(unsigned char ms)
-{
- unsigned int y;
- while(ms--)
- for(y=1920; y>0; y--);
-}
-
-void Delay_us(unsigned char us)
-{
- unsigned char y;
- while(us--)
- for(y=2; y>0; y--);
-}
-
-
-void button_led()
+void buttonLed()
{
while(myInD11.read())
{
@@ -78,244 +55,162 @@
if(!myInD11.read())
{
myOutD12.write(!myOutD12.read());
- status_led = myOutD12.read();
break;
}
}
- button_ledTimeout.attach(&button_led,0.1f);
+ buttonLedTimeout.attach(&buttonLed,0.1f);
}
void getFile(char* uri)
{
+ static char string_c[24] = {0};
+ char* Led;
+ char* ledS;
+ int gas = myInA1.read_u16();
uart.printf("getFile %s\n", uri);
- strcpy(led_control, &uri[1]);
- //receive_dht11();
+ if(memcmp(&uri[1], "favicon.ico", 11)==0){
+ return;
+ }
+ strncpy(led_control, &uri[1], 5);
char *lstchr = strrchr(uri, NULL) -1;
- sprintf(httpHeader,"HTTP/1.1 200 OK\r\nContent-Type: text/html\r\nConnection: Close\r\n\r\n");
- client.send(httpHeader,strlen(httpHeader));
- sprintf(httpHeader,"<html><head><title>hello dfrobot</title></head><body><h1> Information State</h1><ul>");
- client.send(httpHeader,strlen(httpHeader));
-
- sprintf(httpHeader,"<H1>Temperature:%d Celsius</H1>", TH);
- client.send(httpHeader,strlen(httpHeader));
- sprintf(httpHeader,"<H1>Humidity:%d %%</H1>", RH);
- client.send(httpHeader,strlen(httpHeader));
- sprintf(httpHeader,"<H1>Gas Value:%d</H1>", myInA1.read_u16());
- client.send(httpHeader,strlen(httpHeader));
- static char i = 0, j = 0, open_1 = 1, cloce_1 = 1, k;
- if (strncmp(led_control, "cloce", 5)==0)
- {uart.printf("status_led--cloce--- %d\n", status_led);
- if(cloce_1)
- {
- sprintf(httpHeader,"<H1>Led state:CLOCE</H1>");
- client.send(httpHeader,strlen(httpHeader));
+ static char open_1 = 1, cloce_1 = 1;
+ if (memcmp(led_control, "offon", 5)==0){
+ if (cloce_1){
myOutD12.write(0);
- sprintf(httpHeader,"<form action=\"http://%s/open\"><input type=\"submit\" value=\"ON/OFF\"></form>", seaver_ip);
- client.send(httpHeader,strlen(httpHeader));
-
- j = 1;
- k = status_led;
cloce_1 = 0;
}
- else if (k == status_led && j)
- {
- sprintf(httpHeader,"<H1>Led state:CLOCE</H1>");
- client.send(httpHeader,strlen(httpHeader));
- myOutD12.write(0);
- sprintf(httpHeader,"<form action=\"http://%s/open\"><input type=\"submit\" value=\"ON/OFF\"></form>", seaver_ip);
- client.send(httpHeader,strlen(httpHeader));
- j = 0;
- }
- else if(status_led && !j)
- {
- sprintf(httpHeader,"<H1>Led state:OPEN</H1>");
- client.send(httpHeader,strlen(httpHeader));
- myOutD12.write(1);
- sprintf(httpHeader,"<form action=\"http://%s/cloce\"><input type=\"submit\" value=\"ON/OFF\"></form>", seaver_ip);
- client.send(httpHeader,strlen(httpHeader));
- }
- else if(!status_led && !j)
- {
- sprintf(httpHeader,"<H1>Led state:CLOCE</H1>");
- client.send(httpHeader,strlen(httpHeader));
- myOutD12.write(0);
- sprintf(httpHeader,"<form action=\"http://%s/open\"><input type=\"submit\" value=\"ON/OFF\"></form>", seaver_ip);
- client.send(httpHeader,strlen(httpHeader));
- }
open_1 = 1;
}
- else if (strncmp(led_control, "open", 4)==0)
- {uart.printf("status_led--open--- %d\n", status_led);
- if(open_1)
- {
- sprintf(httpHeader,"<H1>Led state:OPEN</H1>");
- client.send(httpHeader,strlen(httpHeader));
- myOutD12.write(1);
- sprintf(httpHeader,"<form action=\"http://%s/cloce\"><input type=\"submit\" value=\"ON/OFF\"></form>", seaver_ip);
- client.send(httpHeader,strlen(httpHeader));
-
- i = 1;
- k = status_led;
- open_1 = 0;
- }
- else if(k == status_led && i)
- {
- sprintf(httpHeader,"<H1>Led state:OPEN</H1>");
- client.send(httpHeader,strlen(httpHeader));
+ else if (memcmp(led_control, "onoff", 5)==0){
+ if (open_1){
myOutD12.write(1);
- sprintf(httpHeader,"<form action=\"http://%s/cloce\"><input type=\"submit\" value=\"ON/OFF\"></form>", seaver_ip);
- client.send(httpHeader,strlen(httpHeader));
- i = 0;
- }
- else if (status_led && !i)// 0
- {
- sprintf(httpHeader,"<H1>Led state:OPEN</H1>");
- client.send(httpHeader,strlen(httpHeader));
- myOutD12.write(1);
- sprintf(httpHeader,"<form action=\"http://%s/cloce\"><input type=\"submit\" value=\"ON/OFF\"></form>", seaver_ip);
- client.send(httpHeader,strlen(httpHeader));
- }
- else if (!status_led && !i)
- {
- sprintf(httpHeader,"<H1>Led state:CLOCE</H1>");
- client.send(httpHeader,strlen(httpHeader));
- myOutD12.write(0);
- sprintf(httpHeader,"<form action=\"http://%s/open\"><input type=\"submit\" value=\"ON/OFF\"></form>", seaver_ip);
- client.send(httpHeader,strlen(httpHeader));
+ open_1 = 0;
}
cloce_1 = 1;
- }
+ }
+ if(myOutD12.read()){
+ Led = ledSc[0];
+ ledS = ledSc[1];
+ sprintf(string_c,"%s/offon", seaver_ip);
+ }else{
+ Led = ledSc[2];
+ ledS = ledSc[3];
+ sprintf(string_c,"%s/onoff", seaver_ip);
+ }
+ htmlWeb(TH, TH*5, RH, RH*5, gas, gas*0.05f, Led, ledS, string_c);
+ sprintf(httpHeader,"HTTP/1.1 200 OK\r\nContent-Type: text/html\r\nConnection: Close\r\n\r\n");
+ client.send(httpHeader,strlen(httpHeader));
- if (strncmp(led_control, "", 1)==0)
- {
- if(myOutD12.read())
- {
- sprintf(httpHeader,"<H1>Led state:OPEN</H1>");
- client.send(httpHeader,strlen(httpHeader));
- myOutD12.write(1);
-
- sprintf(httpHeader,"<form action=\"http://%s/cloce\"><input type=\"submit\" value=\"ON/OFF\"></form>", seaver_ip);
- client.send(httpHeader,strlen(httpHeader));
- status_led = 1;
- }
- else
- {
- sprintf(httpHeader,"<H1>Led state:CLOCE</H1>");
- client.send(httpHeader,strlen(httpHeader));
- myOutD12.write(0);
-
- sprintf(httpHeader,"<form action=\"http://%s/open\"><input type=\"submit\" value=\"ON/OFF\"></form>", seaver_ip);
- client.send(httpHeader,strlen(httpHeader));
- status_led = 0;
- }
+ for (int i=0; i<sizeof(html); i += 96){
+ memcpy(httpHeader, &html[i], 96);
+ client.send(httpHeader,strlen(httpHeader));
+ //wait(0.00001);
}
- sprintf(httpHeader,"<meta http-equiv=\"refresh\" content=\"1\">");
- client.send(httpHeader,strlen(httpHeader));
-
- sprintf(httpHeader,"</ul></body></html>");
- client.send(httpHeader,strlen(httpHeader));
+ memset(string_c, 0, sizeof(string_c));
+ memset(html, 0, sizeof(html));
}
int main (void)
{
uart.baud(115200);
uart.printf("Initializing\r\n");
-// EthernetInterface eth;
uart.printf("Initializing Ethernet\r\n");
- //eth.init(); //Use DHCP
- //eth.init((uint8_t*)MAC); // Use DHCP for WIZnetInterface
- eth.init((uint8_t*)MAC,IP,MASK,GATEWAY); //IP,mask,Gateway
- uart.printf("Connecting\r\n");
- eth.connect();
- uart.printf("IP Address is %s\r\n", eth.getIPAddress());
+ buttonLedTimeout.attach(&buttonLed,0.1f);
+ receiveDht11Timeout.attach(&receiveDht11,0.2f);
+ while (true) {
+ //eth.init(); //Use DHCP
+ eth.init((uint8_t*)MAC,IP,MASK,GATEWAY); //IP,mask,Gateway
+ uart.printf("Connecting\r\n");
+ eth.connect();
+ uart.printf("IP Address is %s\r\n", eth.getIPAddress());
-// TCPSocketServer server;
- server.bind(HTTPD_SERVER_PORT);
- server.listen();
- uart.printf("Server Listening\r\n");
-
- button_ledTimeout.attach(&button_led,0.1f);
- receive_dht11Timeout.attach(&receive_dht11,0.2f);
-
- while (true) {
- uart.printf("\nWait for new connection...\r\n");
- server.accept(client);
- client.set_blocking(false, 1500); // Timeout after (1.5)s
+ server.bind(HTTPD_SERVER_PORT);
+ server.listen();
+ uart.printf("Server Listening\r\n");
- uart.printf("Connection from: %s\r\n", client.get_address());
- uart.printf("%s():%d\n",__FUNCTION__, __LINE__);
while (true) {
- //led2 = true;
- int n = client.receive(buffer, sizeof(buffer));
- if (n <= 0) break;
- uart.printf("Recieved Data: %d\r\n\r\n%.*s\r\n",n,n,buffer);
- if (n >= 1024) {
- sprintf(httpHeader,"HTTP/1.1 413 Request Entity Too Large \r\nContent-Type: text\r\nConnection: Close\r\n\r\n");
- client.send(httpHeader,strlen(httpHeader));
- client.send(buffer,n);
- break;
- } else {
- uart.printf("%s():%d\n",__FUNCTION__, __LINE__);
- buffer[n]=0;
- }
- if (!strncmp(buffer, "GET ", 4)) {
- uart.printf("%s():%d\n",__FUNCTION__, __LINE__);
- uristr = buffer + 4;
- eou = strstr(uristr, " ");
- if (eou == NULL) {
- uart.printf("%s():%d\n",__FUNCTION__, __LINE__);
- sprintf(httpHeader,"HTTP/1.1 400 Bad Request \r\nContent-Type: text\r\nConnection: Close\r\n\r\n");
+ uart.printf("\nWait for new connection...\r\n");
+
+ client.set_blocking(false, 500); // Timeout after (0.5)s
+ server.accept(client);
+
+ uart.printf("Connection from: %s\r\n", client.get_address());
+ while (true) {
+ int n = client.receive(buffer, sizeof(buffer));
+ if (n <= 0) {
+ uart.printf("return value n<=0\n");
+ break;
+ }
+ uart.printf("Recieved Data: %d\r\n\r\n%.*s\r\n",n,buffer);
+ if (n >= 1024) {
+ sprintf(httpHeader,"HTTP/1.1 413 Request Entity Too Large \r\nContent-Type: text\r\nConnection: Close\r\n\r\n");
client.send(httpHeader,strlen(httpHeader));
client.send(buffer,n);
+ break;
} else {
- uart.printf("%s():%d\n",__FUNCTION__, __LINE__);
- *eou = 0;
- getFile(uristr);
+ buffer[n]=0;
+ }
+ if (!memcmp(buffer, "GET ", 4)) {
+ uristr = buffer + 4;
+ eou = strstr(uristr, " ");
+ if (eou == NULL) {
+ sprintf(httpHeader,"HTTP/1.1 400 Bad Request \r\nContent-Type: text\r\nConnection: Close\r\n\r\n");
+ client.send(httpHeader,strlen(httpHeader));
+ client.send(buffer,n);
+ } else {
+ *eou = 0;
+ getFile(uristr);
+ }
}
}
+ client.close();
+ break;
}
- //led2 = false;
- client.close();
}
}
-unsigned char receive_byte()
+unsigned char receiveByte()
{
unsigned char i,temp;
for(i=0;i<8;i++)
{
U8FLAG = 2;
- while(!myIOD10.read() && U8FLAG++);
- Delay_us(30);
+ loopCnt = 10000;
+ while(!myIOD10.read() && U8FLAG++){
+ if (loopCnt-- == 0) return 2;
+ }
+ wait(0.00003f);
temp=0;
if(myIOD10.read()==1)
temp=1;
U8FLAG = 2;
- while(myIOD10.read() && U8FLAG++);
+ loopCnt = 10000;
+ while(myIOD10.read() && U8FLAG++){
+ if (loopCnt-- == 0) return 2;
+ }
if(U8FLAG==1)break;
- data_byte<<=1;//
+ data_byte<<=1;
data_byte|=temp;
}
return data_byte;
}
-void receive_dht11()
+void receiveDht11()
{
unsigned char T_H,T_L,R_H,R_L,check,num_check;
-
myIOD10.output();
myIOD10.write(0);
- delay(20);
+ wait(0.020f);
myIOD10.write(1);
- Delay_us(25);
+ wait(0.00002f);
myIOD10.write(1);
myIOD10.input();
@@ -323,14 +218,13 @@
{
while(!myIOD10.read());
while(myIOD10.read());
- R_H=receive_byte();
- R_L=receive_byte();
- T_H=receive_byte();
- T_L=receive_byte();
- check=receive_byte();
- uart.printf("--R_H--%d---R_L---%d--T_H--%d---T_L---%d\r\n", R_H,R_L,T_H,T_L);
- Delay_us(20);
- num_check=R_H+R_L+T_H+T_L;uart.printf("--num_check--%d---check---%d\r\n", num_check,check);
+ R_H=receiveByte();
+ R_L=receiveByte();
+ T_H=receiveByte();
+ T_L=receiveByte();
+ check=receiveByte();
+ wait(0.00004f);
+ num_check=R_H+R_L+T_H+T_L;
if(num_check==check)
{
RH=R_H;
@@ -341,10 +235,5 @@
}
}
- uart.printf("humidity [H] -out--%d\r\n", RH);
- uart.printf("humidity [L] -out--%d\r\n", RL);
- uart.printf("temperature [H] -out--%d\r\n", TH);
- uart.printf("temperature [L] -out--%d\r\n", TL);
-
- receive_dht11Timeout.attach(&receive_dht11,0.2f);
+ receiveDht11Timeout.attach(&receiveDht11,0.2f);
}
\ No newline at end of file
