Autor Tema: XHTML, Java enviar tramas de bytes puerto serie Eclipse Spring JBoss enviar dato  (Leído 3552 veces)

Meta

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 8
    • Ver Perfil
Hola:

Uso STS-Eclipse, spring de Java y el servidor el JBoss. El proyecto que quiero hacer es enviar y recibir datos string por el puerto serie. Hace tiempo hice un tutorial en pdf sobre Java con NetBeans haciendo una interfaz de escritorio y se puede encender, apagar y recibir datos de los Led.

Ver tutorial:http://www.slideshare.net/Metaconta2/interfaz-java-y-arduino.

Primer paso, empezar enviar datos por el puerto serie, cuando funcione, ya empezaremos lo de recibir datos.

En este caso, usaré la tecnología indicada arriba, una interfaz hecha con xhtml y usar clases en Java. Por ejemplo. Tengo hecho una interfaz en xhtml sencilla como indica abajo.



Como puedes ver arriba, debe encender un Led del pin 8, tiene dos botones, en este ejemplo he puesto que si pulsas el botón ON, en el texto de abajo aparece Led_8_ON, si pulsas el botón OFF, aparecerá el texto Led_8_OFF.

Dicho texto Led_8_ON y Led_8_OFF, son string que debo enviar por el puerto serie.

test.xhtml

Código: (xml) [Seleccionar]
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<h:head>
<title>Test</title>
<h1>Haciendo pruebas</h1>
</h:head>
<h:body>
<h:form>
<p:panel header="Cuadro de control">
<p:panelGrid columns="1" id="gridname">
<p:outputLabel  value="Led 8: " />
<p:commandButton id="led8on" value="ON" actionListener="#{test.led8ON}" update="resultado" />
<p:commandButton id="led8off" value="OFF" actionListener="#{test.led8OFF}" update="resultado" />
<p:inputText required="false" id="resultado" value="#{test.guardarUltimoValor}" />
</p:panelGrid>
</p:panel>
</h:form>
</h:body>
</html>

He creado una clase Java llamada Test.java.
Código: (java) [Seleccionar]
package net.meta.practica.business.test;

import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

@Component
@Scope("view")
public class Test {

// Variables.
final String LED8ON = "Led_8_ON";
final String LED8OFF = "Led_8_OFF";
String guardarUltimoValor = "";

// Métodos.
public void led8ON(){
guardarUltimoValor = LED8ON;
}

public void led8OFF(){
guardarUltimoValor = LED8OFF;
}

// Getters y Setters.
public String getGuardarUltimoValor() {
return guardarUltimoValor;
}

public void setGuardarUltimoValor(String guardarUltimoValor) {
this.guardarUltimoValor = guardarUltimoValor;
}

public String getLED8ON() {
return LED8ON;
}

public String getLED8OFF() {
return LED8OFF;
}
}

Para que entiendan de que va. xhtml hace de interfaz, la clase Test.java ahí está la estructura del programa para este ejemplo sencillo.


Hace tiempo que no toco Java, con STS-Eclipse ando perdido, es nuevo para mi.

Siguiendo este ejemplo. ¿Qué hay que hacer?
- Intentar configurar el puerto serie, en este caso puede ser COM4 o el que sea a 115200 de baudios, 2 bit de stop.
- Enviar estos dos string llamada Led_8_ON que lanza el botón ON y el Led_8_OFF que lanza el botón OFF al puerto serie.

Pueden aportar ideas de como hacerlo lo mejor posible y sin complicaciones.

1) Para la clase Test.java, ¿cómo o cuál es la mejor manera de enviar el dato de la variable llamado en este caso LED8ON?

2) ¿Hago todo el código en la misma clase?

Un cordial saludos.

PD: Menudo tostón de post. Espero que se entienda algo hasta donde quiero llegar, nos acompañharemos a llegar... ;)
« Última modificación: 06 de Abril 2020, 17:36 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Buenas la verdad es que no sé si te puede servir pero en este hilo se practica con el envío de información usando Java: https://www.aprenderaprogramar.com/foros/index.php?topic=3209.0

Salu2

Meta

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 8
    • Ver Perfil
Hola:

Le hecharé un ojo, en este caso se trata de enviar datos al puerto serie.

