web iot espressif
Dependencies: WIZWebtInterface mbed
main.cpp@0:25d52c6a3448, 2016-11-04 (annotated)
- Committer:
- 846354866
- Date:
- Fri Nov 04 01:02:50 2016 +0000
- Revision:
- 0:25d52c6a3448
- Child:
- 1:900e3ba27ddb
yangyang web version0.1
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
846354866 | 0:25d52c6a3448 | 1 | #include "mbed.h" |
846354866 | 0:25d52c6a3448 | 2 | #include "EthernetInterface.h" |
846354866 | 0:25d52c6a3448 | 3 | //#include "SDFileSystem.h" |
846354866 | 0:25d52c6a3448 | 4 | #include <stdio.h> |
846354866 | 0:25d52c6a3448 | 5 | #include <string.h> |
846354866 | 0:25d52c6a3448 | 6 | |
846354866 | 0:25d52c6a3448 | 7 | |
846354866 | 0:25d52c6a3448 | 8 | #define MAC "\x00\x08\xDC\x11\x34\x78" |
846354866 | 0:25d52c6a3448 | 9 | #define IP "192.168.1.123" |
846354866 | 0:25d52c6a3448 | 10 | #define MASK "255.255.255.0" |
846354866 | 0:25d52c6a3448 | 11 | #define GATEWAY "192.168.1.1" |
846354866 | 0:25d52c6a3448 | 12 | |
846354866 | 0:25d52c6a3448 | 13 | #define HTTPD_SERVER_PORT 80 |
846354866 | 0:25d52c6a3448 | 14 | #define HTTPD_MAX_REQ_LENGTH 1023 |
846354866 | 0:25d52c6a3448 | 15 | #define HTTPD_MAX_HDR_LENGTH 255 |
846354866 | 0:25d52c6a3448 | 16 | #define HTTPD_MAX_FNAME_LENGTH 127 |
846354866 | 0:25d52c6a3448 | 17 | #define HTTPD_MAX_DNAME_LENGTH 127 |
846354866 | 0:25d52c6a3448 | 18 | |
846354866 | 0:25d52c6a3448 | 19 | |
846354866 | 0:25d52c6a3448 | 20 | Serial uart(PA_13,PA_14); |
846354866 | 0:25d52c6a3448 | 21 | DigitalInOut myIOD10(D10); |
846354866 | 0:25d52c6a3448 | 22 | DigitalIn myInD11(D11); |
846354866 | 0:25d52c6a3448 | 23 | DigitalOut myOutD12(D12); |
846354866 | 0:25d52c6a3448 | 24 | AnalogIn myInA1(A1); |
846354866 | 0:25d52c6a3448 | 25 | Timeout button_ledTimeout; |
846354866 | 0:25d52c6a3448 | 26 | Timeout receive_dht11Timeout; |
846354866 | 0:25d52c6a3448 | 27 | |
846354866 | 0:25d52c6a3448 | 28 | unsigned char RH,RL,TH,TL; |
846354866 | 0:25d52c6a3448 | 29 | unsigned char data_byte; |
846354866 | 0:25d52c6a3448 | 30 | unsigned int U8FLAG; |
846354866 | 0:25d52c6a3448 | 31 | unsigned char status_led; |
846354866 | 0:25d52c6a3448 | 32 | unsigned char seaver_ip[] = IP; |
846354866 | 0:25d52c6a3448 | 33 | char led_control[6] = "cloce"; |
846354866 | 0:25d52c6a3448 | 34 | |
846354866 | 0:25d52c6a3448 | 35 | |
846354866 | 0:25d52c6a3448 | 36 | //SDFileSystem sd(p5, p6, p7, p8, "sd"); // LPC1768 MBD2PMD |
846354866 | 0:25d52c6a3448 | 37 | //SDFileSystem sd(P0_18, P0_17, P0_15, P0_16, "sd"); // Seeeduino Arch Pro SPI2SD |
846354866 | 0:25d52c6a3448 | 38 | //SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd"); // K64F |
846354866 | 0:25d52c6a3448 | 39 | //SDFileSystem sd(PB_3, PB_2, PB_1, PB_0, "sd"); // WIZwiki-W7500 |
846354866 | 0:25d52c6a3448 | 40 | |
846354866 | 0:25d52c6a3448 | 41 | EthernetInterface eth; |
846354866 | 0:25d52c6a3448 | 42 | TCPSocketServer server; |
846354866 | 0:25d52c6a3448 | 43 | TCPSocketConnection client; |
846354866 | 0:25d52c6a3448 | 44 | |
846354866 | 0:25d52c6a3448 | 45 | char buffer[HTTPD_MAX_REQ_LENGTH+1]; |
846354866 | 0:25d52c6a3448 | 46 | char httpHeader[HTTPD_MAX_HDR_LENGTH+1]; |
846354866 | 0:25d52c6a3448 | 47 | char fileName[HTTPD_MAX_FNAME_LENGTH+1]; |
846354866 | 0:25d52c6a3448 | 48 | char dirName[HTTPD_MAX_DNAME_LENGTH+1]; |
846354866 | 0:25d52c6a3448 | 49 | char *uristr; |
846354866 | 0:25d52c6a3448 | 50 | char *eou; |
846354866 | 0:25d52c6a3448 | 51 | char *qrystr; |
846354866 | 0:25d52c6a3448 | 52 | |
846354866 | 0:25d52c6a3448 | 53 | |
846354866 | 0:25d52c6a3448 | 54 | Ticker ledTick; |
846354866 | 0:25d52c6a3448 | 55 | |
846354866 | 0:25d52c6a3448 | 56 | void receive_dht11(); |
846354866 | 0:25d52c6a3448 | 57 | unsigned char receive_byte(); |
846354866 | 0:25d52c6a3448 | 58 | |
846354866 | 0:25d52c6a3448 | 59 | void delay(unsigned char ms) //延时模块// |
846354866 | 0:25d52c6a3448 | 60 | { |
846354866 | 0:25d52c6a3448 | 61 | unsigned int y; |
846354866 | 0:25d52c6a3448 | 62 | while(ms--) |
846354866 | 0:25d52c6a3448 | 63 | for(y=1920; y>0; y--); |
846354866 | 0:25d52c6a3448 | 64 | } |
846354866 | 0:25d52c6a3448 | 65 | |
846354866 | 0:25d52c6a3448 | 66 | void Delay_us(unsigned char us) |
846354866 | 0:25d52c6a3448 | 67 | { |
846354866 | 0:25d52c6a3448 | 68 | unsigned char y; |
846354866 | 0:25d52c6a3448 | 69 | while(us--) |
846354866 | 0:25d52c6a3448 | 70 | for(y=2; y>0; y--); |
846354866 | 0:25d52c6a3448 | 71 | } |
846354866 | 0:25d52c6a3448 | 72 | |
846354866 | 0:25d52c6a3448 | 73 | |
846354866 | 0:25d52c6a3448 | 74 | void button_led() |
846354866 | 0:25d52c6a3448 | 75 | { |
846354866 | 0:25d52c6a3448 | 76 | while(myInD11.read()) |
846354866 | 0:25d52c6a3448 | 77 | { |
846354866 | 0:25d52c6a3448 | 78 | wait(0.01f); |
846354866 | 0:25d52c6a3448 | 79 | if(!myInD11.read()) |
846354866 | 0:25d52c6a3448 | 80 | { |
846354866 | 0:25d52c6a3448 | 81 | myOutD12.write(!myOutD12.read()); |
846354866 | 0:25d52c6a3448 | 82 | status_led = myOutD12.read(); |
846354866 | 0:25d52c6a3448 | 83 | break; |
846354866 | 0:25d52c6a3448 | 84 | } |
846354866 | 0:25d52c6a3448 | 85 | } |
846354866 | 0:25d52c6a3448 | 86 | |
846354866 | 0:25d52c6a3448 | 87 | button_ledTimeout.attach(&button_led,0.1f); |
846354866 | 0:25d52c6a3448 | 88 | } |
846354866 | 0:25d52c6a3448 | 89 | |
846354866 | 0:25d52c6a3448 | 90 | void getFile(char* uri) |
846354866 | 0:25d52c6a3448 | 91 | { |
846354866 | 0:25d52c6a3448 | 92 | uart.printf("getFile %s\n", uri); |
846354866 | 0:25d52c6a3448 | 93 | strcpy(led_control, &uri[1]); |
846354866 | 0:25d52c6a3448 | 94 | //receive_dht11(); |
846354866 | 0:25d52c6a3448 | 95 | char *lstchr = strrchr(uri, NULL) -1; |
846354866 | 0:25d52c6a3448 | 96 | sprintf(httpHeader,"HTTP/1.1 200 OK\r\nContent-Type: text/html\r\nConnection: Close\r\n\r\n"); |
846354866 | 0:25d52c6a3448 | 97 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 98 | sprintf(httpHeader,"<html><head><title>hello dfrobot</title></head><body><h1> Information State</h1><ul>"); |
846354866 | 0:25d52c6a3448 | 99 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 100 | |
846354866 | 0:25d52c6a3448 | 101 | sprintf(httpHeader,"<H1>Temperature:%d Celsius</H1>", TH); |
846354866 | 0:25d52c6a3448 | 102 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 103 | sprintf(httpHeader,"<H1>Humidity:%d %%</H1>", RH); |
846354866 | 0:25d52c6a3448 | 104 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 105 | sprintf(httpHeader,"<H1>Gas Value:%d</H1>", myInA1.read_u16()); |
846354866 | 0:25d52c6a3448 | 106 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 107 | |
846354866 | 0:25d52c6a3448 | 108 | static char i = 0, j = 0, open_1 = 1, cloce_1 = 1, k; |
846354866 | 0:25d52c6a3448 | 109 | if (strncmp(led_control, "cloce", 5)==0) |
846354866 | 0:25d52c6a3448 | 110 | {uart.printf("status_led--cloce--- %d\n", status_led); |
846354866 | 0:25d52c6a3448 | 111 | if(cloce_1) |
846354866 | 0:25d52c6a3448 | 112 | { |
846354866 | 0:25d52c6a3448 | 113 | sprintf(httpHeader,"<H1>Led state:CLOCE</H1>"); |
846354866 | 0:25d52c6a3448 | 114 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 115 | myOutD12.write(0); |
846354866 | 0:25d52c6a3448 | 116 | sprintf(httpHeader,"<form action=\"http://%s/open\"><input type=\"submit\" value=\"ON/OFF\"></form>", seaver_ip); |
846354866 | 0:25d52c6a3448 | 117 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 118 | |
846354866 | 0:25d52c6a3448 | 119 | j = 1; |
846354866 | 0:25d52c6a3448 | 120 | k = status_led; |
846354866 | 0:25d52c6a3448 | 121 | cloce_1 = 0; |
846354866 | 0:25d52c6a3448 | 122 | } |
846354866 | 0:25d52c6a3448 | 123 | else if (k == status_led && j) |
846354866 | 0:25d52c6a3448 | 124 | { |
846354866 | 0:25d52c6a3448 | 125 | sprintf(httpHeader,"<H1>Led state:CLOCE</H1>"); |
846354866 | 0:25d52c6a3448 | 126 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 127 | myOutD12.write(0); |
846354866 | 0:25d52c6a3448 | 128 | sprintf(httpHeader,"<form action=\"http://%s/open\"><input type=\"submit\" value=\"ON/OFF\"></form>", seaver_ip); |
846354866 | 0:25d52c6a3448 | 129 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 130 | j = 0; |
846354866 | 0:25d52c6a3448 | 131 | } |
846354866 | 0:25d52c6a3448 | 132 | else if(status_led && !j) |
846354866 | 0:25d52c6a3448 | 133 | { |
846354866 | 0:25d52c6a3448 | 134 | sprintf(httpHeader,"<H1>Led state:OPEN</H1>"); |
846354866 | 0:25d52c6a3448 | 135 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 136 | myOutD12.write(1); |
846354866 | 0:25d52c6a3448 | 137 | sprintf(httpHeader,"<form action=\"http://%s/cloce\"><input type=\"submit\" value=\"ON/OFF\"></form>", seaver_ip); |
846354866 | 0:25d52c6a3448 | 138 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 139 | } |
846354866 | 0:25d52c6a3448 | 140 | else if(!status_led && !j) |
846354866 | 0:25d52c6a3448 | 141 | { |
846354866 | 0:25d52c6a3448 | 142 | sprintf(httpHeader,"<H1>Led state:CLOCE</H1>"); |
846354866 | 0:25d52c6a3448 | 143 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 144 | myOutD12.write(0); |
846354866 | 0:25d52c6a3448 | 145 | sprintf(httpHeader,"<form action=\"http://%s/open\"><input type=\"submit\" value=\"ON/OFF\"></form>", seaver_ip); |
846354866 | 0:25d52c6a3448 | 146 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 147 | } |
846354866 | 0:25d52c6a3448 | 148 | |
846354866 | 0:25d52c6a3448 | 149 | open_1 = 1; |
846354866 | 0:25d52c6a3448 | 150 | } |
846354866 | 0:25d52c6a3448 | 151 | else if (strncmp(led_control, "open", 4)==0) |
846354866 | 0:25d52c6a3448 | 152 | {uart.printf("status_led--open--- %d\n", status_led); |
846354866 | 0:25d52c6a3448 | 153 | if(open_1) |
846354866 | 0:25d52c6a3448 | 154 | { |
846354866 | 0:25d52c6a3448 | 155 | sprintf(httpHeader,"<H1>Led state:OPEN</H1>"); |
846354866 | 0:25d52c6a3448 | 156 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 157 | myOutD12.write(1); |
846354866 | 0:25d52c6a3448 | 158 | sprintf(httpHeader,"<form action=\"http://%s/cloce\"><input type=\"submit\" value=\"ON/OFF\"></form>", seaver_ip); |
846354866 | 0:25d52c6a3448 | 159 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 160 | |
846354866 | 0:25d52c6a3448 | 161 | i = 1; |
846354866 | 0:25d52c6a3448 | 162 | k = status_led; |
846354866 | 0:25d52c6a3448 | 163 | open_1 = 0; |
846354866 | 0:25d52c6a3448 | 164 | } |
846354866 | 0:25d52c6a3448 | 165 | else if(k == status_led && i) |
846354866 | 0:25d52c6a3448 | 166 | { |
846354866 | 0:25d52c6a3448 | 167 | sprintf(httpHeader,"<H1>Led state:OPEN</H1>"); |
846354866 | 0:25d52c6a3448 | 168 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 169 | myOutD12.write(1); |
846354866 | 0:25d52c6a3448 | 170 | sprintf(httpHeader,"<form action=\"http://%s/cloce\"><input type=\"submit\" value=\"ON/OFF\"></form>", seaver_ip); |
846354866 | 0:25d52c6a3448 | 171 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 172 | i = 0; |
846354866 | 0:25d52c6a3448 | 173 | } |
846354866 | 0:25d52c6a3448 | 174 | else if (status_led && !i)// 0 |
846354866 | 0:25d52c6a3448 | 175 | { |
846354866 | 0:25d52c6a3448 | 176 | sprintf(httpHeader,"<H1>Led state:OPEN</H1>"); |
846354866 | 0:25d52c6a3448 | 177 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 178 | myOutD12.write(1); |
846354866 | 0:25d52c6a3448 | 179 | sprintf(httpHeader,"<form action=\"http://%s/cloce\"><input type=\"submit\" value=\"ON/OFF\"></form>", seaver_ip); |
846354866 | 0:25d52c6a3448 | 180 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 181 | } |
846354866 | 0:25d52c6a3448 | 182 | else if (!status_led && !i) |
846354866 | 0:25d52c6a3448 | 183 | { |
846354866 | 0:25d52c6a3448 | 184 | sprintf(httpHeader,"<H1>Led state:CLOCE</H1>"); |
846354866 | 0:25d52c6a3448 | 185 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 186 | myOutD12.write(0); |
846354866 | 0:25d52c6a3448 | 187 | sprintf(httpHeader,"<form action=\"http://%s/open\"><input type=\"submit\" value=\"ON/OFF\"></form>", seaver_ip); |
846354866 | 0:25d52c6a3448 | 188 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 189 | } |
846354866 | 0:25d52c6a3448 | 190 | |
846354866 | 0:25d52c6a3448 | 191 | cloce_1 = 1; |
846354866 | 0:25d52c6a3448 | 192 | } |
846354866 | 0:25d52c6a3448 | 193 | |
846354866 | 0:25d52c6a3448 | 194 | if (strncmp(led_control, "", 1)==0) |
846354866 | 0:25d52c6a3448 | 195 | { |
846354866 | 0:25d52c6a3448 | 196 | if(myOutD12.read()) |
846354866 | 0:25d52c6a3448 | 197 | { |
846354866 | 0:25d52c6a3448 | 198 | sprintf(httpHeader,"<H1>Led state:OPEN</H1>"); |
846354866 | 0:25d52c6a3448 | 199 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 200 | myOutD12.write(1); |
846354866 | 0:25d52c6a3448 | 201 | |
846354866 | 0:25d52c6a3448 | 202 | sprintf(httpHeader,"<form action=\"http://%s/cloce\"><input type=\"submit\" value=\"ON/OFF\"></form>", seaver_ip); |
846354866 | 0:25d52c6a3448 | 203 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 204 | status_led = 1; |
846354866 | 0:25d52c6a3448 | 205 | } |
846354866 | 0:25d52c6a3448 | 206 | else |
846354866 | 0:25d52c6a3448 | 207 | { |
846354866 | 0:25d52c6a3448 | 208 | sprintf(httpHeader,"<H1>Led state:CLOCE</H1>"); |
846354866 | 0:25d52c6a3448 | 209 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 210 | myOutD12.write(0); |
846354866 | 0:25d52c6a3448 | 211 | |
846354866 | 0:25d52c6a3448 | 212 | sprintf(httpHeader,"<form action=\"http://%s/open\"><input type=\"submit\" value=\"ON/OFF\"></form>", seaver_ip); |
846354866 | 0:25d52c6a3448 | 213 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 214 | status_led = 0; |
846354866 | 0:25d52c6a3448 | 215 | } |
846354866 | 0:25d52c6a3448 | 216 | } |
846354866 | 0:25d52c6a3448 | 217 | //status_led = myOutD12.read(); |
846354866 | 0:25d52c6a3448 | 218 | /*if(!status_led) |
846354866 | 0:25d52c6a3448 | 219 | { |
846354866 | 0:25d52c6a3448 | 220 | sprintf(httpHeader,"<H1>Led state:OPEN </H1>"); |
846354866 | 0:25d52c6a3448 | 221 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 222 | myOutD12.write(1); |
846354866 | 0:25d52c6a3448 | 223 | }else |
846354866 | 0:25d52c6a3448 | 224 | { |
846354866 | 0:25d52c6a3448 | 225 | sprintf(httpHeader,"<H1>Led state:CLOCE </H1>"); |
846354866 | 0:25d52c6a3448 | 226 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 227 | myOutD12.write(0); |
846354866 | 0:25d52c6a3448 | 228 | } |
846354866 | 0:25d52c6a3448 | 229 | |
846354866 | 0:25d52c6a3448 | 230 | |
846354866 | 0:25d52c6a3448 | 231 | sprintf(httpHeader,"<form action=\"http://%s/%s\"><input type=\"submit\" value=\"ON/OFF\"></form>", seaver_ip, led_control); |
846354866 | 0:25d52c6a3448 | 232 | client.send(httpHeader,strlen(httpHeader));*/ |
846354866 | 0:25d52c6a3448 | 233 | |
846354866 | 0:25d52c6a3448 | 234 | sprintf(httpHeader,"<meta http-equiv=\"refresh\" content=\"1\">"); |
846354866 | 0:25d52c6a3448 | 235 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 236 | |
846354866 | 0:25d52c6a3448 | 237 | sprintf(httpHeader,"</ul></body></html>"); |
846354866 | 0:25d52c6a3448 | 238 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 239 | } |
846354866 | 0:25d52c6a3448 | 240 | |
846354866 | 0:25d52c6a3448 | 241 | int main (void) |
846354866 | 0:25d52c6a3448 | 242 | { |
846354866 | 0:25d52c6a3448 | 243 | uart.baud(115200); |
846354866 | 0:25d52c6a3448 | 244 | uart.printf("Initializing\r\n"); |
846354866 | 0:25d52c6a3448 | 245 | // EthernetInterface eth; |
846354866 | 0:25d52c6a3448 | 246 | uart.printf("Initializing Ethernet\r\n"); |
846354866 | 0:25d52c6a3448 | 247 | //eth.init(); //Use DHCP |
846354866 | 0:25d52c6a3448 | 248 | //eth.init((uint8_t*)MAC); // Use DHCP for WIZnetInterface |
846354866 | 0:25d52c6a3448 | 249 | eth.init((uint8_t*)MAC,IP,MASK,GATEWAY); //IP,mask,Gateway |
846354866 | 0:25d52c6a3448 | 250 | uart.printf("Connecting\r\n"); |
846354866 | 0:25d52c6a3448 | 251 | eth.connect(); |
846354866 | 0:25d52c6a3448 | 252 | uart.printf("IP Address is %s\r\n", eth.getIPAddress()); |
846354866 | 0:25d52c6a3448 | 253 | |
846354866 | 0:25d52c6a3448 | 254 | // TCPSocketServer server; |
846354866 | 0:25d52c6a3448 | 255 | server.bind(HTTPD_SERVER_PORT); |
846354866 | 0:25d52c6a3448 | 256 | server.listen(); |
846354866 | 0:25d52c6a3448 | 257 | uart.printf("Server Listening\r\n"); |
846354866 | 0:25d52c6a3448 | 258 | |
846354866 | 0:25d52c6a3448 | 259 | button_ledTimeout.attach(&button_led,0.1f); |
846354866 | 0:25d52c6a3448 | 260 | //receive_dht11Timeout.attach(&receive_dht11,0.2f); |
846354866 | 0:25d52c6a3448 | 261 | |
846354866 | 0:25d52c6a3448 | 262 | while (true) { |
846354866 | 0:25d52c6a3448 | 263 | uart.printf("\nWait for new connection...\r\n"); |
846354866 | 0:25d52c6a3448 | 264 | server.accept(client); |
846354866 | 0:25d52c6a3448 | 265 | client.set_blocking(false, 1500); // Timeout after (1.5)s |
846354866 | 0:25d52c6a3448 | 266 | |
846354866 | 0:25d52c6a3448 | 267 | uart.printf("Connection from: %s\r\n", client.get_address()); |
846354866 | 0:25d52c6a3448 | 268 | uart.printf("%s():%d\n",__FUNCTION__, __LINE__); |
846354866 | 0:25d52c6a3448 | 269 | while (true) { |
846354866 | 0:25d52c6a3448 | 270 | //led2 = true; |
846354866 | 0:25d52c6a3448 | 271 | int n = client.receive(buffer, sizeof(buffer)); |
846354866 | 0:25d52c6a3448 | 272 | if (n <= 0) break; |
846354866 | 0:25d52c6a3448 | 273 | uart.printf("Recieved Data: %d\r\n\r\n%.*s\r\n",n,n,buffer); |
846354866 | 0:25d52c6a3448 | 274 | if (n >= 1024) { |
846354866 | 0:25d52c6a3448 | 275 | sprintf(httpHeader,"HTTP/1.1 413 Request Entity Too Large \r\nContent-Type: text\r\nConnection: Close\r\n\r\n"); |
846354866 | 0:25d52c6a3448 | 276 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 277 | client.send(buffer,n); |
846354866 | 0:25d52c6a3448 | 278 | break; |
846354866 | 0:25d52c6a3448 | 279 | } else { |
846354866 | 0:25d52c6a3448 | 280 | uart.printf("%s():%d\n",__FUNCTION__, __LINE__); |
846354866 | 0:25d52c6a3448 | 281 | buffer[n]=0; |
846354866 | 0:25d52c6a3448 | 282 | } |
846354866 | 0:25d52c6a3448 | 283 | if (!strncmp(buffer, "GET ", 4)) { |
846354866 | 0:25d52c6a3448 | 284 | uart.printf("%s():%d\n",__FUNCTION__, __LINE__); |
846354866 | 0:25d52c6a3448 | 285 | uristr = buffer + 4; |
846354866 | 0:25d52c6a3448 | 286 | eou = strstr(uristr, " "); |
846354866 | 0:25d52c6a3448 | 287 | if (eou == NULL) { |
846354866 | 0:25d52c6a3448 | 288 | uart.printf("%s():%d\n",__FUNCTION__, __LINE__); |
846354866 | 0:25d52c6a3448 | 289 | sprintf(httpHeader,"HTTP/1.1 400 Bad Request \r\nContent-Type: text\r\nConnection: Close\r\n\r\n"); |
846354866 | 0:25d52c6a3448 | 290 | client.send(httpHeader,strlen(httpHeader)); |
846354866 | 0:25d52c6a3448 | 291 | client.send(buffer,n); |
846354866 | 0:25d52c6a3448 | 292 | } else { |
846354866 | 0:25d52c6a3448 | 293 | uart.printf("%s():%d\n",__FUNCTION__, __LINE__); |
846354866 | 0:25d52c6a3448 | 294 | *eou = 0; |
846354866 | 0:25d52c6a3448 | 295 | getFile(uristr); |
846354866 | 0:25d52c6a3448 | 296 | } |
846354866 | 0:25d52c6a3448 | 297 | } |
846354866 | 0:25d52c6a3448 | 298 | } |
846354866 | 0:25d52c6a3448 | 299 | //led2 = false; |
846354866 | 0:25d52c6a3448 | 300 | client.close(); |
846354866 | 0:25d52c6a3448 | 301 | } |
846354866 | 0:25d52c6a3448 | 302 | } |
846354866 | 0:25d52c6a3448 | 303 | |
846354866 | 0:25d52c6a3448 | 304 | unsigned char receive_byte()//接收一个字节// |
846354866 | 0:25d52c6a3448 | 305 | { |
846354866 | 0:25d52c6a3448 | 306 | unsigned char i,temp; |
846354866 | 0:25d52c6a3448 | 307 | for(i=0;i<8;i++)//接收8bit的数据 |
846354866 | 0:25d52c6a3448 | 308 | { |
846354866 | 0:25d52c6a3448 | 309 | U8FLAG = 2; |
846354866 | 0:25d52c6a3448 | 310 | while(!myIOD10.read() && U8FLAG++);//等待50us的低电平开始信号结束 |
846354866 | 0:25d52c6a3448 | 311 | Delay_us(30); |
846354866 | 0:25d52c6a3448 | 312 | temp=0;//时间为 26us-28us数据'0' |
846354866 | 0:25d52c6a3448 | 313 | if(myIOD10.read()==1) |
846354866 | 0:25d52c6a3448 | 314 | temp=1;//如果 26us-28us'1' |
846354866 | 0:25d52c6a3448 | 315 | U8FLAG = 2; |
846354866 | 0:25d52c6a3448 | 316 | while(myIOD10.read() && U8FLAG++);//'0'为 26us-28us'1'为 70us |
846354866 | 0:25d52c6a3448 | 317 | //超时则跳出for循环 |
846354866 | 0:25d52c6a3448 | 318 | if(U8FLAG==1)break; |
846354866 | 0:25d52c6a3448 | 319 | data_byte<<=1;// |
846354866 | 0:25d52c6a3448 | 320 | data_byte|=temp; |
846354866 | 0:25d52c6a3448 | 321 | } |
846354866 | 0:25d52c6a3448 | 322 | return data_byte; |
846354866 | 0:25d52c6a3448 | 323 | } |
846354866 | 0:25d52c6a3448 | 324 | |
846354866 | 0:25d52c6a3448 | 325 | void receive_dht11()//接收数据// |
846354866 | 0:25d52c6a3448 | 326 | { |
846354866 | 0:25d52c6a3448 | 327 | unsigned char T_H,T_L,R_H,R_L,check,num_check; |
846354866 | 0:25d52c6a3448 | 328 | |
846354866 | 0:25d52c6a3448 | 329 | // REQUEST SAMPLE |
846354866 | 0:25d52c6a3448 | 330 | myIOD10.output(); |
846354866 | 0:25d52c6a3448 | 331 | myIOD10.write(0); |
846354866 | 0:25d52c6a3448 | 332 | delay(20);//wait(0.020f); |
846354866 | 0:25d52c6a3448 | 333 | |
846354866 | 0:25d52c6a3448 | 334 | myIOD10.write(1); |
846354866 | 0:25d52c6a3448 | 335 | Delay_us(25);//wait(26/1000*0.001f); |
846354866 | 0:25d52c6a3448 | 336 | myIOD10.write(1); |
846354866 | 0:25d52c6a3448 | 337 | |
846354866 | 0:25d52c6a3448 | 338 | myIOD10.input(); |
846354866 | 0:25d52c6a3448 | 339 | if(!myIOD10.read())//判断从机是否有低电平响应信号// |
846354866 | 0:25d52c6a3448 | 340 | { |
846354866 | 0:25d52c6a3448 | 341 | while(!myIOD10.read());//判断从机发出 80us 的低电平响应信号是否结束// |
846354866 | 0:25d52c6a3448 | 342 | while(myIOD10.read());//判断从机发出 80us |
846354866 | 0:25d52c6a3448 | 343 | R_H=receive_byte();//湿度高位 |
846354866 | 0:25d52c6a3448 | 344 | R_L=receive_byte();//湿度低位 |
846354866 | 0:25d52c6a3448 | 345 | T_H=receive_byte();//温度高位 |
846354866 | 0:25d52c6a3448 | 346 | T_L=receive_byte();//温度低位 |
846354866 | 0:25d52c6a3448 | 347 | check=receive_byte();//校验位 |
846354866 | 0:25d52c6a3448 | 348 | uart.printf("--R_H--%d---R_L---%d--T_H--%d---T_L---%d\r\n", R_H,R_L,T_H,T_L); |
846354866 | 0:25d52c6a3448 | 349 | Delay_us(20); |
846354866 | 0:25d52c6a3448 | 350 | num_check=R_H+R_L+T_H+T_L;uart.printf("--num_check--%d---check---%d\r\n", num_check,check); |
846354866 | 0:25d52c6a3448 | 351 | if(num_check==check)//判断读到的四个数据之和是否与校验位相同 |
846354866 | 0:25d52c6a3448 | 352 | { |
846354866 | 0:25d52c6a3448 | 353 | RH=R_H; |
846354866 | 0:25d52c6a3448 | 354 | RL=R_L; |
846354866 | 0:25d52c6a3448 | 355 | TH=T_H; |
846354866 | 0:25d52c6a3448 | 356 | TL=T_L; |
846354866 | 0:25d52c6a3448 | 357 | check=num_check; |
846354866 | 0:25d52c6a3448 | 358 | } |
846354866 | 0:25d52c6a3448 | 359 | } |
846354866 | 0:25d52c6a3448 | 360 | |
846354866 | 0:25d52c6a3448 | 361 | /*uart.printf("humidity [H] -out--%d\r\n", RH); |
846354866 | 0:25d52c6a3448 | 362 | uart.printf("humidity [L] -out--%d\r\n", RL); |
846354866 | 0:25d52c6a3448 | 363 | uart.printf("temperature [H] -out--%d\r\n", TH); |
846354866 | 0:25d52c6a3448 | 364 | uart.printf("temperature [L] -out--%d\r\n", TL);*/ |
846354866 | 0:25d52c6a3448 | 365 | |
846354866 | 0:25d52c6a3448 | 366 | receive_dht11Timeout.attach(&receive_dht11,0.2f); |
846354866 | 0:25d52c6a3448 | 367 | } |