找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2022|回复: 0
打印 上一主题 下一主题
收起左侧

自己做的一个上传OneNet的上传函数

[复制链接]
跳转到指定楼层
楼主
ID:744379 发表于 2020-5-5 10:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
编了几个用于OneNet上传数据和获取数据的函数,贡献出来


个人感觉使用官方的库比较占内存,太多的功能和函数其实用不上,所以就自己编了几个实用的函数,贡献出来

欢迎大家积极实用OneNet。
  1. void setup() {
  2.   // put your setup code here, to run once:
  3. #define WiFi_Port Serial3
  4. #define Debug_Port Serial
  5. }

  6. void loop() {
  7.   // put your main code here, to run repeatedly:

  8. }

  9. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  10. //本函数用于向OneNet发送数据,根据你的需要可以随意发送同一个设备下的n个数据流的数据点。本函数无返回值。                  //
  11. //***********************************************************************************************************************//
  12. //本函数需要调用函数:String build_Post_HTTP_Header(unsigned long Device, String Host, String Key)                       //
  13. //他用来构造 HTTP头字符串                                                                                                //
  14. //其中 Device 为OneNet上的设备,为无符号长整数型;                                                                        //
  15. //Host 为OneNet的HTTP主机"api.heclouds点com",可以定义为一个字符串再引,也可直接使用;                                    //
  16. //Key 为 OneNet上对应设备的Apikey,或用户的Masterkey,为字符串型                                                         //
  17. //***********************************************************************************************************************//
  18. //本函数还调用函数 Make_Post_Json(),这是用于构造相应Json字符串的函数;                                                   //
  19. //***********************************************************************************************************************//
  20. //本函数还调用函数  returnmsg_ok_conWiFi();这个函数是判断是否完成了TCP连接;                                             //
  21. //***********************************************************************************************************************//
  22. //本函数还调用函数   returnmsgWiFi();主要是为了查看WiFi模块是否正确接受了发送的数据以及回显情,如不需要可用//来注销;    //
  23. //***********************************************************************************************************************//
  24. //本函数还调用函数    returnmsg_ok_finishWiFi();主要是用来判断OneNet是否返回了正确信息                                   //
  25. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  26. void Post_Data()
  27. {
  28.   String Send_info = build_Post_HTTP_Header(131278, "api.heclouds点com", "b6724PQP4FEVVI3sqMb3QIHh6boA" );
  29.   int len = Send_info.length() + Make_Post_Json().length() + 4;    //计算总长度,如用透传则不需要,+4是加的  WiFi_Port.print("\r\n\r\n"); 两个换行和两个回车;
  30.   WiFi_Port.println("AT+CIPSTART=\"TCP\",\"183.230.40.33\",80");
  31.   returnmsg_ok_conWiFi();
  32.   delay(500);
  33.   WiFi_Port.print("AT+CIPSEND=");
  34.   returnmsgWiFi();
  35.   WiFi_Port.println(len);
  36.   returnmsgWiFi();
  37.   delay(500);
  38.   WiFi_Port.print(Send_info);
  39.   returnmsgWiFi();
  40.   WiFi_Port.print(Make_Post_Json());
  41.   returnmsgWiFi();
  42.   WiFi_Port.print("\r\n\r\n");
  43.   returnmsg_ok_finishWiFi();
  44. }




  45. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  46. //本函数用于构造一个Json数据串                                                                                   //
  47. //本函数需要调用函数:String Build_Json (String ID, long Value)                                                  //
  48. //其中ID  为OneNet上的设备中”数据流“ID,为字符串型;                                                              //
  49. //Value 为对应的数,为长整数型;                                                                                 //
  50. //他的返回值为构造好的,包含一数据流的数据点Json数据串;                                                         //
  51. //***************************************************************************************************************//
  52. //本函数还调用函数 String ADD_Post_JsonPar(String Json, String ID, long Value)                                   //
  53. //他是用来给已构造好的Json数据串增加一个数据流数据点;                                                           //
  54. //Json 为前面已构造好的一个完整Json数据,ID为需要增加的数据流的ID, Value为对用的数据;                           //
  55. //他的返回值为构造好的含有多个数据流数值的Json串                                                                 //
  56. //***************************************************************************************************************//
  57. //如需增加多个数据流的数据,只需多次调用函数 String ADD_Post_JsonPar(String Json, String ID, long Value)         //
  58. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  59. String Make_Post_Json()
  60. {
  61.   String _Json = Build_Post_Json("A01", random(1000));
  62.   _Json = ADD_Post_JsonPar(_Json, "A02", random(1000));
  63.   _Json = ADD_Post_JsonPar(_Json, "A03", random(1000));
  64.   _Json = ADD_Post_JsonPar(_Json, "A04", random(1000));
  65.   _Json = ADD_Post_JsonPar(_Json, "A05", random(1000));
  66.   _Json = ADD_Post_JsonPar(_Json, "A06", random(1000));
  67.   _Json = ADD_Post_JsonPar(_Json, "A07", random(1000));
  68.   _Json = ADD_Post_JsonPar(_Json, "A08", random(1000));
  69.   _Json = ADD_Post_JsonPar(_Json, "A09", random(1000));
  70.   _Json = ADD_Post_JsonPar(_Json, "A10", random(1000));
  71.   _Json = ADD_Post_JsonPar(_Json, "A11", random(1000));
  72.   _Json = ADD_Post_JsonPar(_Json, "A12", random(1000));
  73.   _Json = ADD_Post_JsonPar(_Json, "A13", random(1000));
  74.   _Json = ADD_Post_JsonPar(_Json, "A14", random(1000));
  75.   _Json = ADD_Post_JsonPar(_Json, "A15", random(1000));
  76.   _Json = ADD_Post_JsonPar(_Json, "A16", random(1000));
  77.   _Json = ADD_Post_JsonPar(_Json, "A17", random(1000));
  78.   _Json = ADD_Post_JsonPar(_Json, "A18", random(1000));
  79.   _Json = ADD_Post_JsonPar(_Json, "A19", random(1000));
  80.   _Json = ADD_Post_JsonPar(_Json, "A20", random(1000));
  81.   return _Json;
  82. }




  83. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
  84. //本函数用于构造一个只包含一个数据流数据点的基本Json数据串                                                   //
  85. //其中ID  为OneNet上的设备中”数据流“ID,为字符串型;                                                          //
  86. //Value 为对应的数,为长整数型;                                                                             //
  87. //他的返回值为构造好,包含一数据流的数据点数;                                                               //         
  88. //形成Json数据串如此例:{"datastreams":[{"id":"TEMP","datapoints":[{"value":12345 }]}]}                      //                                                                                                  //
  89. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
  90. String Build_Post_Json (String ID, long Value)
  91. {
  92.   String _Value = Value + String("");
  93.   String  _Json = "{\"datastreams\":[{\"id\":\"";
  94.   _Json += ID;
  95.   _Json += "\",\"datapoints\":";
  96.   _Json += "[{\"value\":";
  97.   _Json += _Value;
  98.   _Json += "}]}]}";
  99.   return _Json;
  100. }


  101. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  102. //本函数用来给已构造好的Json数据串增加一个数据流数据点;                                                                               //
  103. //Json 为前面已构造好的一个完整Json数据,ID为需要增加的数据流的ID, Value为对用的数据;                                                 //
  104. //他的返回值为构造好的含有多个数据流数值的Json串                                                                                       //
  105. //*************************************************************************************************************************************//
  106. //如需增加多个数据流的数据,只需多次调用函数 String ADD_Post_JsonPar(String Json, String ID, long Value)                               //
  107. //形成Json数据串如此例:{"datastreams":[{"id":"TEMP","datapoints":[{"value":45 }]},{"id":"HUMI","datapoints":[{"value":32 }]}]}        //                    //   
  108. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  109. String ADD_Post_JsonPar(String Json, String ID, long Value)
  110. {
  111.   int LENS = Json.length();
  112.   String _Json = Json.substring(0, LENS - 2);   //-2是先去掉最后两个字符“]}",然后追加”,"以及需要增加的ID的对应Json字符串,并加回"]}",够造成一个完整的Json数据串
  113.   _Json += +",{\"id\":\"";
  114.   _Json += ID;
  115.   _Json += "\",\"datapoints\":";
  116.   _Json += "[{\"value\":";
  117.   String _Value = Value + String("");
  118.   _Json += _Value;
  119.   _Json += "}]}]}";
  120.   return _Json;

  121. }




  122. //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  123. //本函数用于构造POST HTTP头字符串                                                                               //
  124. //其中 Device 为OneNet上的设备,为无符号长整数型;                                                               //
  125. //Host 为OneNet的HTTP主机"api.heclouds点com",可以定义为一个字符串再引,也可直接使用;                           //
  126. //Key为 OneNet上对应设备的Apikey,或用户的Masterkey,为字符串型                                                 //
  127. //**************************************************************************************************************//
  128. //形成的HTTP头字符串如下:                                                                                      //
  129. //POST http://api.heclouds点com/devices/77654/datapoints HTTP/1.1\r\n    “\r\n”代表一个回车一个换行,两个字符   //
  130. //Host: api.heclouds点com\r\n                                                                                    //
  131. //api-key: asdjoiSKFMdmcdslk1398247\r\n                                                                         //
  132. //Connection: close\r\n                                                                                         //
  133. //Content-Length: 68\r\n\r\n                                 这里要两次回车换行                                 //
  134. //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  135. String build_Post_HTTP_Header(unsigned long Device, String Host, String Key)
  136. {
  137.   String _Device = String("") + Device;
  138.   int  Lens = Make_Post_Json().length();
  139.   String _lens = Lens + String("");
  140.   String HTTP_Header =  "POST http://api.heclouds点com/devices/" + _Device + "/datapoints HTTP/1.1\r\n";
  141.   HTTP_Header = HTTP_Header + "Host: " + Host + "\r\n";
  142.   HTTP_Header = HTTP_Header +  "api-key: " + Key + "\r\n" ;
  143.   HTTP_Header = HTTP_Header + "Connection: close" + "\r\n" ;
  144.   HTTP_Header = HTTP_Header + "Content-Length: " + _lens + "\r\n\r\n";
  145.   return HTTP_Header;
  146. }
  147. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  148. //本函数用于向OneNet获取(GET)一个或n个数据流的当前数据点,返回值为返回的Json字符串。                                   //
  149. //*********************************************************************************************************************//
  150. //本函数需要调用函数:String build_Post_HTTP_Header(unsigned long Device, String Host, String Key)                     //
  151. //他用来构造 HTTP头字符串                                                                                              //
  152. //其中 Device 为OneNet上的设备,为无符号长整数型;                                                                      //
  153. //Host 为OneNet的HTTP主机"api.heclouds点com",可以定义为一个字符串再引,也可直接使用;                                  //
  154. //Key 为 OneNet上对应设备的Apikey,或用户的Masterkey,为字符串型                                                       //
  155. //*********************************************************************************************************************//
  156. //本函数还调用函数 Make_GET_Json(),这是用于构造相应Json字符串的函数;                                                  //
  157. //*********************************************************************************************************************//
  158. //本函数还调用函数  returnmsg_ok_conWiFi();这个函数是判断是否完成了TCP连接;                                           //
  159. //*********************************************************************************************************************//
  160. //本函数还调用函数   returnmsgWiFi();主要是为了查看WiFi模块是否正确接受了发送的数据以及回显情,如不需要可用//来注销;  //
  161. //*********************************************************************************************************************//
  162. //本函数还调用函数   returnmsg_GET_S_WiFi();主要是用来生成返回值字符                                                   //
  163. //他的返回值就是包含相应数据流当前数据点值的Json数据串                                                                 //   
  164. //*********************************************************************************************************************//  
  165. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  166. String GET_Datapoints()
  167. {
  168.   int len =  Make_GET_Json().length() + 4;      //计算总长度,如用透传则不需要,+4是加的  WiFi_Port.print("\r\n\r\n"); 两个换行和两个回车;
  169.   WiFi_Port.println("AT+CIPSTART=\"TCP\",\"183.230.40.33\",80");
  170.   returnmsg_ok_conWiFi();
  171.   delay(1000);
  172.   WiFi_Port.print("AT+CIPSEND=");
  173.   returnmsgWiFi();
  174.   WiFi_Port.println(len);
  175.   returnmsgWiFi();
  176.   delay(1000);
  177.   WiFi_Port.print(Make_GET_Json());
  178.   returnmsgWiFi();
  179.   WiFi_Port.print("\r\n\r\n");
  180.   String _ResulT = returnmsg_GET_S_WiFi();
  181.   WiFi_Port.println("AT+CIPCLOSE");
  182.   return _ResulT;
  183. }





  184. ///////////////////////////////////////////////////////////////////////////////////////////////////
  185. //本函数用于分析String GET_Datapoints()取回的数据流的数据点                                      //
  186. //_Result为String GET_Datapoints()函数取回的结果;                                               //
  187. //_Stream为想要分析的数据                                                                        //
  188. //返回值为对应的数据流的相应数值                                                                 //
  189. //如需分析多个数据,调用多次即可                                                                 //
  190. ///////////////////////////////////////////////////////////////////////////////////////////////////
  191. int Analyze_GET_Result(String _Result, String _Stream)
  192. {
  193.   int _No1 = _Result.indexOf(_Stream);
  194.   String _SubS1 = _Result.substring(_No1 - 22, _No1 - 3);
  195.   int _No2 = _SubS1.indexOf(":");
  196.   int _No3 = _SubS1.indexOf("}");
  197.   String _SubS2 = _SubS1.substring(_No2 + 2, _No3 - 1);
  198.   int _n = atoi(_SubS2.c_str());
  199.   return _n;
  200. }






  201. //////////////////////////////////////////////////////////////////////////////////////////////////////////
  202. //本函数用于构造一个包含一个或多个数据流数据点的GETJson数据串                                           //
  203. //本函数需要调用函数:String Build_GET_HTTP (String ID, String Key, long Device, String Host)           //
  204. //其中ID  为OneNet上的设备中”数据流“ID,为字符串型;                                                     //
  205. //其中 Device 为OneNet上的设备,为无符号长整数型;                                                       //
  206. //Host 为OneNet的HTTP主机"api.heclouds点com",可以定义为一个字符串再引,也可直接使用;                   //
  207. //Key 为 OneNet上对应设备的Apikey,或用户的Masterkey,为字符串型                                        //
  208. //他的返回值为构造好的,包含相应数据流的数据点Json数据串;                                              //
  209. //******************************************************************************************************//
  210. //本函数还调用函数 String ADD_GET_HTTP_Par(String Json, String ID)                                      //
  211. //他是用来给已构造好的Json数据串增加一个数据流数据点;                                                  //
  212. //Json 为前面已构造好的一个完整Json数据,ID为需要增加的数据流的ID;                                     //
  213. //他的返回值为构造好的含有多个数据流数值的Json串                                                        //
  214. //******************************************************************************************************//
  215. //如需GET多个数据流的数据点,只需多次调用函数 String ADD_GET_HTTP_Par(String Json, String ID)           //
  216. //******************************************************************************************************//   
  217. //////////////////////////////////////////////////////////////////////////////////////////////////////////
  218. String Make_GET_Json()
  219. {
  220.   String _GET_HTTP= Build_GET_HTTP ("T001", "ankjsdvndfrehvngjoitre13290", 46788, "api.heclouds点com");
  221.   _GET_HTTP = ADD_GET_HTTP_Par(_GET_HTTP, "T002");
  222.   _GET_HTTP = ADD_GET_HTTP_Par(_GET_HTTP, "T003");
  223.   _GET_HTTP = ADD_GET_HTTP_Par(_GET_HTTP, "T004");
  224.   _GET_HTTP = ADD_GET_HTTP_Par(_GET_HTTP, "T005");
  225.   _GET_HTTP = ADD_GET_HTTP_Par(_GET_HTTP, "T006");
  226.   _GET_HTTP = ADD_GET_HTTP_Par(_GET_HTTP, "T006");
  227.   _GET_HTTP = ADD_GET_HTTP_Par(_GET_HTTP, "T007");
  228.   _GET_HTTP = ADD_GET_HTTP_Par(_GET_HTTP, "T008");
  229.   return _GET_HTTP;
  230. }





  231. ///////////////////////////////////////////////////////////////////////////////////////////////
  232. //本函数用于构造 GET 数据流数据点的Json字符串                                                //
  233. //其中 Device 为OneNet上的设备,为无符号长整数型;                                            //
  234. //Host 为OneNet的HTTP主机"api.heclouds点com",可以定义为一个字符串再引,也可直接使用;        //
  235. //Key为 OneNet上对应设备的Apikey,或用户的Masterkey,为字符串型                              //
  236. //ID为需要获取数据点的数据流的ID                                                             //
  237. //返回值为构造好的GET HTTP头和Json的组合。                                                   //
  238. //*******************************************************************************************//
  239. //他的返回Json数据串如下:                                                                   //  
  240. // GET /devices/54365/datapoints?datastream_id=K1 HTTP/1.1\r\n                               //  
  241. //Host: api.heclouds点com\r\n                                                                 //
  242. //api-key: asdjoiSKFMdmcdslk1398247\r\n                                                      //
  243. ///////////////////////////////////////////////////////////////////////////////////////////////
  244. String Build_GET_HTTP (String ID, String Key, long Device, String Host)
  245. {
  246.   String _Device = Device + String("");
  247.   String  _HTTP = "GET /devices/" + _Device + "/datapoints?datastream_id=" + ID + " HTTP/1.1\r\n";
  248.   _HTTP = _HTTP + "Host: " + Host + "\r\n";
  249.   _HTTP = _HTTP +  "api-key:" + Key + "\r\n";
  250.   return _HTTP;
  251. }



  252. ////////////////////////////////////////////////////////////////////////////////////////////////////////
  253. //本函数用于对构造好的包含一个数据流数据点的GET HTTP头和Json字符串组合,增加一个需要读取的数据流      //
  254. //Json 为前面已构造好的一个完整Json数据,ID为需要增加的数据流的ID ;                                  //
  255. //返回值为增加一个数据流后的GET HTTP头和Json字符串组合                                                //
  256. //****************************************************************************************************//
  257. //如需增加多个数据流的数据,只需多次调用函数 String ADD_HTTPPar(String Json, String ID)               //
  258. //****************************************************************************************************//
  259. //他的返回Json数据串如下:                                                                            //  
  260. // GET /devices/54365/datapoints?datastream_id=K1,K2 HTTP/1.1\r\n                                     //  
  261. //Host: api.heclouds点com\r\n                                                                          //
  262. //api-key: asdjoiSKFMdmcdslk1398247\r\n                                                               //
  263. ////////////////////////////////////////////////////////////////////////////////////////////////////////
  264. String ADD_GET_HTTP_Par(String Json, String ID)
  265. {
  266.   int _Lens = Json.length();
  267.   int _Point1 = Json.indexOf(" HTTP/1.1");
  268.   String SubString1 = Json.substring(0, _Point1);
  269.   String SubString2 = Json.substring(_Point1, _Lens);
  270.   String _HTTP = Json.substring(0, _Point1);
  271.   _HTTP += ",";
  272.   _HTTP += ID;
  273.   _HTTP += Json.substring(_Point1, _Lens);
  274.   return _HTTP;
  275. }



  276. ///////////////////////////////////////////////////////////////////////////////////////////////
  277. //本函数生成GET命令返回的信息字符串用于后续的分析                                            //
  278. //如大于3分钟未返回结束信息则认为超时失败,执行AT+CIPCLOSE,强行关闭TCP连接                  //
  279. //判断是否结束的关键字是"\"error\":\"succ\"}"                                                //
  280. //返回值为系统返回的Json 数据串                                                              //
  281. ///////////////////////////////////////////////////////////////////////////////////////////////
  282. String returnmsg_GET_S_WiFi()
  283. {
  284.   String _TEMPdata = "";
  285.   unsigned long _PT0 = 0;
  286.   unsigned long _PT1 = 0;
  287.   _PT0 = millis();
  288.   _TEMPdata = "";
  289.   while (1)
  290.   {
  291.     _PT1 = millis();
  292.     if (_PT1 - _PT0 > 180000)
  293.     {
  294.       Debug_Port.println("   ");
  295.       Debug_Port.println("Get error..................");
  296.       WiFi_Port.println("AT+CIPCLOSE");
  297.       return "false";
  298.     }
  299.     while (WiFi_Port.available())
  300.     {
  301.       _TEMPdata += char(WiFi_Port.read());
  302.       // Debug_Port.println(TEMPdata);
  303.       delayMicroseconds(500);
  304.     }
  305.     if (_TEMPdata.indexOf("\"error\":\"succ\"}") > 3)
  306.     {
  307.       Debug_Port.println(_TEMPdata);
  308.       Debug_Port.println("");
  309.       return _TEMPdata;
  310.     }
  311.   }
  312. }




  313. //********************************************************** OneNet  WiFi  send  Data *******************************************************************************************************
  314. /////////////////////////////////////////////////////////////////////////////////////////////
  315. //本函数用于发送四个数据流的数据点,数值为整数类型                                         //
  316. // APIkey OneNet对应设备的MasterKey或Apikey                                                //
  317. // deviceid 对应设备的ID                                                                   //
  318. // Host HTTP服务器名称                                                                     //
  319. // sensorid  对应数据流的ID,thisData 对应数据流的数值                                     //
  320. /////////////////////////////////////////////////////////////////////////////////////////////
  321. //
  322. void sendDataWiFi(String APIkey, int thisData, unsigned long deviceid ,String Host,  String sensorid)
  323. {
  324.   int l = getLength(thisData);
  325.   int D = getLength(deviceid);
  326.   int S = sensorid.length();
  327.   int lenss = 53 + S + l;
  328.   int lll = getLength(lenss);
  329.   int lens = 214 + D + S + l + lll;
  330.   WiFi_Port.println("AT+CIPSTART=\"TCP\",\"183.230.40.33\",80");
  331.   returnmsg_ok_conWiFi();
  332.   Debug_Port.println("connecting...");
  333.   WiFi_Port.print("AT+CIPSEND=");
  334.   returnmsgWiFi();
  335.   WiFi_Port.println(lens);
  336.   returnmsg_ok_1WiFi();
  337.   WiFi_Port.print("POST http://api.heclouds点com/devices/");
  338.   returnmsgWiFi();
  339.   WiFi_Port.print(deviceid);
  340.   returnmsgWiFi();
  341.   WiFi_Port.print("/datapoints HTTP/1.1");
  342.   returnmsgWiFi();
  343.   WiFi_Port.print("\r\n");
  344.   returnmsgWiFi();
  345.   WiFi_Port.print("Host: ");
  346.   returnmsgWiFi();
  347.   WiFi_Port.print(Host);
  348.   returnmsgWiFi();
  349.   WiFi_Port.print("\r\n"); returnmsgWiFi();
  350.   WiFi_Port.print("api-key: ");
  351.   returnmsgWiFi();
  352.   WiFi_Port.print(APIkey);
  353.   returnmsgWiFi();
  354.   WiFi_Port.print("\r\n");
  355. returnmsgWiFi();
  356.   WiFi_Port.println("Connection: close");
  357. returnmsgWiFi();
  358.   WiFi_Port.print("Content-Length: ");
  359.   returnmsgWiFi();
  360. WiFi_Port.print(lenss);
  361. returnmsgWiFi();
  362.   WiFi_Port.print("\r\n");
  363. returnmsgWiFi();
  364.   WiFi_Port.print("\r\n");
  365. returnmsgWiFi();
  366.   WiFi_Port.print("{\"datastreams\":[{\"id\":\"");
  367. WiFi_Port.print(sensorid);
  368. returnmsgWiFi();
  369.   WiFi_Port.print("\",\"datapoints\":[{\"value\":");
  370. returnmsgWiFi();
  371.   WiFi_Port.print(thisData);
  372. WiFi_Port.print("}]}]}");
  373.   returnmsgWiFi();
  374.   WiFi_Port.print("\r\n");
  375.   WiFi_Port.print("\r\n");
  376.   WiFi_Port.print("\r\n");
  377.   WiFi_Port.print("\r\n");
  378.   returnmsg_ok_finishWiFi();
  379. }




  380. //********************************************************** OneNet  WiFi  send 2 Data *******************************************************************************************************
  381. /////////////////////////////////////////////////////////////////////////////////////////////
  382. //本函数用于发送四个数据流的数据点,数值为整数类型                                         //
  383. // APIkey OneNet对应设备的MasterKey或Apikey                                                //
  384. // deviceid 对应设备的ID                                                                   //
  385. // Host HTTP服务器名称                                                                     //
  386. // sensorid1  对应数据流1的ID,Data1 对应数据流1的数值                                     //
  387. // sensorid2  对应数据流2的ID,Data2 对应数据流2的数值                                     //
  388. /////////////////////////////////////////////////////////////////////////////////////////////
  389. void send2DataWiFi(String APIkey, int Data1, int Data2, unsigned long deviceid,String Host, String sensorid1 , String sensorid2)
  390. {
  391.   int l1 = getLength(Data1);
  392.   int l2 = getLength(Data2);
  393.   int D = getLength(deviceid);
  394.   int S1 = sensorid1.length();
  395.   int S2 = sensorid2.length();
  396.   int lenss = 53 + 36 + S1 + l1 + S2 + l2;      //增加一个数据流Lenss固定长度需要增加36;
  397.   int l3 = getLength(lenss);
  398.   int lens = 214 + 36 + D + S1 + l1 + S2 + l2 + l3; //增加一个数据流Lens固定长度需要增加36;
  399.   WiFi_Port.println("AT+CIPSTART=\"TCP\",\"183.230.40.33\",80");
  400.   returnmsg_ok_conWiFi();
  401.   Debug_Port.println("connecting...");
  402.   WiFi_Port.print("AT+CIPSEND=");
  403.   returnmsgWiFi();
  404.   WiFi_Port.println(lens);
  405.   returnmsg_ok_1WiFi();
  406.   WiFi_Port.print("POST http://api.heclouds点com/devices/");
  407.   returnmsgWiFi();
  408.   WiFi_Port.print(deviceid);
  409.   returnmsgWiFi();
  410.   WiFi_Port.print("/datapoints HTTP/1.1");
  411.   returnmsgWiFi();
  412.   WiFi_Port.print("\r\n");
  413.   returnmsgWiFi();
  414.   WiFi_Port.print("Host: ");
  415.   returnmsgWiFi();
  416.   WiFi_Port.print(Host);
  417.   returnmsgWiFi();
  418.   WiFi_Port.print("\r\n");
  419.   returnmsgWiFi();
  420.   WiFi_Port.print("api-key: ");
  421.   returnmsgWiFi();
  422.   WiFi_Port.print(APIkey);
  423.   returnmsgWiFi();
  424.   WiFi_Port.print("\r\n");
  425.   returnmsgWiFi();
  426.   WiFi_Port.println("Connection: close");
  427.   returnmsgWiFi();
  428.   WiFi_Port.print("Content-Length: ");
  429.   returnmsgWiFi();
  430.   WiFi_Port.print(lenss);
  431.   returnmsgWiFi();
  432.   WiFi_Port.print("\r\n");
  433.   returnmsgWiFi();
  434.   WiFi_Port.print("\r\n");
  435.   returnmsgWiFi();
  436.   ////////////////////////////////////////////////////////////////////sensor data
  437.   WiFi_Port.print("{\"datastreams\":[");
  438.   ///////////////////////////////////////////////////////////////////sensor1
  439.   WiFi_Port.print("{\"id\":\"");
  440.   WiFi_Port.print(sensorid1);
  441.   WiFi_Port.print("\",\"datapoints\":[{\"value\":");
  442.   WiFi_Port.print(Data1);
  443.   WiFi_Port.print("}]},");
  444.   returnmsgWiFi();
  445.   ///////////////////////////////////////////////////////////////////sensor2
  446.   WiFi_Port.print("{\"id\":\"");
  447.   WiFi_Port.print(sensorid2);
  448.   WiFi_Port.print("\",\"datapoints\":[{\"value\":");
  449.   WiFi_Port.print(Data2);
  450.   WiFi_Port.print("}]}");
  451.   returnmsgWiFi();
  452.   ///////////////////////////////////////////////////////////////////sensor end
  453.   WiFi_Port.print("]}");
  454.   ////////////////////////////////////////////////////sensor data end
  455.   returnmsgWiFi();
  456.   WiFi_Port.print("\r\n");
  457.   WiFi_Port.print("\r\n");
  458.   WiFi_Port.print("\r\n");
  459.   WiFi_Port.print("\r\n");
  460.   returnmsg_ok_finishWiFi();
  461. }
  462. //********************************************************** OneNet  WiFi  send 3 Data *******************************************************************************************************
  463. /////////////////////////////////////////////////////////////////////////////////////////////
  464. //本函数用于发送四个数据流的数据点,数值为整数类型                                         //
  465. // APIkey OneNet对应设备的MasterKey或Apikey                                                //
  466. // deviceid 对应设备的ID                                                                   //
  467. // Host HTTP服务器名称                                                                     //
  468. // sensorid1  对应数据流1的ID,Data1 对应数据流1的数值                                     //
  469. // sensorid2  对应数据流2的ID,Data2 对应数据流2的数值                                     //
  470. // sensorid3  对应数据流3的ID,Data3 对应数据流3的数值                                     //
  471. /////////////////////////////////////////////////////////////////////////////////////////////
  472. void send3DataWiFi(String APIkey, int Data1, int Data2, int Data3, unsigned long deviceid,String Host, String sensorid1, String sensorid2, String sensorid3)
  473. {
  474.   int l1 = getLength(Data1);
  475.   int l2 = getLength(Data2);
  476.   int l3 = getLength(Data3);
  477.   int D = getLength(deviceid);
  478.   int S1 = sensorid1.length();
  479.   int S2 = sensorid2.length();
  480.   int S3 = sensorid3.length();
  481.   int lenss = 53 + 36 + 36 + S1 + l1 + S2 + l2 + S3 + l3;  //增加一个数据流Lenss固定长度需要增加36,增加2个数据流需要增加2次36;
  482.   int lll = getLength(lenss);
  483.   int lens = 214 + 36 + 36 + D + lll + S1 + l1 + S2 + l2 + S3 + l3; //增加一个数据流Lens固定长度需要增加36,增加2个数据流需要增加2次36;
  484.   WiFi_Port.println("AT+CIPSTART=\"TCP\",\"183.230.40.33\",80");
  485. returnmsg_ok_conWiFi();
  486.   Debug_Port.println("connecting...");
  487.   WiFi_Port.print("AT+CIPSEND=");
  488.   delay(00);
  489.   returnmsgWiFi();
  490.   WiFi_Port.println(lens);
  491. returnmsg_ok_1WiFi();
  492.   WiFi_Port.print("POST http://api.heclouds点com/devices/");
  493. returnmsgWiFi();
  494.   WiFi_Port.print(deviceid);
  495. returnmsgWiFi();
  496.   WiFi_Port.print("/datapoints HTTP/1.1");
  497. returnmsgWiFi();
  498.   WiFi_Port.print("\r\n");
  499. returnmsgWiFi();
  500.   WiFi_Port.print("Host: ");
  501. returnmsgWiFi();
  502.   WiFi_Port.print(Host);
  503. returnmsgWiFi();
  504.   WiFi_Port.print("\r\n");
  505. returnmsgWiFi();
  506.   WiFi_Port.print("api-key: "); returnmsgWiFi();
  507.   WiFi_Port.print(APIkey);
  508. returnmsgWiFi();
  509.   WiFi_Port.print("\r\n");
  510. returnmsgWiFi();
  511.   WiFi_Port.println("Connection: close");
  512. returnmsgWiFi();
  513.   WiFi_Port.print("Content-Length: "); returnmsgWiFi();
  514.   WiFi_Port.print(lenss);
  515. returnmsgWiFi();
  516.   WiFi_Port.print("\r\n");
  517. returnmsgWiFi();
  518.   WiFi_Port.print("\r\n");
  519. returnmsgWiFi();
  520.   ////////////////////////////////////////////////////////////////////sensor data
  521.   WiFi_Port.print("{\"datastreams\":[");
  522.   ///////////////////////////////////////////////////////////////////sensor1
  523.   WiFi_Port.print("{\"id\":\"");
  524. WiFi_Port.print(sensorid1);
  525. WiFi_Port.print("\",\"datapoints\":[{\"value\":");
  526. WiFi_Port.print(Data1);
  527.   WiFi_Port.print("}]},");
  528.   returnmsgWiFi();
  529.   ///////////////////////////////////////////////////////////////////sensor2
  530.   WiFi_Port.print("{\"id\":\"");
  531. WiFi_Port.print(sensorid2);
  532.   WiFi_Port.print("\",\"datapoints\":[{\"value\":");
  533.   WiFi_Port.print(Data2);
  534.   WiFi_Port.print("}]},");
  535.   returnmsgWiFi();
  536.   ///////////////////////////////////////////////////////////////////sensor2
  537.   WiFi_Port.print("{\"id\":\"");
  538.   WiFi_Port.print(sensorid3);
  539.   WiFi_Port.print("\",\"datapoints\":[{\"value\":");
  540.   WiFi_Port.print(Data3);
  541.   WiFi_Port.print("}]}");
  542.   returnmsgWiFi();
  543.   ///////////////////////////////////////////////////////////////////sensor end
  544.   WiFi_Port.print("]}");
  545.   ////////////////////////////////////////////////////sensor data end
  546.   returnmsgWiFi();
  547.   WiFi_Port.print("\r\n");
  548.   WiFi_Port.print("\r\n");
  549.   WiFi_Port.print("\r\n");
  550.   WiFi_Port.print("\r\n");
  551.   returnmsg_ok_finishWiFi();
  552. }
  553. //********************************************************** OneNet  WiFi  send 4 Data *******************************************************************************************************
  554. /////////////////////////////////////////////////////////////////////////////////////////////
  555. //本函数用于发送四个数据流的数据点,数值为整数类型                                         //
  556. // APIkey OneNet对应设备的MasterKey或Apikey                                                //
  557. // deviceid 对应设备的ID                                                                   //
  558. // Host HTTP服务器名称                                                                     //
  559. // sensorid1  对应数据流1的ID,Data1 对应数据流1的数值                                     //
  560. // sensorid2  对应数据流2的ID,Data2 对应数据流2的数值                                     //
  561. // sensorid3  对应数据流3的ID,Data3 对应数据流3的数值                                     //
  562. // sensorid4  对应数据流4的ID,Data4 对应数据流4的数值                                     //
  563. /////////////////////////////////////////////////////////////////////////////////////////////
  564. void send4DataWiFi(String APIkey, int Data1, int Data2, int Data3, int Data4, unsigned long deviceid,String Host, String sensorid1, String sensorid2, String sensorid3, String sensorid4)
  565. {
  566.   int l1 = getLength(Data1);
  567.   int l2 = getLength(Data2);
  568.   int l3 = getLength(Data3);
  569.   int l4 = getLength(Data4);
  570.   int D = getLength(deviceid);
  571.   int S1 = sensorid1.length();
  572.   int S2 = sensorid2.length();
  573.   int S3 = sensorid3.length();
  574.   int S4 = sensorid4.length();
  575.   int lenss = 53 + 36 + 36 + 36 + S1 + l1 + S2 + l2 + S3 + l3 + S4 + l4; //增加一个数据流Lenss固定长度需要增加36,增加3个数据流需要增加3次36;
  576.   int lll = getLength(lenss);
  577.   int lens = 214 + 36 + 36 + 36 + D + lll + S1 + l1 + S2 + l2 + S3 + l3 + S4 + l4; //增加一个数据流Lens固定长度需要增加36,增加3个数据流需要增加3次36;
  578.   WiFi_Port.println("AT+CIPSTART=\"TCP\",\"183.230.40.33\",80");
  579.   returnmsg_ok_conWiFi();
  580.   Debug_Port.println("connecting...");
  581.   WiFi_Port.print("AT+CIPSEND=");
  582.   delay(00);
  583.   returnmsgWiFi();
  584.   WiFi_Port.println(lens);
  585.   returnmsg_ok_1WiFi();
  586.   WiFi_Port.print("POST http://api.heclouds点com/devices/");
  587.   returnmsgWiFi();
  588.   WiFi_Port.print(deviceid);
  589.   returnmsgWiFi();
  590.   WiFi_Port.print("/datapoints HTTP/1.1");
  591.   returnmsgWiFi();
  592.   WiFi_Port.print("\r\n");
  593.   returnmsgWiFi();
  594.   WiFi_Port.print("Host: ");
  595.   returnmsgWiFi();
  596.   WiFi_Port.print(Host);
  597.   returnmsgWiFi();
  598.   WiFi_Port.print("\r\n");
  599.   returnmsgWiFi();
  600.   WiFi_Port.print("api-key: ");
  601.   returnmsgWiFi();
  602.   WiFi_Port.print(APIkey);
  603.   returnmsgWiFi();
  604.   WiFi_Port.print("\r\n");
  605.   returnmsgWiFi();
  606.   WiFi_Port.println("Connection: close");
  607.   returnmsgWiFi();
  608.   WiFi_Port.print("Content-Length: ");
  609.   returnmsgWiFi();
  610.   WiFi_Port.print(lenss);
  611.   returnmsgWiFi();
  612.   WiFi_Port.print("\r\n");
  613.   returnmsgWiFi();
  614.   WiFi_Port.print("\r\n");
  615.   returnmsgWiFi();
  616.   ////////////////////////////////////////////////////////////////////sensor data
  617.   WiFi_Port.print("{\"datastreams\":[");
  618.   ///////////////////////////////////////////////////////////////////sensor1
  619.   WiFi_Port.print("{\"id\":\"");
  620.   WiFi_Port.print(sensorid1);
  621.   WiFi_Port.print("\",\"datapoints\":[{\"value\":");
  622.   WiFi_Port.print(Data1);
  623.   WiFi_Port.print("}]},");
  624.   returnmsgWiFi();
  625.   ///////////////////////////////////////////////////////////////////sensor2
  626.   WiFi_Port.print("{\"id\":\"");
  627.   WiFi_Port.print(sensorid2);
  628.   WiFi_Port.print("\",\"datapoints\":[{\"value\":");
  629.   WiFi_Port.print(Data2);
  630.   WiFi_Port.print("}]},");
  631.   returnmsgWiFi();
  632.   ///////////////////////////////////////////////////////////////////sensor3
  633.   WiFi_Port.print("{\"id\":\"");
  634.   WiFi_Port.print(sensorid3);
  635.   WiFi_Port.print("\",\"datapoints\":[{\"value\":");
  636.   WiFi_Port.print(Data3);
  637.   WiFi_Port.print("}]},");
  638.   returnmsgWiFi();
  639.   ///////////////////////////////////////////////////////////////////sensor4
  640.   WiFi_Port.print("{\"id\":\"");
  641.   WiFi_Port.print(sensorid4);
  642.   WiFi_Port.print("\",\"datapoints\":[{\"value\":");
  643.   WiFi_Port.print(Data4);
  644.   WiFi_Port.print("}]}");
  645.   returnmsgWiFi();
  646.   //////////////////////////////////////////////////////////////sensor end
  647.   WiFi_Port.print("]}");
  648.   ////////////////////////////////////////////////////sensor data end
  649.   returnmsgWiFi();
  650.   WiFi_Port.print("\r\n");
  651.   WiFi_Port.print("\r\n");
  652.   WiFi_Port.print("\r\n");
  653.   WiFi_Port.print("\r\n");
  654.   returnmsg_ok_finishWiFi();
  655. }

  656. //********************************************************** OneNet  WiFi  send  Data *******************************************************************************************************
  657. /////////////////////////////////////////////////////////////////////////////////////////
  658. //本函数用于发送一个数据流的数据点,数值为字符数组类型                                 //
  659. // APIkey OneNet对应设备的MasterKey或Apikey                                            //
  660. // deviceid 对应设备的ID                                                               //
  661. // Host HTTP服务器名称                                                                 //
  662. // sensorid  对应数据流1的ID,thisData对应数据流1的数值                                //
  663. /////////////////////////////////////////////////////////////////////////////////////////
  664. void sendDataWiFiC(String APIkey, char *thisData, unsigned long deviceid,String Host, String sensorid )
  665. {
  666.   int l = strlen(thisData);
  667.   int D = getLength(deviceid);
  668.   int S = sensorid.length();
  669.   int lenss = 53 + S + l;
  670.   int lll = getLength(lenss);
  671.   int lens = 214 + D + S + l + lll;
  672.   WiFi_Port.println("AT+CIPSTART=\"TCP\",\"183.230.40.33\",80");
  673.   returnmsg_ok_conWiFi();
  674.   Debug_Port.println("connecting...");
  675.   WiFi_Port.print("AT+CIPSEND=");
  676.   returnmsgWiFi();
  677.   WiFi_Port.println(lens);
  678.   returnmsg_ok_1WiFi();
  679.   WiFi_Port.print("POST http://api.heclouds点com/devices/");
  680.   returnmsgWiFi();
  681.   WiFi_Port.print(deviceid);
  682.   returnmsgWiFi();
  683.   WiFi_Port.print("/datapoints HTTP/1.1");
  684.   returnmsgWiFi();
  685.   WiFi_Port.print("\r\n");
  686.   returnmsgWiFi();
  687.   WiFi_Port.print("Host: ");
  688.   returnmsgWiFi();
  689.   WiFi_Port.print(Host);
  690.   returnmsgWiFi();
  691.   WiFi_Port.print("\r\n");
  692.   returnmsgWiFi();
  693.   WiFi_Port.print("api-key: ");
  694.   returnmsgWiFi();
  695.   WiFi_Port.print(APIkey);
  696.   returnmsgWiFi();
  697.   WiFi_Port.print("\r\n");
  698.   returnmsgWiFi();
  699.   WiFi_Port.println("Connection: close");
  700.   returnmsgWiFi();
  701.   WiFi_Port.print("Content-Length: ");
  702.   returnmsgWiFi();
  703.   WiFi_Port.print(lenss);
  704.   returnmsgWiFi();
  705.   WiFi_Port.print("\r\n");
  706.   returnmsgWiFi();
  707.   WiFi_Port.print("\r\n");
  708.   returnmsgWiFi();
  709.   WiFi_Port.print("{\"datastreams\":[{\"id\":\"");
  710.   WiFi_Port.print(sensorid);
  711.   returnmsgWiFi();
  712.   WiFi_Port.print("\",\"datapoints\":[{\"value\":");
  713.   returnmsgWiFi();
  714.   WiFi_Port.print(thisData);
  715.   WiFi_Port.print("}]}]}");
  716.   returnmsgWiFi();
  717.   WiFi_Port.print("\r\n");
  718.   WiFi_Port.print("\r\n");
  719.   WiFi_Port.print("\r\n");
  720.   WiFi_Port.print("\r\n");
  721.   returnmsg_ok_finishWiFi();
  722. }

  723. //********************************************************** OneNet  WiFi  send 2 Data *******************************************************************************************************
  724. //////////////////////////////////////////////////////////////////////////////////////////
  725. //本函数用于发送四个数据流的数据点,数值为字符串类型                                    //
  726. // APIkey OneNet对应设备的MasterKey或Apikey                                             //
  727. // deviceid 对应设备的ID                                                                //
  728. // Host HTTP服务器名称                                                                  //
  729. // sensorid1  对应数据流1的ID,Data1 对应数据流1的数值                                  //
  730. // sensorid2  对应数据流2的ID,Data2 对应数据流2的数值                                  //
  731. //////////////////////////////////////////////////////////////////////////////////////////
  732. void send2DataWiFiC(String APIkey, char * Data1, char * Data2, unsigned long deviceid,String Host, String sensorid1 , String sensorid2)
  733. {
  734.   int l1 = strlen(Data1);
  735.   int l2 = strlen(Data2);
  736.   int D = getLength(deviceid);
  737.   int S1 = sensorid1.length();
  738.   int S2 = sensorid2.length();
  739.   int lenss = 53 + 36 + S1 + l1 + S2 + l2;      //增加一个数据流Lenss固定长度需要增加36,增加1个数据流需要增加1次36;
  740.   int l3 = getLength(lenss);
  741.   int lens = 214 + 36 + D + S1 + l1 + S2 + l2 + l3; //增加一个数据流Lens固定长度需要增加36,增加1个数据流需要增加1次36;
  742.   WiFi_Port.println("AT+CIPSTART=\"TCP\",\"183.230.40.33\",80");
  743.   returnmsg_ok_conWiFi();
  744.   Debug_Port.println("connecting...");
  745.   WiFi_Port.print("AT+CIPSEND=");
  746.   delay(00);
  747.   returnmsgWiFi();
  748.   WiFi_Port.println(lens);
  749.   returnmsg_ok_1WiFi();
  750.   WiFi_Port.print("POST http://api.heclouds点com/devices/");
  751.   returnmsgWiFi();
  752.   WiFi_Port.print(deviceid);
  753.   returnmsgWiFi();
  754.   WiFi_Port.print("/datapoints HTTP/1.1");
  755.   returnmsgWiFi();
  756.   WiFi_Port.print("\r\n");
  757.   returnmsgWiFi();
  758.   WiFi_Port.print("Host: ");
  759.   returnmsgWiFi();
  760.   WiFi_Port.print(Host);
  761.   returnmsgWiFi();
  762.   WiFi_Port.print("\r\n");
  763.   returnmsgWiFi();
  764.   WiFi_Port.print("api-key: ");
  765.   returnmsgWiFi();
  766.   WiFi_Port.print(APIkey);
  767.   returnmsgWiFi();
  768.   WiFi_Port.print("\r\n");
  769.   returnmsgWiFi();
  770.   WiFi_Port.println("Connection: close");
  771.   returnmsgWiFi();
  772.   WiFi_Port.print("Content-Length: ");
  773.   returnmsgWiFi();
  774.   WiFi_Port.print(lenss);
  775.   returnmsgWiFi();
  776.   WiFi_Port.print("\r\n");
  777.   returnmsgWiFi();
  778.   WiFi_Port.print("\r\n");
  779.   returnmsgWiFi();
  780.   ////////////////////////////////////////////////////////////////////sensor data
  781.   WiFi_Port.print("{\"datastreams\":[");
  782.   ///////////////////////////////////////////////////////////////////sensor1
  783.   WiFi_Port.print("{\"id\":\"");
  784.   WiFi_Port.print(sensorid1);
  785.   WiFi_Port.print("\",\"datapoints\":[{\"value\":");
  786.   WiFi_Port.print(Data1);
  787.   WiFi_Port.print("}]},");
  788.   returnmsgWiFi();
  789.   ///////////////////////////////////////////////////////////////////sensor2
  790.   WiFi_Port.print("{\"id\":\"");
  791.   WiFi_Port.print(sensorid2);
  792.   WiFi_Port.print("\",\"datapoints\":[{\"value\":");
  793.   WiFi_Port.print(Data2);
  794.   WiFi_Port.print("}]}");
  795.   returnmsgWiFi();
  796.   ///////////////////////////////////////////////////////////////////sensor end
  797.   WiFi_Port.print("]}");
  798.   ////////////////////////////////////////////////////sensor data end
  799.   returnmsgWiFi();
  800.   WiFi_Port.print("\r\n");
  801.   WiFi_Port.print("\r\n");
  802.   WiFi_Port.print("\r\n");
  803.   WiFi_Port.print("\r\n");
  804.   returnmsg_ok_finishWiFi();
  805. }
  806. //********************************************************** OneNet  WiFi  send 3 Data *******************************************************************************************************
  807. //////////////////////////////////////////////////////////////////////////////////////////
  808. //本函数用于发送四个数据流的数据点,数值为字符串类型                                    //
  809. // APIkey OneNet对应设备的MasterKey或Apikey                                             //
  810. // deviceid 对应设备的ID                                                                //
  811. // Host HTTP服务器名称                                                                  //
  812. // sensorid1  对应数据流1的ID,Data1 对应数据流1的数值                                  //
  813. // sensorid2  对应数据流2的ID,Data2 对应数据流2的数值                                  //
  814. // sensorid3  对应数据流3的ID,Data3 对应数据流3的数值                                  //
  815. //////////////////////////////////////////////////////////////////////////////////////////
  816. void send3DataWiFiC(String APIkey, char * Data1, char * Data2, char * Data3, unsigned long deviceid,String Host, String sensorid1, String sensorid2, String sensorid3)
  817. {
  818.   int l1 = strlen(Data1);
  819.   int l2 = strlen(Data2);
  820.   int l3 = strlen(Data3);
  821.   int D = getLength(deviceid);
  822.   int S1 = sensorid1.length();
  823.   int S2 = sensorid2.length();
  824.   int S3 = sensorid3.length();
  825.   int lenss = 53 + 36 + 36 + S1 + l1 + S2 + l2 + S3 + l3;  //增加一个数据流Lens固定长度需要增加36,增加2个数据流需要增加2次36;
  826.   int lll = getLength(lenss);
  827.   int lens = 214 + 36 + 36 + D + lll + S1 + l1 + S2 + l2 + S3 + l3; //增加一个数据流Lens固定长度需要增加36,增加2个数据流需要增加2次36;
  828.   WiFi_Port.println("AT+CIPSTART=\"TCP\",\"183.230.40.33\",80");
  829.   returnmsg_ok_conWiFi();
  830.   Debug_Port.println("connecting...");
  831.   WiFi_Port.print("AT+CIPSEND=");
  832.   delay(00);
  833.   returnmsgWiFi();
  834.   WiFi_Port.println(lens);
  835.   returnmsg_ok_1WiFi();
  836.   WiFi_Port.print("POST http://api.heclouds点com/devices/");
  837.   returnmsgWiFi();
  838.   WiFi_Port.print(deviceid);
  839.   returnmsgWiFi();
  840.   WiFi_Port.print("/datapoints HTTP/1.1");
  841.   returnmsgWiFi();
  842.   WiFi_Port.print("\r\n");
  843.   returnmsgWiFi();
  844.   WiFi_Port.print("Host: ");
  845.   returnmsgWiFi();
  846.   WiFi_Port.print(Host);
  847.   returnmsgWiFi();
  848.   WiFi_Port.print("\r\n");
  849.   returnmsgWiFi();
  850.   WiFi_Port.print("api-key: ");
  851.   returnmsgWiFi();
  852.   WiFi_Port.print(APIkey);
  853.   returnmsgWiFi();
  854.   WiFi_Port.print("\r\n");
  855.   returnmsgWiFi();
  856.   WiFi_Port.println("Connection: close");
  857.   returnmsgWiFi();
  858.   WiFi_Port.print("Content-Length: ");
  859.   returnmsgWiFi();
  860.   WiFi_Port.print(lenss);
  861.   returnmsgWiFi();
  862.   WiFi_Port.print("\r\n");
  863.   returnmsgWiFi();
  864.   WiFi_Port.print("\r\n");
  865.   returnmsgWiFi();
  866.   ////////////////////////////////////////////////////////////////////sensor data
  867.   WiFi_Port.print("{\"datastreams\":[");
  868.   ///////////////////////////////////////////////////////////////////sensor1
  869.   WiFi_Port.print("{\"id\":\"");
  870.   WiFi_Port.print(sensorid1);
  871.   WiFi_Port.print("\",\"datapoints\":[{\"value\":");
  872.   WiFi_Port.print(Data1);
  873.   WiFi_Port.print("}]},");
  874.   returnmsgWiFi();
  875.   ///////////////////////////////////////////////////////////////////sensor2
  876.   WiFi_Port.print("{\"id\":\"");
  877.   WiFi_Port.print(sensorid2);
  878.   WiFi_Port.print("\",\"datapoints\":[{\"value\":");
  879.   WiFi_Port.print(Data2);
  880.   WiFi_Port.print("}]},");
  881.   returnmsgWiFi();
  882.   ///////////////////////////////////////////////////////////////////sensor2
  883.   WiFi_Port.print("{\"id\":\"");
  884.   WiFi_Port.print(sensorid3);
  885.   WiFi_Port.print("\",\"datapoints\":[{\"value\":");
  886.   WiFi_Port.print(Data3);
  887.   WiFi_Port.print("}]}");
  888.   returnmsgWiFi();
  889.   ///////////////////////////////////////////////////////////////////sensor end
  890.   WiFi_Port.print("]}");
  891.   ////////////////////////////////////////////////////sensor data end
  892.   returnmsgWiFi();
  893.   WiFi_Port.print("\r\n");
  894.   WiFi_Port.print("\r\n");
  895.   WiFi_Port.print("\r\n");
  896.   WiFi_Port.print("\r\n");
  897.   returnmsg_ok_finishWiFi();
  898. }
  899. //********************************************************** OneNet  WiFi  send 4 Data *******************************************************************************************************
  900. //////////////////////////////////////////////////////////////////////////////////////////
  901. //本函数用于发送四个数据流的数据点,数值为字符串类型                                    //
  902. // APIkey OneNet对应设备的MasterKey或Apikey                                             //
  903. // deviceid 对应设备的ID                                                                //
  904. // Host HTTP服务器名称                                                                  //
  905. // sensorid1  对应数据流1的ID,Data1 对应数据流1的数值                                  //
  906. // sensorid2  对应数据流2的ID,Data2 对应数据流2的数值                                  //
  907. // sensorid3  对应数据流3的ID,Data3 对应数据流3的数值                                  //
  908. // sensorid4  对应数据流4的ID,Data4 对应数据流4的数值                                  //
  909. //////////////////////////////////////////////////////////////////////////////////////////
  910. void send4DataWiFiC(String APIkey, char * Data1, char * Data2, char * Data3, char * Data4, unsigned long deviceid,String Host, String sensorid1, String sensorid2, String sensorid3, String sensorid4)
  911. {
  912.   int l1 = strlen(Data1);
  913.   int l2 = strlen(Data2);
  914.   int l3 = strlen(Data3);
  915.   int l4 = strlen(Data4);
  916.   int D = getLength(deviceid);
  917.   int S1 = sensorid1.length();
  918.   int S2 = sensorid2.length();
  919.   int S3 = sensorid3.length();
  920.   int S4 = sensorid4.length();
  921.   int lenss = 53 + 36 + 36 + 36 + S1 + l1 + S2 + l2 + S3 + l3 + S4 + l4; //增加一个数据流Lens固定长度需要增加36,增加3个数据流需要增加3次36;
  922.   int lll = getLength(lenss);
  923.   int lens = 214 + 36 + 36 + 36 + D + lll + S1 + l1 + S2 + l2 + S3 + l3 + S4 + l4; //增加一个数据流Lens固定长度需要增加36,增加3个数据流需要增加3次36;
  924.   WiFi_Port.println("AT+CIPSTART=\"TCP\",\"183.230.40.33\",80");
  925.   returnmsg_ok_conWiFi();
  926.   Debug_Port.println("connecting...");
  927.   WiFi_Port.print("AT+CIPSEND=");
  928.   delay(00);
  929.   returnmsgWiFi();
  930.   WiFi_Port.println(lens);
  931.   returnmsg_ok_1WiFi();
  932.   WiFi_Port.print("POST http://api.heclouds点com/devices/");
  933.   returnmsgWiFi();
  934.   WiFi_Port.print(deviceid);
  935.   returnmsgWiFi();
  936.   WiFi_Port.print("/datapoints HTTP/1.1");
  937.   returnmsgWiFi();
  938.   WiFi_Port.print("\r\n");
  939.   returnmsgWiFi();
  940.   WiFi_Port.print("Host: ");
  941.   returnmsgWiFi();
  942.   WiFi_Port.print(Host);
  943.   returnmsgWiFi();
  944.   WiFi_Port.print("\r\n");
  945.   returnmsgWiFi();
  946.   WiFi_Port.print("api-key: ");
  947.   returnmsgWiFi();
  948.   WiFi_Port.print(APIkey);
  949.   returnmsgWiFi();
  950.   WiFi_Port.print("\r\n");
  951.   returnmsgWiFi();
  952.   WiFi_Port.println("Connection: close");
  953.   returnmsgWiFi();
  954.   WiFi_Port.print("Content-Length: ");
  955.   returnmsgWiFi();
  956.   WiFi_Port.print(lenss);
  957.   returnmsgWiFi();
  958.   WiFi_Port.print("\r\n");
  959.   returnmsgWiFi();
  960.   WiFi_Port.print("\r\n");
  961.   returnmsgWiFi();
  962.   ////////////////////////////////////////////////////////////////////sensor data
  963.   WiFi_Port.print("{\"datastreams\":[");
  964.   ///////////////////////////////////////////////////////////////////sensor1
  965.   WiFi_Port.print("{\"id\":\"");
  966.   WiFi_Port.print(sensorid1);
  967.   WiFi_Port.print("\",\"datapoints\":[{\"value\":");
  968.   WiFi_Port.print(Data1);
  969.   WiFi_Port.print("}]},");
  970.   returnmsgWiFi();
  971.   ///////////////////////////////////////////////////////////////////sensor2
  972.   WiFi_Port.print("{\"id\":\"");
  973.   WiFi_Port.print(sensorid2);
  974.   WiFi_Port.print("\",\"datapoints\":[{\"value\":");
  975.   WiFi_Port.print(Data2);
  976.   WiFi_Port.print("}]},");
  977.   returnmsgWiFi();
  978.   ///////////////////////////////////////////////////////////////////sensor3
  979.   WiFi_Port.print("{\"id\":\"");
  980.   WiFi_Port.print(sensorid3);
  981.   WiFi_Port.print("\",\"datapoints\":[{\"value\":");
  982.   WiFi_Port.print(Data3);
  983.   WiFi_Port.print("}]},");
  984.   returnmsgWiFi();
  985.   ///////////////////////////////////////////////////////////////////sensor4
  986.   WiFi_Port.print("{\"id\":\"");
  987.   WiFi_Port.print(sensorid4);
  988.   WiFi_Port.print("\",\"datapoints\":[{\"value\":");
  989.   WiFi_Port.print(Data4);
  990.   WiFi_Port.print("}]}");
  991.   returnmsgWiFi();
  992.   //////////////////////////////////////////////////////////////sensor end
  993.   WiFi_Port.print("]}");
  994.   ////////////////////////////////////////////////////sensor data end
  995.   returnmsgWiFi();
  996.   WiFi_Port.print("\r\n");
  997.   WiFi_Port.print("\r\n");
  998.   WiFi_Port.print("\r\n");
  999.   WiFi_Port.print("\r\n");
  1000.   returnmsg_ok_finishWiFi();
  1001. }
  1002. //********************************************************** OneNet  WiFi  send  GPS Data *******************************************************************************************************
  1003. ////////////////////////////////////////////////////////////////////////////////////
  1004. //本函数用于发送GPS数据流的数据点,数值为整数类型                                 //
  1005. // APIkey OneNet对应设备的MasterKey或Apikey                                       //
  1006. // deviceid 对应设备的ID                                                          //
  1007. // Host HTTP服务器名称                                                            //
  1008. // sensorid  对应GPS数据流的ID                                                    //
  1009. // LON  对应经度的数值                                                            //
  1010. // LAT  对应纬度数值                                                              //
  1011. // HEIGH  对应海拔高度数值;                                                      //
  1012. ////////////////////////////////////////////////////////////////////////////////////
  1013. void sendGPSDataWiFi(char* HEIGH, unsigned long deviceid, String sensorid,String Host, char* LON, char* LAT, String APIkey )
  1014. {
  1015.   int l = strlen(HEIGH);
  1016.   int D = getLength(deviceid);
  1017.   int S = sensorid.length();
  1018.   int Lonlen = strlen(LON);
  1019.   int Latlen = strlen(LAT);
  1020.   int lenss = 53 + 28 + S + l + Lonlen + Latlen;
  1021.   int l2 = getLength(lenss);
  1022.   int lens = 214 + 28 + D + S + l + Lonlen + Latlen + l2;
  1023.   WiFi_Port.println(lens);
  1024.   WiFi_Port.println("AT+CIPSTART=\"TCP\",\"183.230.40.33\",80");
  1025.   returnmsg_ok_conWiFi();
  1026.   Debug_Port.println("connecting...");
  1027.   WiFi_Port.print("AT+CIPSEND=");
  1028.   returnmsgWiFi();
  1029.   WiFi_Port.println(lens);
  1030.   returnmsg_ok_1WiFi();
  1031.   WiFi_Port.print("POST http://api.heclouds点com/devices/");
  1032.   returnmsgWiFi();
  1033.   WiFi_Port.print(deviceid);
  1034.   returnmsgWiFi();
  1035.   WiFi_Port.print("/datapoints HTTP/1.1");
  1036.   returnmsgWiFi();
  1037.   WiFi_Port.print("\r\n");
  1038.   returnmsgWiFi();
  1039.   WiFi_Port.print("Host: ");
  1040.   returnmsgWiFi();
  1041.   WiFi_Port.print(Host);
  1042.   returnmsgWiFi();
  1043.   WiFi_Port.print("\r\n");
  1044.   returnmsgWiFi();
  1045.   WiFi_Port.print("api-key: ");
  1046.   returnmsgWiFi();
  1047.   WiFi_Port.print(APIkey);
  1048.   returnmsgWiFi();
  1049.   WiFi_Port.print("\r\n");
  1050.   returnmsgWiFi();
  1051.   WiFi_Port.println("Connection: close");
  1052.   returnmsgWiFi();
  1053.   WiFi_Port.print("Content-Length: ");
  1054.   returnmsgWiFi();
  1055.   WiFi_Port.print(lenss);
  1056.   returnmsgWiFi();  WiFi_Port.print("\r\n");
  1057.   returnmsgWiFi();
  1058.   WiFi_Port.print("\r\n");
  1059.   returnmsgWiFi();
  1060.   WiFi_Port.print("{\"datastreams\":[{\"id\":\"");
  1061.   returnmsgWiFi();
  1062.   WiFi_Port.print(sensorid);
  1063.   returnmsgWiFi();
  1064.   WiFi_Port.print("\",\"datapoints\":[{\"value\":{\"lon\":\"");
  1065.   returnmsgWiFi();
  1066.   WiFi_Port.print(LON);
  1067.   returnmsgWiFi();
  1068.   WiFi_Port.print("\",\"lat\":\"");
  1069.   returnmsgWiFi();
  1070.   WiFi_Port.print(LAT);
  1071.   returnmsgWiFi();
  1072.   WiFi_Port.print("\",\"ele\":\"");
  1073.   returnmsgWiFi();
  1074.   WiFi_Port.print(HEIGH);
  1075.   returnmsgWiFi();
  1076.   WiFi_Port.print("\"}}]}]}");
  1077.   returnmsgWiFi();
  1078.   WiFi_Port.print("\r\n");
  1079.   returnmsgWiFi();
  1080.   WiFi_Port.print("\r\n");
  1081.   WiFi_Port.print("\r\n");
  1082.   WiFi_Port.print("\r\n");
  1083.   returnmsg_ok_finishWiFi();
  1084. }
  1085. ///////////////////////////////////////////////////////////////////////////////
  1086. //本函数用于判断串口发挥至是否有关键字“OK”                                   //
  1087. //如60秒内无正确返回,强制执行AT+CIPCLOSE,强行关闭TCP连接                   //
  1088. ///////////////////////////////////////////////////////////////////////////////
  1089. void returnmsg_okWiFi()
  1090. {
  1091.   String _TEMPdata = "";
  1092.   unsigned long _PT0 = 0;
  1093.   unsigned long _PT1 = 0;
  1094.   _PT0 = millis();
  1095.   _TEMPdata = "";
  1096.   while (1)
  1097.   {
  1098.     _PT1 = millis();
  1099.     if (_PT1 - _PT0 > 60000)
  1100.     {
  1101.       Debug_Port.println("   ");
  1102.       Debug_Port.println("Get error..................");
  1103.       WiFi_Port.println("AT+CIPCLOSE");
  1104.       return ;
  1105.     }
  1106.     while (WiFi_Port.available())
  1107.     {
  1108.       _TEMPdata += char(WiFi_Port.read());
  1109.       //Debug_Port.println(_TEMPdata);
  1110.       delay(2);
  1111.     }
  1112.     if (_TEMPdata.indexOf("OK") > 0)
  1113.     {
  1114.       // Debug_Port.println(_TEMPdata);
  1115.       Debug_Port.println("");
  1116.       _TEMPdata = "";
  1117.       break;
  1118.     }
  1119.     else
  1120.     {
  1121.       delay(1);
  1122.     }
  1123.   }
  1124.   return;
  1125. }
  1126. ///////////////////////////////////////////////////////////////////
  1127. //本函数用于打印WiFi的串口返回信息,用于Debug,无实际作用        //
  1128. ///////////////////////////////////////////////////////////////////
  1129. void returnmsgWiFi()
  1130. {
  1131.   String  _TEMPdata = "";
  1132.   while (!WiFi_Port.available())
  1133.   {
  1134.   }
  1135.   while (WiFi_Port.available())
  1136.   {
  1137.     _TEMPdata += char(WiFi_Port.read());
  1138.     delay(1);
  1139.   }
  1140.   Debug_Port.print(_TEMPdata);
  1141.   _TEMPdata = "";
  1142.   return;
  1143. }
  1144. ///////////////////////////////////////////////////////////////////////////////
  1145. //本函数用于判断串口发挥至是否有关键字“OK”和“ready”                      //
  1146. //如60秒内无正确返回,强制执行AT+CIPCLOSE,强行关闭TCP连接                   //
  1147. ///////////////////////////////////////////////////////////////////////////////
  1148. void returnmsg_ok_readyWiFi()
  1149. {
  1150.   String  _TEMPdata = "";
  1151.   unsigned long _PT0 = 0;
  1152.   unsigned long _PT1 = 0;
  1153.   _PT0 = millis();
  1154.   _TEMPdata = "";
  1155.   while (1)
  1156.   {
  1157.     _PT1 = millis();
  1158.     if (_PT1 - _PT0 > 60000)
  1159.     {
  1160.       Debug_Port.println("   ");
  1161.       Debug_Port.println("Get error..................");
  1162.       WiFi_Port.println("AT+CIPCLOSE");
  1163.       
  1164.       return ;
  1165.     }
  1166.     while (WiFi_Port.available())
  1167.     {
  1168.       _TEMPdata += char(WiFi_Port.read());
  1169.       //DebugDebug_Port.println(_TEMPdata);
  1170.       delayMicroseconds(800);
  1171.     }
  1172.     if ((_TEMPdata.indexOf("OK") > 0) && (_TEMPdata.indexOf("ready") > 0))
  1173.     {
  1174.       // Debug_Port.println(_TEMPdata);
  1175.       Debug_Port.println("");
  1176.       _TEMPdata = "";
  1177.       break;
  1178.     }
  1179.   }
  1180.   return;
  1181. }


  1182. ///////////////////////////////////////////////////////////////////////////////
  1183. //本函数用于判断是否正确的完成了TCP连接;                                    //
  1184. //判断标志为返回了“OK”以及"CONNECT"                                        //
  1185. //如超过20秒还没收到以上两个关键字,则主动执行一次关闭连接操作并退出         //
  1186. ///////////////////////////////////////////////////////////////////////////////
  1187. void returnmsg_ok_conWiFi()
  1188. {
  1189.   String  _TEMPdata = "";
  1190.   unsigned long _PT0 = 0;
  1191.   unsigned long _PT1 = 0;
  1192.   _PT0 = millis();
  1193.   _TEMPdata = "";
  1194.   while (1)
  1195.   {
  1196.     _PT1 = millis();
  1197.     if (_PT1 - _PT0 > 20000)
  1198.     {
  1199.       Debug_Port.println("   ");
  1200.       Debug_Port.println("Get error..................");
  1201.       WiFi_Port.println("AT+CIPCLOSE");
  1202.       returnmsgWiFi();
  1203.       return ;
  1204.     }
  1205.     while (WiFi_Port.available())
  1206.     {
  1207.       _TEMPdata += char(WiFi_Port.read());
  1208.       delay(1);
  1209.     }
  1210.     if ((_TEMPdata.indexOf("OK") > 3) && (_TEMPdata.indexOf("CONNECT") > 0))
  1211.     {
  1212.       Debug_Port.println(_TEMPdata);
  1213.       Debug_Port.println("");
  1214.       _TEMPdata = "";
  1215.       break;
  1216.     }
  1217.   }
  1218.   return;
  1219. }



  1220. ////////////////////////////////////////////////////////////////////////////////////
  1221. //本函数用于判断服务器收到相应的命令后是否正确的执行并返回了相应的信息。          //
  1222. //判断标志为返回了“OK”以及"CLOSED"                                              //
  1223. //如超过20秒还没收到以上两个关键字,则主动执行一次关闭连接操作并退出。            //
  1224. ////////////////////////////////////////////////////////////////////////////////////
  1225. void returnmsg_ok_finishWiFi()
  1226. {
  1227.   String  _TEMPdata = "";
  1228.   unsigned long _PT0 = 0;
  1229.   unsigned long _PT1 = 0;
  1230.   _PT0 = millis();
  1231.   _TEMPdata = "";
  1232.   while (1)
  1233.   {
  1234.     _PT1 = millis();
  1235.     if (_PT1 - _PT0 > 20000)
  1236.     {
  1237.       Debug_Port.println("   ");
  1238.       Debug_Port.println("Get error..................");
  1239.       WiFi_Port.println("AT+CIPCLOSE");
  1240.       returnmsgWiFi();
  1241.       return ;
  1242.     }
  1243.     while (WiFi_Port.available())
  1244.     {
  1245.       _TEMPdata += char(WiFi_Port.read());
  1246.       // Debug_Port.println(_TEMPdata);
  1247.       delayMicroseconds(700);
  1248.     }
  1249.     if ((_TEMPdata.indexOf("CLOSED") > 3) && (_TEMPdata.indexOf("OK") > 0))
  1250.     {
  1251.       Debug_Port.println(_TEMPdata);
  1252.       Debug_Port.println("");
  1253.       _TEMPdata = "";
  1254.       break;
  1255.     }
  1256.     else
  1257.     {
  1258.       ;
  1259.     }
  1260.   }
  1261.   return;
  1262. }


  1263. /////////////////////////////////////////////////////////////////////////////////////////
  1264. //本函数用于判断CIPSEND后是否返回了“OK”或“close”                                   //
  1265. //收到任何一个都退出。                                                                 //
  1266. /////////////////////////////////////////////////////////////////////////////////////////
  1267. void returnmsg_ok_errWiFi()
  1268. {
  1269.   String  _TEMPdata = "";
  1270.   unsigned long _PT0 = 0;
  1271.   unsigned long _PT1 = 0;
  1272.   _PT0 = millis();
  1273.   _TEMPdata = "";
  1274.   while (1)
  1275.   {
  1276.     while ( WiFi_Port.available())
  1277.     {
  1278.       _TEMPdata += char( WiFi_Port.read());
  1279.       //Debug_Port.println(_TEMPdata);
  1280.       delay(2);
  1281.     }
  1282.     if ((_TEMPdata.indexOf("OK") > 1) || (_TEMPdata.indexOf("ERROR") > 1))
  1283.     {
  1284.       Debug_Port.println(_TEMPdata);
  1285.       Debug_Port.println("");
  1286.       _TEMPdata = "";
  1287.       break ;
  1288.     }
  1289.   }
  1290.   return ;

  1291. }
  1292. /////////////////////////////////////////////////////////////////////////////////////////
  1293. //本函数用于判断CIPSEND后是否返回了“OK”和“close”                                   //
  1294. //如超过20秒没有还没收到以上两个关键字,则主动执行一次关闭连接操作并退出。             //
  1295. /////////////////////////////////////////////////////////////////////////////////////////
  1296. void returnmsg_ok_closeWiFi()
  1297. {
  1298.   String   _TEMPdata = "";
  1299.   unsigned long _PT0 = 0;
  1300.   unsigned long _PT1 = 0;
  1301.   _PT0 = millis();
  1302.   _TEMPdata = "";
  1303.   while (1)
  1304.   {
  1305.     _PT1 = millis();
  1306.     if (_PT1 - _PT0 > 20000)
  1307.     {
  1308.       Debug_Port.println("   ");
  1309.       Debug_Port.println("Get error..................");
  1310.       WiFi_Port.println("AT+CIPCLOSE");
  1311.       
  1312.       return ;
  1313.     }
  1314.     while (WiFi_Port.available())
  1315.     {
  1316.       _TEMPdata += char(WiFi_Port.read());
  1317.       // DebugDebug_Port.println(_TEMPdata);
  1318.       delayMicroseconds(700);
  1319.     }
  1320.     if ((_TEMPdata.indexOf("close") > 3) && (_TEMPdata.indexOf("OK") > 0))
  1321.     {
  1322.       Debug_Port.println(_TEMPdata);
  1323.       Debug_Port.println("");
  1324.       _TEMPdata = "";
  1325.       break;
  1326.     }
  1327.     else
  1328.     {
  1329.       ;
  1330.     }
  1331.   }
  1332.   return;
  1333. }
  1334. /////////////////////////////////////////////////////////////////////////////////////////
  1335. //本函数用于判断CIPSEND后是否返回了“>”                                               //
  1336. //如超过20秒没有还没收到以上关键字,则主动执行一次关闭连接操作并退出。                 //
  1337. /////////////////////////////////////////////////////////////////////////////////////////
  1338. void returnmsg_ok_1WiFi()
  1339. {
  1340.   String _TEMPdata = "";
  1341.   unsigned long _PT0 = 0;
  1342.   unsigned long _PT1 = 0;
  1343.   _PT0 = millis();
  1344.   _TEMPdata = "";
  1345.   while (1)
  1346.   {
  1347.     _PT1 = millis();
  1348.     if (_PT1 - _PT0 > 20000)
  1349.     {
  1350.       Debug_Port.println("   ");
  1351.       Debug_Port.println("Get error..................");
  1352.       WiFi_Port.println("AT+CIPCLOSE");
  1353.       
  1354.       return ;
  1355.     }
  1356.     while (WiFi_Port.available())
  1357.     {
  1358.       _TEMPdata += char(WiFi_Port.read());
  1359.       // DebugDebug_Port.println(_TEMPdata);
  1360.       delay(2);
  1361.     }
  1362.     if (_TEMPdata.indexOf(">") > 0)
  1363.     {
  1364.       Debug_Port.println(_TEMPdata);
  1365.       Debug_Port.println("");
  1366.       _TEMPdata = "";
  1367.       break;
  1368.     }
  1369.     else
  1370.     {
  1371.       delay(1);
  1372.     }
  1373.   }
  1374.   return;
  1375. }
  1376. ///////////////////////////////////////////////////////////////////
  1377. //本函数用于计算一个长整型数值的长度                             //
  1378. //返回值为int类型数值                                            //
  1379. ///////////////////////////////////////////////////////////////////
  1380. int getLength(unsigned long someValue)
  1381. {
  1382.   int digits = 1;
  1383.   int dividend = someValue / 10;
  1384.   while (dividend > 0) {
  1385.     dividend = dividend / 10;
  1386.     digits++;
  1387.   }
  1388.   return digits;
  1389. }
复制代码


OneNet_POST_GET_Function.rar

5.66 KB, 下载次数: 8, 下载积分: 黑币 -5

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表