We are about to switch to a new forum software. Until then we have removed the registration on this forum.
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: