Получение всей информация из порта для парсинга.
- Войдите на сайт для отправки комментариев
Пнд, 07/09/2015 - 00:16
Не получается получить всю информацию из порта.
Сканирую доступные точки доступа wifi через esp8266 выводит только первую строчку. остальные теряет. так же и при выводе страницы из интернета. выводит только первую строчку.
#include <SoftwareSerial.h>
// ESP8266 -- Arduino
// ESP TX - 10 (Arduino SoftwareSerial RX)
// ESP RX - 11 (Arduino SoftwareSerial TX)
#define DST_IP "horreodor.ru"
SoftwareSerial espSerial(10, 11);
void setup() {
espSerial.begin(9600);
Serial.begin(9600,SERIAL_8N1);
espSerial.setTimeout(5000);
espSerial.println("AT");
readfromserial();
delay(1000);
for(int i=0;i<5;i++)
{
if(connectWiFi())break;
delay(2000);
}
espSerial.println("AT+CWLAP");
delay(5000);
readfromserial();
espSerial.println("AT+CIPMUX=0");
readfromserial();
String cmd = "AT+CIPSTART=\"TCP\",\"";
cmd += DST_IP;
cmd += "\",80";
espSerial.println(cmd);
readfromserial();
cmd = "GET /arduino/test.php HTTP/1.0\r\n\r\n";
espSerial.print("AT+CIPSEND=");
espSerial.println(cmd.length());
readfromserial();
espSerial.print(cmd);
delay(5000);
readfromserial();
}
void loop() {
}
boolean connectWiFi()
{
espSerial.println("AT+CWQAP");
readfromserial();
delay(1000);
espSerial.println("AT+CWMODE_CUR=1");
readfromserial();
delay(1000);
String cmd="AT+CWJAP_CUR=\"";
cmd+="horreodorpocket";
cmd+="\",\"";
cmd+="horreodor911";
cmd+="\"";
espSerial.println(cmd);
delay(5000);
if(strstr(readfromserial().c_str(),"WIFI CONNECTED")>0){Serial.println("OK, Connected to WiFi."); return true;}
else { Serial.println("Can not connect to the WiFi."); return false; }
delay(2000);
}
String readfromserial()
{
String zopa;
String zopaf="";
for(int r=0; r<5; r++)
{
delay(1000);
for(int b=0; b<100; b++)
{
zopa="";
while(espSerial.available()!=0){
zopa+=espSerial.readStringUntil('/'); }
delay(10);
if(zopa.length()>0){ Serial.println(zopa); zopaf+=zopa;}
}
if(zopaf.length()>0){ if(strstr(zopaf.c_str(),"busy")==0){ return(zopaf); break; r=5;} }
}
}
уже и задержки делал, и прогонял по несколько раз. но результат один и тот же. если все делать в ручном режиме и в loop вставить код
if ( espSerial.available() ){
Serial.write( espSerial.read() );
}
if ( Serial.available() )
{
espSerial.write( Serial.read() );}
то все ок. и страница полностью выводиться и все точки доступа показываются.
вот что получается сейчас при выводе в сериал
AT
OK
AT+CWQAP
OK
WIFI DISCONNECT
AT+CWMODE_CUR=1
OK
AT+CWJAP_CUR="horreodorpocket","horreodor911"
WIFI CONNECTED
OK, Connected to WiFi.
AT+CWLAP
+CWLAP:(3,"DIR-300NRUB7",-92,"ac:f1:df:28:60:c0",1)
AT+CIPMUX=0
OK
AT+CIPSTART="TCP","horreodor.ru",80
CONNECT
OK
AT+CIPSEND=34
OK
>
Recv 34 bytes
SEND OK
+IPD,1360:HTTP1.1 404 Not Found