LoadString

Hola. Soy nuevo en el foro y no tengo mucha experiencia con processing. Estoy estableciendo comunicacion con una placa arduino a traves de un servidor web con un modulo ESP8266. Utilizando la sentencia loadString( "http://el servidor") se establece comunicacion y realiza las instrucciones pero el problema se presenta cuando al no tener ninguna pagina disponible en arduino la app en android se congela durante aproximadamente 60 sg lo cual no me resulta util, hasta que devuelve un error del tipo imposible realizar la conexion a traves de la consola, el error no me importa puesto que la instruccion en la placa Arduino se ejecuta. La pregunta es.. ¿ hay alguna forma de detener la carga para poder relanzarla sin tener que esperar? Seria algo similar a detener la carga en un navegador aunque haya que utilizar otra sentencia que no sea loadstring. He utilizado thread pero tengo el mismo problema aunque eso si ahora se pueden enviar hasta 4 instrucciones por cada 60 sg.

Answers

  • Answer ✓

    Not clear how the connection is happening.

    Server ===> PC ===> Arduino ?

    Are you using javascript or java? Can you share your a minimum amount of code showing the essence of your program?

    I can only suggest httprequest: https://forum.processing.org/two/search?Search=httprequest however more details are needed before a final solution.

    Welcome to the forum btw!

    Kf

  • edited March 13

    La conexion es Android===>Wifi Esp8266 servidor web integrado==> Serial Arduino

    El esp8266 utiliza AT y lleva un servidor web integrado enviando las peticiones al serial arduino para que este las procese. El codigo es el siguiente aunque seguramente se podra mejorar:

    //It is for ANDROID
    void setup() {
      size(720, 860);
      background(#000000);
    }
    
    void draw() { 
     fill(#848484);
     rect (140,50,220,50);
     textSize(24);
     fill(#FFFFFF);
     text("SUBIR", 152 , 80);
     }
    
    void mousePressed (){ 
    
       if(mouseX > 140 && mouseX < 360)
         if (mouseY > 50 && mouseY < 100){
           textSize(24);fill(#BDBDBD); text("SUBIR", 152 , 80); 
        String [] Buff  = loadStrings("http://192.168.4.1/B");// Here it freezes 60sg 
    
        //The pg web does no exit, Arduino not generated pg web
        //just receive a string with instructions and make a parser IT WORK.
         }
      } 
    

    La sentencia loadstring es en realidad: String [] Buff = loadStrings("http://192.168.4.1/B"); Nose porque se cambia a la hora de subir el post. La aplicacion se congela y no se puede enviar mas instrucciones hasta que finalmente se recibe: java.net.ConnectException: Failed to connect to /192.168.4.1:80

    Y entonces puedo volver a realizar la peticion. Pero arduino si realiza correctamente su funcion. Necesitaria alguna forma de que no se congelara la aplicacion y pudiera seguir enviando instrucciones.

  • edited March 13 Answer ✓

    Vale Finalmente he dado con la solucion y respondo.

    Al realizar las conexiones el modulo Esp8266 admite un maximo de 4 conexiones simultaneas, y al utilizar loadstring las conexiones se quedaban activas y no permitia realizar mas conexiones, la solucion es cerrar las conexiones activas. A traves del modulo ESP y utilizando AT con el comando: "AT+CIPCLOSE=5" Se cierran todas las conexiones activas permitiendo que entren mas instrucciones a traves de loadstrings("http://IP/instrucciones");

    GRACIAS a todos.

  • edited March 13 Answer ✓

    @Cachicot -- ¡Gracias por compartir la solución!

Sign In or Register to comment.