關於使用Serial抓取ESP8266響應

Cooleitar
Posts: 1
Joined: Fri Jun 12, 2015 4:20 pm

關於使用Serial抓取ESP8266響應

Postby Cooleitar » Mon Jun 15, 2015 10:07 pm

您好:

我在Loop內想要利用Serial抓取ESP8266響應

目前已經成功可以取得

Link 與 UnLink 的響應進而驅動pin2、Pin3使LED燈明滅。

但似乎就是無法抓取到從電腦送出測試訊號後的響應,例如從電腦送出123
ESP8266響應如下:
+IPD,0,3:123
OK

Arduino內不管是定義成 if(s.substring(0,2)=="OK") or if(s.substring(0,5)=="+IPD,") ,都無法驅動Pin4的LED燈呢

有正確的方法可以提供嗎?


Code: Select all

boolean Runing;

void setup() {
  // put your setup code here, to run once:
    Serial.begin( 115200 );
    delay(2000);
    Serial.println("AT+RST");
    delay(6000);
    Serial.println("AT+CWMODE=3");
    delay(2000);
    Serial.println("AT+CWJAP=\"test_AP\",\"0123456789\"");
    delay(2000);
    Serial.println("AT+CIPMUX=1");
    delay(2000);
    Serial.println("AT+CIPSERVER=1,1336");
    delay(2000);
   
    Runing=false;
}

void loop() {
  // put your main code here, to run repeatedly:
   
   if(Runing==false)
   {   
    Runing=true;
    String s = "";

    while (Serial.available()) {
        char c = (char) Serial.read();
        if(c!='\n'){
            s += c;
        }
        delay(50); // 沒有延遲的話 UART 串口速度會跟不上Arduino的速度,會導致資料不完整
    }   
   
    if(s!="")
    {     
      if(s.substring(0,4)=="Link")//VB開啟與模組通訊
      {
        pinMode(2,OUTPUT);
        digitalWrite(2,HIGH);
     
        pinMode(3,OUTPUT);
        digitalWrite(3,LOW);
     
        Serial.println("AT+CIPSEND=0,32");
        delay(1000);
        Serial.println("ESP8266 wifi module response !");
       
      }
     
      if(s.substring(0,6)=="Unlink")//VB關閉與模組通訊
      {
        pinMode(3,OUTPUT);
        digitalWrite(3,HIGH);
     
        pinMode(2,OUTPUT);
        digitalWrite(2,LOW);     
      }
     
      if(s.substring(0,2)=="OK")//前兩碼用於定義控制板ID
      {
        pinMode(4,OUTPUT);
        digitalWrite(4,HIGH);
        delay(1000);
        digitalWrite(4,LOW);     
      }
    }
   
    Runing=false;
   }
}


Who is online

Users browsing this forum: No registered users and 188 guests