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