我在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;
}
}