Comunicacion loadstring http

edited March 2018 in Arduino

Hola. Estoy intentando comunicar de forma bidireccional arduino a traves del modulo esp8266 con android usando http, el esquema seria el siguiente.

Android==>ESP8266==>Arduino arduino responda a la peticion.

Android<==ESP8266<==Arduino

Para esto Android realiza la peticion utilizando loadstring, el codigo android seria el siguiente.

    void setup() {
      fullScreen();//ANCHO DE LA PANTALLA
      background(#000000);//COLOR DEL FONDO HEXADECIMAL (NEGRO)
      //stroke(#FFFFFE);//GROSOR DEL TRAZO EN  HEXADECIMAL
      strokeWeight(5);//GROSOR DEL TRAZO EN PIXELES
    }

    void draw() { 
     fill(#848484);//COLOR RECTANGULO
     rect (150,50,150,50);//DIBUJA UN RECTANGULO X,Y,ANCHO,ALTO
     fill(#000000);//COLOR RECTANGULO
     rect (10,10,100,100);//DIBUJA UN RECTANGULO X,Y,ANCHO,ALTO

     textSize(26);//TAMAÑO DEL TEXTO
     fill(#FFFFFF);//COLOR PARA TEXTO 
     text("PETICION", 160 , 75);//DIBUJA EL TEXTO

     }
     void mousePressed  (){ //PARA PRESIONAR BOTONES

       if(mouseX > 150 && mouseX < 650)
         if (mouseY > 50 && mouseY < 200){
           textSize(26);fill(#BDBDBD); text("PETICION", 160 , 75); 
           thread("Envio");
         }
    }
      //FUNCIONES METODO THREAD
      void  Envio () {
        String[] lines = loadStrings("http://192.168.1.37/A");
    println("there are " + lines.length + " lines");
    for (int i = 0 ; i < lines.length; i++) {
      println(lines[i]);//IMPRIME EN EL TERMINAL
    }
      }

La sentencia loadstring es String[] lines = loadStrings("http://192.168.1.37/A"); se cambia al subir el post. Esta sacado del ejemplo loadstring, el tema es que cuando realiza una peticion por internet a cualquier pagina funciona correctamente, sin embargo cuando se realiza a arduino esto es lo que se recibe a traves de la consola de arduino.

    0,CONNECT

    +IPD,0,187:GET /A HTTP/1.1
    User-Agent: Dalvik/2.1.0 (Linux; U; Android 8.0.0; Android SDK built for x86 Build/OSR1.170901.056)
    Host: 192.168.1.37
    Connection: Keep-Alive
    Accept-Encoding: gzip

Hasta aqui la cosa va bien entonces utilizando el metodo AT+CIPSEND envio algunos caracteres escribiendo en el terminal

AT+CIPSEND=0,33
><html><h2>holamundo</h2></html>\n

tambien he probado quitandole la terminacion \n

y se recibe esto en arduino diciendo que se ha enviado con exito.

AT+CIPSEND=0,33


OK
> 

busy s...

Recv 33 bytes

SEND OK
AT+CIPCLOSE=0

0,CLOSED

OK

Pero cuando cierro la conexion se produce un null pointer con un monton de excepciones y no se recibe nada.

java.io.IOException: unexpected end of stream on com.android.okhttp.Address@cd6325c0
    at com.android.okhttp.internal.http.Http1xStream.readResponse(Http1xStream.java:201)
    at com.android.okhttp.internal.http.Http1xStream.readResponseHeaders(Http1xStream.java:127)
    at com.android.okhttp.internal.http.HttpEngine.readNetworkResponse(HttpEngine.java:737)
    at com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:609)
    at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:471)

A alguien se le ocurre que estoy haciendo mal.

El caso es que si lo hago a traves de un navegador como Chrome se recibe lo siguiente:

imagen

Tagged:
Sign In or Register to comment.