电脑开关机还优化

代码如下:

#include <EspSaveCrash.h>
#include <ESP8266WiFi.h>

//QQ群:51798659 个人使用!开门检测2.0———— 2017-5-18Tlink_平台可用 速度快可微信控制
const char *ssid     = "modou-2002";//这里是连接你需要的wifi名字
//const char *ssid     = "WiFi";
const char *password = "23456789";//你要连接的wifi密码

#define gdm 4//关大门
#define tdm 14//停止大门
#define kdm 12//开大门
#define km 13//开门

#define xuliehao "WM287VK10DI1FR8X"
#define gdm_id "200045818"
#define tdm_id "200045819"
#define kdm_id "200045817"  
#define men_id "200059836" 

boolean gdm_b=false;
boolean tdm_b=false;
boolean kdm_b=false;
boolean men_b=false;

char server[] = "tcp.tlink.io";   // 连接 的服务器地址
String jsVal = "";//全局变量 接收值
String pd_id;
int i=0;
int t_d=0;//网络出错时间
int d_c=0;//出错错误次数相加
int d_f1;

WiFiClient client;//初始化  
//void(* resetFunc) (void) = 0; //制造重启命令//////////////////////////////
void setup() {
  pinMode(tdm, OUTPUT);
  pinMode(gdm, OUTPUT);
  pinMode(kdm, OUTPUT);
  pinMode(km, OUTPUT);
  Serial.begin(115200);
  
  WiFi.begin(ssid, password);  
  while (WiFi.status() != WL_CONNECTED)//WiFi.status() ,这个函数是wifi连接状态,返回wifi链接状态
    {
       delay(500);
       Serial.print(".");
     }//如果没有连通向串口发送....
      Serial.println("");
      Serial.println("IP address: ");
      Serial.println(WiFi.localIP());//WiFi.localIP()返回8266获得的ip地址
      lianjie();
}
void loop() {
  while (client.available()) {
    char c = client.read();
    //Serial.print(c);
    jsVal += c;  
  }
  if (jsVal.length() !=0)
  {
    Serial.println(jsVal);//打印出接收的数据
    //pd=jsVal.charAt(50);//取第几位字符
    //Serial.println(jsVal.charAt(40));//取第几位字符
    Serial.println(jsVal);//串口方便好看
  
 
    if(jsVal.charAt(18)=='s')
      if(jsVal.charAt(26)=='d')
            {
              for(int i=29;i<38;i++)
               {  pd_id= pd_id+jsVal.charAt(i);
              
               }
                char idv=jsVal.charAt(50);
               Serial.println(pd_id);
                Serial.println(idv);
                        
               
              if(!pd_id.compareTo(men_id))
                {
                   if('1'==idv && men_b==false)
                          { men_b==true;
                            digitalWrite(km,HIGH);
                            delay(800);
                            digitalWrite(km,LOW);
                          }
                  else if('0'==idv && men_b==true)
                             men_b=false;
                }

               if(!pd_id.compareTo(kdm_id))
                {
                   if('1'==idv && kdm_b==false)
                          { kdm_b==true;
                            digitalWrite(kdm,HIGH);
                            delay(800);
                            digitalWrite(kdm,LOW);
                          }
                  else if('0'==idv && kdm_b==true)
                             kdm_b=false;
                }
             if(!pd_id.compareTo(gdm_id))
                {
                   if('1'==idv && gdm_b==false)
                          { gdm_b==true;
                            digitalWrite(gdm,HIGH);
                            delay(800);
                            digitalWrite(gdm,LOW);
                          }
                  else if('0'==idv && gdm_b==true)
                             gdm_b=false;
                }

               if(!pd_id.compareTo(tdm_id))
                {
                   if('1'==idv && tdm_b==false)
                          { tdm_b==true;
                            digitalWrite(tdm,HIGH);
                            delay(800);
                            digitalWrite(tdm,LOW);
                          }
                  else if('0'==idv && tdm_b==true)
                             tdm_b=false;
                }


                
                pd_id="";
            }

     
     jsVal = "";
  }
 //如果网络连接失败
  if (!client.connected()) {
    Serial.println(d_c++);
    
    if(d_c>=200)
    {
      ESP.reset();    //重启程序开始
      }
    if(t_d!=millis()/1000){
    Serial.println("disconnecting.");
    t_d=millis()/1000;
    client.stop();}
  }

if(d_f1!=millis()/60000){
 // lianjie();
  Serial.println(i++);
  client.print(i);
  d_f1=millis()/60000;
 if(i>=300)
  ESP.reset();    //重启程序开始
}
}// 此方法对服务器进行HTTP连接并获取数据

void lianjie(void) {
  if (client.connect(server, 8647))//连接服务器
  {
        client.println(xuliehao);
        Serial.println(xuliehao);
  }
  else {
    // 如果你不能建立连接:
    Serial.println("lianjie shibai");
    Serial.println();
    Serial.println(server);
    client.stop();
  }
}

 

posted @ 2017-07-13 23:44  xiaohe520  阅读(165)  评论(0编辑  收藏  举报