martes, 31 de mayo de 2016

Enviar comandos vía ethernet a Arduino con Java 3/X

     Bueno amigos, en este artículo vamos a ver como enviar comandos desde la consola programada en Java con Swing  usando la conexión ethernet a nuestro Arduino con la misma programación que tenía en el artículo Entrada 120 - Proyecto Arduino ethernet SD + consola en Java 1/X.

     La idea es sencilla y simple:
Empleando los métodos GET ó POST del protocolo HTTP se le envía cualquier comando a Arduino.

El programa hará la misma función que un navegador de Internet cualquiera, donde desde la URL se le envían datos al servidor web (para nuestro caso Arduino) y éste devuelve la página web que tiene programada. Un ejemplo de petición por el método GET es: http://192.168.0.20/?L=7
A lo que el servidor web Arduino realiza el procesado mediante las instrucciones
 
. . .
if (c == 'L')
{
     Serial.print("Toggling Pin ");
     pin = client.parseInt();
     Serial.println(pin);
     digitalWrite(pin, !digitalRead(pin));
           
     delay(1000);
     for(int i=0; i<10; i++) {
          digitalWrite(pin, !digitalRead(pin));
          Serial.println(pin);
          delay(200);
     }
           
     break;
}
. . .

 

Y además devuelve la página solicitada.
Desde Java el conjunto total de instrucciones sería:
 
public static void main(String[] args) throws MalformedURLException, IOException
{
        // Se configura la URL con el comando a enviar.
        // Y solo hay que cambiar el L=7 por el comando que se quiera
        URL url = new URL("http://192.168.0.20/?L=7");

        // Se configura la petición
        URLConnection con = url.openConnection();
        BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
       
        String linea;
        // Al realizar este bucle se le realiza la petición GET e imprime los
        // datos devueltos por el servidor
        while ((linea = in.readLine()) != null)
        {
            System.out.println(linea);
        }
}


Y así de sencillo es el código para realizar la petición. Adaptando nuestro código al de la consola con Swing quedaría:

public void enviarComando(String mensaje){
        jTextFieldComandos.setText("");
        jTextAreaTransferencias.append(mensaje + "\n");
        URL url = new URL("http://192.168.0.20/?" + mensaje);

        // Se configura la petición
        URLConnection con = url.openConnection();
        BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
       
        String linea;
        // Al realizar este bucle se le realiza la petición GET e imprime los
        // datos devueltos por el servidor
        while ((linea = in.readLine()) != null)
        {
            System.out.println(linea);
        }
}


Y nos queda la mar de molón el resultado.

     Los código fuente de Java de estos dos ejemplos los podéis descargar desde los enlaces:
Código fuente petición GET.
Código fuente Consola Java  + petición GET.

     Saludos de @eltiopacote
Listado de artículos: http://www.pacovalverde.es/indice/
Artículos relacionados:
Entrada 128 - Mi primera clase en YouTube sobre Java y Swing
Entrada 126 - Seguimiento del proyecto Arduino ethernet SD + Java
Entrada 124 - Programando una consola en Java con NetBeans 2/X
Entrada 123 - Como crear un proyecto con Swing en NetBeans 8.X
Entrada 120 - Proyecto Arduino ethernet SD + consola en Java 1/X
Entrada 117 - Configuración de la shield ethernet SD de Arduino

No hay comentarios:

Publicar un comentario