yangyang
Dependencies: WIZnetInterface mbed
Fork of espyun1 by
main.cpp@7:bda2a6a118f7, 2016-11-09 (annotated)
- Committer:
- 846354866
- Date:
- Wed Nov 09 09:25:49 2016 +0000
- Revision:
- 7:bda2a6a118f7
- Parent:
- 6:bc4901a948b1
sensor iot for espressif(no chinese) version-0.1
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jehoon | 0:af541535ef54 | 1 | #include "mbed.h" |
jehoon | 0:af541535ef54 | 2 | #include "EthernetInterface.h" |
jh_ndm | 1:3550659bd872 | 3 | #include "cJSON.h" |
jehoon | 0:af541535ef54 | 4 | |
846354866 | 4:e1d2c6f94c69 | 5 | DigitalInOut myIOD10(D10); |
846354866 | 7:bda2a6a118f7 | 6 | DigitalIn myInD11(D11); |
846354866 | 4:e1d2c6f94c69 | 7 | DigitalOut myOutD12(D12); |
846354866 | 4:e1d2c6f94c69 | 8 | AnalogIn myInA1(A1); |
jh_ndm | 1:3550659bd872 | 9 | int socketPort = 8000; |
jh_ndm | 1:3550659bd872 | 10 | int httpPort = 80; |
jh_ndm | 1:3550659bd872 | 11 | |
jh_ndm | 1:3550659bd872 | 12 | Serial pc(PA_13,PA_14); |
jh_ndm | 1:3550659bd872 | 13 | |
jh_ndm | 1:3550659bd872 | 14 | int MallocSize = 800*sizeof(char); |
846354866 | 7:bda2a6a118f7 | 15 | //bool socket_GET(TCPSocketConnection &conn); |
jh_ndm | 1:3550659bd872 | 16 | bool http_GET(TCPSocketConnection &conn); |
846354866 | 4:e1d2c6f94c69 | 17 | bool http_POST(TCPSocketConnection &conn,int vall); |
846354866 | 7:bda2a6a118f7 | 18 | //bool socket_POST(TCPSocketConnection &conn,int vall); |
846354866 | 7:bda2a6a118f7 | 19 | //bool closeConnect(TCPSocketConnection &conn); |
846354866 | 4:e1d2c6f94c69 | 20 | void receive_dht11(); |
846354866 | 4:e1d2c6f94c69 | 21 | unsigned char receive_byte(); |
846354866 | 7:bda2a6a118f7 | 22 | void button_led(); |
846354866 | 4:e1d2c6f94c69 | 23 | Timeout receive_dht11Timeout; |
846354866 | 7:bda2a6a118f7 | 24 | Timeout button_ledTimeout; |
846354866 | 4:e1d2c6f94c69 | 25 | |
846354866 | 4:e1d2c6f94c69 | 26 | void delay(unsigned char ms) |
846354866 | 4:e1d2c6f94c69 | 27 | { |
846354866 | 4:e1d2c6f94c69 | 28 | unsigned int y; |
846354866 | 4:e1d2c6f94c69 | 29 | while(ms--) |
846354866 | 4:e1d2c6f94c69 | 30 | for(y=1920; y>0; y--); |
846354866 | 4:e1d2c6f94c69 | 31 | } |
846354866 | 4:e1d2c6f94c69 | 32 | |
846354866 | 4:e1d2c6f94c69 | 33 | void Delay_us(unsigned char us) |
846354866 | 4:e1d2c6f94c69 | 34 | { |
846354866 | 4:e1d2c6f94c69 | 35 | unsigned char y; |
846354866 | 4:e1d2c6f94c69 | 36 | while(us--) |
846354866 | 4:e1d2c6f94c69 | 37 | for(y=2; y>0; y--); |
846354866 | 4:e1d2c6f94c69 | 38 | } |
jh_ndm | 1:3550659bd872 | 39 | |
jh_ndm | 1:3550659bd872 | 40 | float val; |
jh_ndm | 1:3550659bd872 | 41 | bool out=false; |
846354866 | 4:e1d2c6f94c69 | 42 | unsigned char RH,RL,TH,TL; |
846354866 | 4:e1d2c6f94c69 | 43 | unsigned char data_byte; |
846354866 | 4:e1d2c6f94c69 | 44 | unsigned int U8FLAG; |
846354866 | 4:e1d2c6f94c69 | 45 | static unsigned char num = 4; |
846354866 | 4:e1d2c6f94c69 | 46 | const char receive_module[4][5] = {"Led", "Gas", "Hum", "Temp", }; |
846354866 | 7:bda2a6a118f7 | 47 | #if 1 |
jh_ndm | 1:3550659bd872 | 48 | int main() { |
jehoon | 0:af541535ef54 | 49 | int phy_link; |
jh_ndm | 1:3550659bd872 | 50 | pc.printf("Wait a second...\r\n"); |
jh_ndm | 1:3550659bd872 | 51 | uint8_t mac_addr[6] = {0x78, 0x08, 0xDC, 0x1c, 0xa8, 0x95}; |
846354866 | 4:e1d2c6f94c69 | 52 | receive_dht11Timeout.attach(&receive_dht11,0.2f); |
846354866 | 7:bda2a6a118f7 | 53 | button_ledTimeout.attach(&button_led,0.1f); |
jehoon | 0:af541535ef54 | 54 | |
jehoon | 0:af541535ef54 | 55 | EthernetInterface eth; |
jehoon | 0:af541535ef54 | 56 | eth.init(mac_addr); //Use DHCP |
jehoon | 0:af541535ef54 | 57 | eth.connect(); |
jh_ndm | 1:3550659bd872 | 58 | pc.printf("start IP Address is %s\r\n", eth.getIPAddress()); |
846354866 | 7:bda2a6a118f7 | 59 | |
jh_ndm | 1:3550659bd872 | 60 | do{ |
jh_ndm | 1:3550659bd872 | 61 | phy_link = eth.ethernet_link(); |
jh_ndm | 1:3550659bd872 | 62 | pc.printf("..."); |
846354866 | 7:bda2a6a118f7 | 63 | pc.printf("phy_link=%d...", phy_link); |
jh_ndm | 1:3550659bd872 | 64 | wait(2); |
jh_ndm | 1:3550659bd872 | 65 | }while(!phy_link); |
jh_ndm | 1:3550659bd872 | 66 | printf("\r\n"); |
846354866 | 7:bda2a6a118f7 | 67 | |
jh_ndm | 1:3550659bd872 | 68 | pc.printf("IP Address is %s\r\n", eth.getIPAddress()); |
jh_ndm | 1:3550659bd872 | 69 | |
jh_ndm | 1:3550659bd872 | 70 | TCPSocketConnection conn; |
jh_ndm | 1:3550659bd872 | 71 | while(true) |
jh_ndm | 1:3550659bd872 | 72 | { |
846354866 | 7:bda2a6a118f7 | 73 | //wait(0.5f); |
846354866 | 4:e1d2c6f94c69 | 74 | if(num) |
846354866 | 4:e1d2c6f94c69 | 75 | { |
846354866 | 4:e1d2c6f94c69 | 76 | if (num == 4) |
846354866 | 4:e1d2c6f94c69 | 77 | val = TH; |
846354866 | 4:e1d2c6f94c69 | 78 | else if (num == 3) |
846354866 | 4:e1d2c6f94c69 | 79 | val = RH; |
846354866 | 4:e1d2c6f94c69 | 80 | else if (num == 2) |
846354866 | 7:bda2a6a118f7 | 81 | val = myInA1.read_u16(); |
846354866 | 4:e1d2c6f94c69 | 82 | else if (num == 1) |
846354866 | 6:bc4901a948b1 | 83 | val = myOutD12.read(); |
846354866 | 4:e1d2c6f94c69 | 84 | } |
846354866 | 7:bda2a6a118f7 | 85 | //int mathtest = ceil(val);//math. |
jh_ndm | 1:3550659bd872 | 86 | pc.printf("start http_post\r\n"); |
846354866 | 6:bc4901a948b1 | 87 | wait(1); |
846354866 | 7:bda2a6a118f7 | 88 | |
846354866 | 7:bda2a6a118f7 | 89 | conn.connect("iot.espressif.cn", httpPort); |
jh_ndm | 1:3550659bd872 | 90 | |
846354866 | 7:bda2a6a118f7 | 91 | http_POST(conn, val); |
jh_ndm | 1:3550659bd872 | 92 | |
846354866 | 7:bda2a6a118f7 | 93 | conn.close(); |
846354866 | 4:e1d2c6f94c69 | 94 | val = 0.0; |
846354866 | 6:bc4901a948b1 | 95 | //mathtest = 0; |
jh_ndm | 1:3550659bd872 | 96 | |
jh_ndm | 1:3550659bd872 | 97 | if(out)break; |
jh_ndm | 1:3550659bd872 | 98 | } |
846354866 | 7:bda2a6a118f7 | 99 | |
846354866 | 7:bda2a6a118f7 | 100 | //conn.close(); |
846354866 | 7:bda2a6a118f7 | 101 | eth.disconnect(); |
846354866 | 7:bda2a6a118f7 | 102 | pc.printf("out the program!\r\n"); |
846354866 | 7:bda2a6a118f7 | 103 | return 0; |
846354866 | 7:bda2a6a118f7 | 104 | } |
846354866 | 7:bda2a6a118f7 | 105 | #else |
846354866 | 7:bda2a6a118f7 | 106 | |
846354866 | 7:bda2a6a118f7 | 107 | int main() { |
846354866 | 7:bda2a6a118f7 | 108 | pc.printf("Wait a second...\r\n"); |
846354866 | 7:bda2a6a118f7 | 109 | uint8_t mac_addr[6] = {0x78, 0x08, 0xDC, 0x1c, 0xa8, 0x95}; |
846354866 | 7:bda2a6a118f7 | 110 | |
846354866 | 7:bda2a6a118f7 | 111 | EthernetInterface eth; |
846354866 | 7:bda2a6a118f7 | 112 | eth.init(mac_addr); //Use DHCP |
846354866 | 7:bda2a6a118f7 | 113 | eth.connect(); |
846354866 | 7:bda2a6a118f7 | 114 | pc.printf("start IP Address is %s\r\n", eth.getIPAddress()); |
846354866 | 7:bda2a6a118f7 | 115 | eth.ethernet_link(); |
846354866 | 7:bda2a6a118f7 | 116 | pc.printf("IP Address is %s\r\n", eth.getIPAddress()); |
846354866 | 7:bda2a6a118f7 | 117 | |
846354866 | 7:bda2a6a118f7 | 118 | TCPSocketConnection conn; |
846354866 | 7:bda2a6a118f7 | 119 | |
846354866 | 7:bda2a6a118f7 | 120 | |
846354866 | 7:bda2a6a118f7 | 121 | while(true) |
846354866 | 7:bda2a6a118f7 | 122 | { |
846354866 | 7:bda2a6a118f7 | 123 | int ret = 0; |
846354866 | 7:bda2a6a118f7 | 124 | pc.printf("start http_post\r\n"); |
846354866 | 7:bda2a6a118f7 | 125 | //ret = conn.connect("192.168.1.41", 10086); |
846354866 | 7:bda2a6a118f7 | 126 | ret = conn.connect("iot.espressif.cn", httpPort); |
846354866 | 7:bda2a6a118f7 | 127 | |
846354866 | 7:bda2a6a118f7 | 128 | pc.printf("connect ret=%d\n",ret); |
846354866 | 7:bda2a6a118f7 | 129 | ret = conn.send_all("asdfghh", 7);//http_cmd for http,pJSON for |
846354866 | 7:bda2a6a118f7 | 130 | pc.printf("send ret=%d\n",ret); |
846354866 | 7:bda2a6a118f7 | 131 | wait(1.0f); |
846354866 | 7:bda2a6a118f7 | 132 | ret = conn.close(); |
846354866 | 7:bda2a6a118f7 | 133 | pc.printf("close ret=%d\n",ret); |
846354866 | 7:bda2a6a118f7 | 134 | wait(1.0f); |
846354866 | 7:bda2a6a118f7 | 135 | } |
846354866 | 7:bda2a6a118f7 | 136 | |
846354866 | 7:bda2a6a118f7 | 137 | |
jh_ndm | 1:3550659bd872 | 138 | eth.disconnect(); |
jh_ndm | 1:3550659bd872 | 139 | pc.printf("out the program!\r\n"); |
jh_ndm | 1:3550659bd872 | 140 | return 0; |
jh_ndm | 1:3550659bd872 | 141 | } |
jh_ndm | 1:3550659bd872 | 142 | |
846354866 | 7:bda2a6a118f7 | 143 | #endif |
846354866 | 4:e1d2c6f94c69 | 144 | /*http POST*/ |
846354866 | 4:e1d2c6f94c69 | 145 | bool http_POST(TCPSocketConnection &conn, int val) |
846354866 | 4:e1d2c6f94c69 | 146 | { |
846354866 | 7:bda2a6a118f7 | 147 | pc.printf("%s():%d\n",__FUNCTION__, __LINE__); |
846354866 | 4:e1d2c6f94c69 | 148 | //wait(0.5); |
846354866 | 7:bda2a6a118f7 | 149 | /*if(conn.is_connected()){ |
846354866 | 4:e1d2c6f94c69 | 150 | pc.printf("connect is already ok!\r\n"); |
846354866 | 7:bda2a6a118f7 | 151 | }else{pc.printf("%s():%d\n",__FUNCTION__, __LINE__); |
846354866 | 4:e1d2c6f94c69 | 152 | if(!conn.connect("iot.espressif.cn", httpPort)) //80 for http,8000 for socket |
846354866 | 4:e1d2c6f94c69 | 153 | pc.printf("connect OK!\r\n"); |
846354866 | 4:e1d2c6f94c69 | 154 | else{ |
846354866 | 4:e1d2c6f94c69 | 155 | pc.printf("connct ERR!\r\n"); |
846354866 | 4:e1d2c6f94c69 | 156 | out = true; |
846354866 | 4:e1d2c6f94c69 | 157 | return false; |
846354866 | 4:e1d2c6f94c69 | 158 | } |
846354866 | 7:bda2a6a118f7 | 159 | }*///conn.connect("iot.espressif.cn", httpPort); |
846354866 | 7:bda2a6a118f7 | 160 | |
846354866 | 4:e1d2c6f94c69 | 161 | cJSON* http_post=NULL; |
846354866 | 4:e1d2c6f94c69 | 162 | http_post = cJSON_CreateObject(); |
846354866 | 4:e1d2c6f94c69 | 163 | if(NULL == http_post) |
846354866 | 4:e1d2c6f94c69 | 164 | { |
846354866 | 4:e1d2c6f94c69 | 165 | pc.printf("OUT4\r\n"); |
846354866 | 4:e1d2c6f94c69 | 166 | out = true; |
846354866 | 4:e1d2c6f94c69 | 167 | return false; |
846354866 | 4:e1d2c6f94c69 | 168 | } |
846354866 | 7:bda2a6a118f7 | 169 | |
846354866 | 4:e1d2c6f94c69 | 170 | cJSON* http_post_json=NULL; |
846354866 | 4:e1d2c6f94c69 | 171 | http_post_json = cJSON_CreateObject(); |
846354866 | 4:e1d2c6f94c69 | 172 | if(NULL == http_post_json) |
846354866 | 4:e1d2c6f94c69 | 173 | { |
846354866 | 4:e1d2c6f94c69 | 174 | cJSON_Delete(http_post); |
846354866 | 4:e1d2c6f94c69 | 175 | pc.printf("OUT5\r\n"); |
846354866 | 4:e1d2c6f94c69 | 176 | out = true; |
846354866 | 4:e1d2c6f94c69 | 177 | return false; |
846354866 | 4:e1d2c6f94c69 | 178 | } |
846354866 | 4:e1d2c6f94c69 | 179 | cJSON_AddNumberToObject(http_post_json, "x", val); |
846354866 | 4:e1d2c6f94c69 | 180 | //cJSON_AddNumberToObject(http_post_json, "y", 2); |
846354866 | 4:e1d2c6f94c69 | 181 | //cJSON_AddNumberToObject(http_post_json, "z", 2); |
846354866 | 4:e1d2c6f94c69 | 182 | cJSON_AddItemToObject(http_post, "datapoint", http_post_json); |
846354866 | 4:e1d2c6f94c69 | 183 | char* pJSON_http_post = cJSON_PrintUnformatted(http_post); |
846354866 | 7:bda2a6a118f7 | 184 | |
846354866 | 4:e1d2c6f94c69 | 185 | if(NULL == pJSON_http_post) |
846354866 | 4:e1d2c6f94c69 | 186 | { |
846354866 | 4:e1d2c6f94c69 | 187 | cJSON_Delete(http_post); |
846354866 | 4:e1d2c6f94c69 | 188 | pc.printf("OUT6\r\n"); |
846354866 | 4:e1d2c6f94c69 | 189 | out = true; |
846354866 | 4:e1d2c6f94c69 | 190 | return false; |
846354866 | 4:e1d2c6f94c69 | 191 | } |
846354866 | 4:e1d2c6f94c69 | 192 | |
846354866 | 4:e1d2c6f94c69 | 193 | //Pay attention to out of memory |
846354866 | 4:e1d2c6f94c69 | 194 | //char http_POST_cmd[500] = "POST /v1/datastreams/jhtest/datapoint/ HTTP/1.1\r\nUser-Agent: curl/7.22.0 (i686-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3\r\n"\ |
846354866 | 4:e1d2c6f94c69 | 195 | // "Host:iot.espressif.cn\r\nAccept: */*\r\nAuthorization: token ebe1671e9d9f42a5231d017ec550552b9bae2cdf\r\n"\ |
846354866 | 4:e1d2c6f94c69 | 196 | // "Content-Length: 33\r\nContent-Type: application/x-www-form-urlencoded\r\n\r\n"; |
846354866 | 4:e1d2c6f94c69 | 197 | char http_POST_cmd[500];// = "POST /v1/datastreams/test/datapoint/ HTTP/1.1\r\nUser-Agent: curl/7.22.0 (i686-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3\r\n"\ |
846354866 | 4:e1d2c6f94c69 | 198 | // "Host:iot.espressif.cn\r\nAccept: */*\r\nAuthorization: token b1e92cf17fe4482647924941949ab2b07ffab548\r\n"\ |
846354866 | 4:e1d2c6f94c69 | 199 | // "Content-Length: "; |
846354866 | 7:bda2a6a118f7 | 200 | sprintf(http_POST_cmd,"POST /v1/datastreams/%s/datapoint/ HTTP/1.1\r\nUser-Agent: curl/7.35.0\r\n"\ |
846354866 | 4:e1d2c6f94c69 | 201 | "Host:iot.espressif.cn\r\nAccept: */*\r\nAuthorization: token b1e92cf17fe4482647924941949ab2b07ffab548\r\n"\ |
846354866 | 4:e1d2c6f94c69 | 202 | "Content-Length: ", receive_module[num-1]); |
846354866 | 4:e1d2c6f94c69 | 203 | num--; |
846354866 | 4:e1d2c6f94c69 | 204 | if (num == 0) |
846354866 | 4:e1d2c6f94c69 | 205 | num = 4; |
846354866 | 4:e1d2c6f94c69 | 206 | |
846354866 | 4:e1d2c6f94c69 | 207 | char len[2]; |
846354866 | 4:e1d2c6f94c69 | 208 | len[0]=strlen(pJSON_http_post)/10%10+48; |
846354866 | 4:e1d2c6f94c69 | 209 | len[1]=strlen(pJSON_http_post)%10+48; |
846354866 | 4:e1d2c6f94c69 | 210 | strcat(http_POST_cmd,len); |
846354866 | 4:e1d2c6f94c69 | 211 | strcat(http_POST_cmd,"\r\nContent-Type: application/x-www-form-urlencoded\r\n\r\n"); |
846354866 | 4:e1d2c6f94c69 | 212 | |
846354866 | 4:e1d2c6f94c69 | 213 | strcat(http_POST_cmd,pJSON_http_post); |
846354866 | 4:e1d2c6f94c69 | 214 | conn.send_all(http_POST_cmd, strlen(http_POST_cmd));//http_cmd for http,pJSON for socket,should be three changes |
846354866 | 4:e1d2c6f94c69 | 215 | pc.printf("%s\r\n",http_POST_cmd); |
846354866 | 7:bda2a6a118f7 | 216 | |
846354866 | 4:e1d2c6f94c69 | 217 | char *buffer = NULL; |
846354866 | 4:e1d2c6f94c69 | 218 | buffer = (char *)malloc(MallocSize); |
846354866 | 4:e1d2c6f94c69 | 219 | if(!buffer)pc.printf("malloc buffer err\r\n"); |
846354866 | 4:e1d2c6f94c69 | 220 | |
846354866 | 7:bda2a6a118f7 | 221 | /*int ret; |
846354866 | 7:bda2a6a118f7 | 222 | pc.printf("6666\r\n"); |
846354866 | 7:bda2a6a118f7 | 223 | while (true) |
846354866 | 7:bda2a6a118f7 | 224 | { |
846354866 | 7:bda2a6a118f7 | 225 | wait(1);pc.printf("%s():%d\n",__FUNCTION__, __LINE__); |
846354866 | 7:bda2a6a118f7 | 226 | ret = conn.receive_all(buffer, MallocSize-1);pc.printf("%s():%d\n",__FUNCTION__, __LINE__); |
846354866 | 7:bda2a6a118f7 | 227 | pc.printf("ret = %d\r\n",ret); |
846354866 | 7:bda2a6a118f7 | 228 | if (ret <= 0) { |
846354866 | 7:bda2a6a118f7 | 229 | ;//break; |
846354866 | 7:bda2a6a118f7 | 230 | } |
846354866 | 7:bda2a6a118f7 | 231 | buffer[ret] = '\0'; |
846354866 | 7:bda2a6a118f7 | 232 | pc.printf("Received %d chars from server: %s\n", ret, buffer); |
846354866 | 7:bda2a6a118f7 | 233 | }*/ |
846354866 | 7:bda2a6a118f7 | 234 | pc.printf("http_POST OUT\r\n"); |
846354866 | 7:bda2a6a118f7 | 235 | |
846354866 | 7:bda2a6a118f7 | 236 | free(pJSON_http_post); |
846354866 | 7:bda2a6a118f7 | 237 | free(buffer); |
846354866 | 7:bda2a6a118f7 | 238 | cJSON_Delete(http_post); |
846354866 | 7:bda2a6a118f7 | 239 | |
846354866 | 7:bda2a6a118f7 | 240 | return true; |
846354866 | 7:bda2a6a118f7 | 241 | } |
846354866 | 7:bda2a6a118f7 | 242 | |
846354866 | 7:bda2a6a118f7 | 243 | /*http_GET*/ |
846354866 | 7:bda2a6a118f7 | 244 | bool http_GET(TCPSocketConnection &conn) |
846354866 | 7:bda2a6a118f7 | 245 | { |
846354866 | 7:bda2a6a118f7 | 246 | if(conn.is_connected()){ |
846354866 | 7:bda2a6a118f7 | 247 | pc.printf("connect is already ok!\r\n"); |
846354866 | 7:bda2a6a118f7 | 248 | }else{ |
846354866 | 7:bda2a6a118f7 | 249 | if(!conn.connect("iot.espressif.cn", httpPort)) //80 for http,8000 for socket |
846354866 | 7:bda2a6a118f7 | 250 | pc.printf("connect OK!\r\n"); |
846354866 | 7:bda2a6a118f7 | 251 | else{ |
846354866 | 7:bda2a6a118f7 | 252 | pc.printf("connct ERR!\r\n"); |
846354866 | 7:bda2a6a118f7 | 253 | out = true; |
846354866 | 7:bda2a6a118f7 | 254 | return false; |
846354866 | 7:bda2a6a118f7 | 255 | } |
846354866 | 7:bda2a6a118f7 | 256 | } |
846354866 | 7:bda2a6a118f7 | 257 | |
846354866 | 7:bda2a6a118f7 | 258 | char http_cmd[] = "GET /v1/datastreams/Led/datapoint/ HTTP/1.1\r\nUser-Agent: curl/7.22.0 (i686-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3\r\n"\ |
846354866 | 7:bda2a6a118f7 | 259 | "Host:iot.espressif.cn\r\nAccept: */*\r\nAuthorization: token b1e92cf17fe4482647924941949ab2b07ffab548\r\n\r\n"; |
846354866 | 7:bda2a6a118f7 | 260 | |
846354866 | 7:bda2a6a118f7 | 261 | conn.send_all(http_cmd, strlen(http_cmd));//http_cmd for http,pJSON for socket,should be three changes |
846354866 | 7:bda2a6a118f7 | 262 | pc.printf("%s\r\n",http_cmd); |
846354866 | 7:bda2a6a118f7 | 263 | |
846354866 | 7:bda2a6a118f7 | 264 | //char *buffer = NULL; |
846354866 | 7:bda2a6a118f7 | 265 | //buffer = (char *)malloc(MallocSize); |
846354866 | 7:bda2a6a118f7 | 266 | //if(!buffer)pc.printf("malloc buffer err\r\n"); |
846354866 | 7:bda2a6a118f7 | 267 | char buffer[500]; |
846354866 | 4:e1d2c6f94c69 | 268 | int ret; |
846354866 | 7:bda2a6a118f7 | 269 | |
846354866 | 4:e1d2c6f94c69 | 270 | while (true) { |
846354866 | 4:e1d2c6f94c69 | 271 | wait(1); |
846354866 | 7:bda2a6a118f7 | 272 | ret = conn.receive(buffer, 500-1); |
846354866 | 4:e1d2c6f94c69 | 273 | pc.printf("ret = %d\r\n",ret); |
846354866 | 4:e1d2c6f94c69 | 274 | if (ret <= 0) { |
846354866 | 4:e1d2c6f94c69 | 275 | break; |
846354866 | 4:e1d2c6f94c69 | 276 | } |
846354866 | 4:e1d2c6f94c69 | 277 | buffer[ret] = '\0'; |
846354866 | 4:e1d2c6f94c69 | 278 | pc.printf("Received %d chars from server: %s\n", ret, buffer); |
846354866 | 4:e1d2c6f94c69 | 279 | } |
846354866 | 7:bda2a6a118f7 | 280 | pc.printf("http_GET OUT\r\n"); |
846354866 | 7:bda2a6a118f7 | 281 | /* |
846354866 | 7:bda2a6a118f7 | 282 | if(conn.close()){ |
846354866 | 7:bda2a6a118f7 | 283 | pc.printf("conn.close OK\r\n"); |
846354866 | 7:bda2a6a118f7 | 284 | }else{ |
846354866 | 7:bda2a6a118f7 | 285 | pc.printf("conn.close ERR\r\n"); |
846354866 | 7:bda2a6a118f7 | 286 | } |
846354866 | 7:bda2a6a118f7 | 287 | */ |
846354866 | 7:bda2a6a118f7 | 288 | //free(buffer); |
846354866 | 4:e1d2c6f94c69 | 289 | return true; |
846354866 | 4:e1d2c6f94c69 | 290 | } |
846354866 | 4:e1d2c6f94c69 | 291 | |
846354866 | 4:e1d2c6f94c69 | 292 | unsigned char receive_byte() |
846354866 | 4:e1d2c6f94c69 | 293 | { |
846354866 | 4:e1d2c6f94c69 | 294 | unsigned char i,temp; |
846354866 | 4:e1d2c6f94c69 | 295 | for(i=0;i<8;i++) |
846354866 | 4:e1d2c6f94c69 | 296 | { |
846354866 | 4:e1d2c6f94c69 | 297 | U8FLAG = 2; |
846354866 | 4:e1d2c6f94c69 | 298 | while(!myIOD10.read() && U8FLAG++); |
846354866 | 4:e1d2c6f94c69 | 299 | Delay_us(30); |
846354866 | 4:e1d2c6f94c69 | 300 | temp=0; |
846354866 | 4:e1d2c6f94c69 | 301 | if(myIOD10.read()==1) |
846354866 | 4:e1d2c6f94c69 | 302 | temp=1; |
846354866 | 4:e1d2c6f94c69 | 303 | U8FLAG = 2; |
846354866 | 4:e1d2c6f94c69 | 304 | while(myIOD10.read() && U8FLAG++); |
846354866 | 4:e1d2c6f94c69 | 305 | |
846354866 | 4:e1d2c6f94c69 | 306 | if(U8FLAG==1)break; |
846354866 | 4:e1d2c6f94c69 | 307 | data_byte<<=1;// |
846354866 | 4:e1d2c6f94c69 | 308 | data_byte|=temp; |
846354866 | 4:e1d2c6f94c69 | 309 | } |
846354866 | 4:e1d2c6f94c69 | 310 | return data_byte; |
846354866 | 4:e1d2c6f94c69 | 311 | } |
846354866 | 4:e1d2c6f94c69 | 312 | |
846354866 | 4:e1d2c6f94c69 | 313 | void receive_dht11() |
846354866 | 4:e1d2c6f94c69 | 314 | { |
846354866 | 4:e1d2c6f94c69 | 315 | unsigned char T_H,T_L,R_H,R_L,check,num_check; |
846354866 | 4:e1d2c6f94c69 | 316 | |
846354866 | 4:e1d2c6f94c69 | 317 | |
846354866 | 4:e1d2c6f94c69 | 318 | myIOD10.output(); |
846354866 | 4:e1d2c6f94c69 | 319 | myIOD10.write(0); |
846354866 | 4:e1d2c6f94c69 | 320 | delay(20); |
846354866 | 4:e1d2c6f94c69 | 321 | |
846354866 | 4:e1d2c6f94c69 | 322 | myIOD10.write(1); |
846354866 | 4:e1d2c6f94c69 | 323 | Delay_us(25); |
846354866 | 4:e1d2c6f94c69 | 324 | myIOD10.write(1); |
846354866 | 4:e1d2c6f94c69 | 325 | |
846354866 | 4:e1d2c6f94c69 | 326 | myIOD10.input(); |
846354866 | 4:e1d2c6f94c69 | 327 | if(!myIOD10.read()) |
846354866 | 4:e1d2c6f94c69 | 328 | { |
846354866 | 4:e1d2c6f94c69 | 329 | while(!myIOD10.read()); |
846354866 | 4:e1d2c6f94c69 | 330 | while(myIOD10.read()); |
846354866 | 4:e1d2c6f94c69 | 331 | R_H=receive_byte(); |
846354866 | 4:e1d2c6f94c69 | 332 | R_L=receive_byte(); |
846354866 | 4:e1d2c6f94c69 | 333 | T_H=receive_byte(); |
846354866 | 4:e1d2c6f94c69 | 334 | T_L=receive_byte(); |
846354866 | 4:e1d2c6f94c69 | 335 | check=receive_byte(); |
846354866 | 6:bc4901a948b1 | 336 | //pc.printf("--R_H--%d---R_L---%d--T_H--%d---T_L---%d\r\n", R_H,R_L,T_H,T_L); |
846354866 | 4:e1d2c6f94c69 | 337 | Delay_us(20); |
846354866 | 6:bc4901a948b1 | 338 | num_check=R_H+R_L+T_H+T_L;//pc.printf("--num_check--%d---check---%d\r\n", num_check,check); |
846354866 | 4:e1d2c6f94c69 | 339 | if(num_check==check) |
846354866 | 4:e1d2c6f94c69 | 340 | { |
846354866 | 4:e1d2c6f94c69 | 341 | RH=R_H; |
846354866 | 4:e1d2c6f94c69 | 342 | RL=R_L; |
846354866 | 4:e1d2c6f94c69 | 343 | TH=T_H; |
846354866 | 4:e1d2c6f94c69 | 344 | TL=T_L; |
846354866 | 4:e1d2c6f94c69 | 345 | check=num_check; |
846354866 | 4:e1d2c6f94c69 | 346 | } |
846354866 | 4:e1d2c6f94c69 | 347 | } |
846354866 | 4:e1d2c6f94c69 | 348 | |
846354866 | 4:e1d2c6f94c69 | 349 | //pc.printf("humidity [H] -out--%d\r\n", RH); |
846354866 | 4:e1d2c6f94c69 | 350 | //pc.printf("humidity [L] -out--%d\r\n", RL); |
846354866 | 4:e1d2c6f94c69 | 351 | //pc.printf("temperature [H] -out--%d\r\n", TH); |
846354866 | 4:e1d2c6f94c69 | 352 | //pc.printf("temperature [L] -out--%d\r\n", TL); |
846354866 | 4:e1d2c6f94c69 | 353 | |
846354866 | 4:e1d2c6f94c69 | 354 | receive_dht11Timeout.attach(&receive_dht11,0.2f); |
846354866 | 4:e1d2c6f94c69 | 355 | } |
846354866 | 7:bda2a6a118f7 | 356 | |
846354866 | 7:bda2a6a118f7 | 357 | void button_led() |
846354866 | 7:bda2a6a118f7 | 358 | { |
846354866 | 7:bda2a6a118f7 | 359 | while(myInD11.read()) |
846354866 | 7:bda2a6a118f7 | 360 | { |
846354866 | 7:bda2a6a118f7 | 361 | wait(0.01f); |
846354866 | 7:bda2a6a118f7 | 362 | if(!myInD11.read()) |
846354866 | 7:bda2a6a118f7 | 363 | { |
846354866 | 7:bda2a6a118f7 | 364 | myOutD12.write(!myOutD12.read()); |
846354866 | 7:bda2a6a118f7 | 365 | break; |
846354866 | 7:bda2a6a118f7 | 366 | } |
846354866 | 7:bda2a6a118f7 | 367 | } |
846354866 | 7:bda2a6a118f7 | 368 | |
846354866 | 7:bda2a6a118f7 | 369 | button_ledTimeout.attach(&button_led,0.1f); |
846354866 | 7:bda2a6a118f7 | 370 | } |