pengfei wu
/
ESP8266Program
For test
Diff: ESP8266.cpp
- Revision:
- 27:dc7ad070c5b1
- Parent:
- 23:4cec7b9e3715
- Child:
- 28:c25aff31dcc5
--- a/ESP8266.cpp Wed Feb 04 10:30:44 2015 +0000 +++ b/ESP8266.cpp Wed Feb 04 11:30:09 2015 +0000 @@ -382,32 +382,38 @@ ***************************************************************************/ String ESP8266::showJAP(void) { + bool ret = false; m_esp_uart.flush(); m_esp_uart.println("AT+CWJAP?"); - String data; - unsigned long start; + + String data; + unsigned long start; start = millis(); - while (millis()-start<3000) { - if(m_esp_uart.available()>0) - { - char a =m_esp_uart.readChr(); - data=data+a; - } - if (data.indexOf("OK")!=-1 || data.indexOf("ERROR")!=-1 ) - { - break; - } + while (millis()-start < 3000) { + while(m_esp_uart.available() > 0) { + char a = m_esp_uart.readChr(); + data += a; + //printf("%c", a); + } + if (data.indexOf("OK") != -1) { + ret = true; + break; + } else if (data.indexOf("ERROR") != -1) { + ret = false; + break; + } } - - char head[4] = {0x0D,0x0A}; - char tail[7] = {0x0D,0x0A,0x0D,0x0A}; - data.replace("AT+CWJAP?",""); - data.replace("+CWJAP","AP"); - data.replace("OK",""); - data.replace(tail,""); - data.replace(head,""); - - return data; + if (ret) { + int index1 = data.indexOf(":\""); + int index2 = data.indexOf("\"\r\n"); + if (index1 != -1 && index2 != -1) { + return data.substring(index1 + 2, index2); + } else { + return "not found"; + } + } else { + return "null"; + } } @@ -929,47 +935,40 @@ } -/************************************************************************* -//show the current ip address - - return: string of ip address - -***************************************************************************/ String ESP8266::showIP(void) { + bool ret = false; + m_esp_uart.flush(); + m_esp_uart.println("AT+CIFSR"); + String data; unsigned long start; - - for(int a=0; a<3;a++) - { - m_esp_uart.println("AT+CIFSR"); start = millis(); - while (millis()-start<3000) { - while(m_esp_uart.available()>0) - { - char a =m_esp_uart.readChr(); - data=data+a; - } - if (data.indexOf("AT+CIFSR")!=-1) - { - break; - } + while (millis()-start < 3000) { + while(m_esp_uart.available() > 0) { + char a = m_esp_uart.readChr(); + data += a; + } + if (data.indexOf("OK") != -1) { + ret = true; + break; + } else if (data.indexOf("ERROR") != -1) { + ret = false; + break; + } } - if(data.indexOf(".") != -1) - { - break; - } - data = ""; - } - - - char head[4] = {0x0D,0x0A}; - char tail[7] = {0x0D,0x0D,0x0A}; - data.replace("AT+CIFSR",""); - data.replace(tail,""); - data.replace(head,""); - - return data; + + if (ret) { + int index1 = data.indexOf("\r\n"); + int index2 = data.indexOf("\r\n\r\nOK"); + if (index1 != -1 && index2 != -1) { + return data.substring(index1 + strlen("\r\n"), index2); + } else { + return "not found"; + } + } else { + return "null"; + } } /*************************************************************************