Usando Hibernate, Spring, java con xhtml bajo el plugins de Maven. No me lee una función. El archivo arduino.xhtml tiene este código y no hay problema.

arduino.xhtml
Código: [Seleccionar]
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<h:head>
<title>Arduino</title>
<h1>Arduino</h1>
</h:head>
<h:body>
<h:form>
<p:panel header="Cuadro de control">
<p:panelGrid columns="1" id="gridname">
<p:outputLabel value="Led 8: " />
<p:commandButton id="led8on" value="ON"
actionListener="#{arduino.led8ON}" update="resultado" />
<p:commandButton id="led8off" value="OFF"
actionListener="#{arduino.led8OFF}" update="resultado" />
<p:inputText required="false" id="resultado"
value="#{arduino.guardarUltimoValor}" />
<p:commandButton id="puerto" value="Iniciar puerto"
actionListener="#{arduino.inicio_puerto}" update="resultado" />
<p:commandButton id="borrar" value="Borrar"
actionListener="#{arduino.borrar}" update="resultado" />
</p:panelGrid>
</p:panel>
</h:form>
</h:body>
</html>

Clase Arduino.java
Código: [Seleccionar]
package net.prueba.practica.business.test;

import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

import gnu.io.*; // RXTX
//import javax.comm.*; // SUN
import java.util.Enumeration;

@Component
@Scope("view")
public class Arduino {

// Variables.
final String LED8ON = "Led_8_ON";
final String LED8OFF = "Led_8_OFF";
String guardarUltimoValor = "";

// Métodos.
public void inicio_puerto(){
System.out.println("Programa empeado.");

// System.out.println(java.library.path);
    CommPortIdentifier serialPortId;
    //static CommPortIdentifier sSerialPortId;
    Enumeration enumComm;
    // SerialPort serialPort;

    enumComm = CommPortIdentifier.getPortIdentifiers();
    while (enumComm.hasMoreElements()) {
      serialPortId = (CommPortIdentifier) enumComm.nextElement();
      if(serialPortId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
    System.out.println(serialPortId.getName());
    }
    }

System.out.println("Terminado satisfactoriamente.");
}

public void led8ON(){
guardarUltimoValor = LED8ON;
System.out.println("Resultado: " + guardarUltimoValor);
}

public void led8OFF(){
guardarUltimoValor = LED8OFF;
System.out.println("Resultado: " + guardarUltimoValor);
}

public void borrar(){
guardarUltimoValor = "";
System.out.println("Resultado: " + guardarUltimoValor);
}

// Getters y Setters.
public String getGuardarUltimoValor() {
return guardarUltimoValor;
}

public void setGuardarUltimoValor(String guardarUltimoValor) {
this.guardarUltimoValor = guardarUltimoValor;
}

public String getLED8ON() {
return LED8ON;
}

public String getLED8OFF() {
return LED8OFF;
}
}


A pesar de poner las librerías rxtxSerial.dll y el .jar.

¿xhtml y java no es capaz de leer los puertos series que tiene el equipo?


Su código usado es:
Código: [Seleccionar]
import gnu.io.*; // RXTX
// import javax.comm.*; // SUN
import java.util.Enumeration;


public class ErsteSchritte {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub

System.out.println("Program started");

//System.out.println(java.library.path);
    CommPortIdentifier serialPortId;
    //static CommPortIdentifier sSerialPortId;
    Enumeration enumComm;
    //SerialPort serialPort;

    enumComm = CommPortIdentifier.getPortIdentifiers();
    while (enumComm.hasMoreElements()) {
      serialPortId = (CommPortIdentifier) enumComm.nextElement();
      if(serialPortId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
    System.out.println(serialPortId.getName());
    }
    }

System.out.println("Finished successfully");
}
}
 

La salida de la consola en spring debe ser:
Citar
Program started
Stable Library
=========================================
Native lib Version = RXTX-2.1-7
Java lib Version   = RXTX-2.1-7
/dev/ttyS1
/dev/ttyS0
Finished successfully
Experimental:  JNI_OnLoad called.

Tal como indica en http://www.mikrocontroller.net/articles/Serielle_Schnittstelle_unter_Java

¿Alguna sugerencia?

Saludos.
« Última modificación: 15 de Julio 2016, 16:59 por César Krall »

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".