Получение всей информация из порта для парсинга.

Нет ответов
horreodor
Offline
Зарегистрирован: 07.09.2015

Не получается получить всю информацию из порта. 
Сканирую доступные точки доступа 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