Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: Meta en 09 de Julio 2016, 13:04

Título: XHTML, Java enviar tramas de bytes puerto serie Eclipse Spring JBoss enviar dato
Publicado por: Meta en 09 de Julio 2016, 13:04
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.

(http://fotos.subefotos.com/25e2d48b0f9d7de7cb346705d06f5a92o.png)

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.
(http://oi67.tinypic.com/2pplkrp.jpg)

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... ;)
Título: Re:XHTML, Java enviar tramas de bytes puerto serie Eclipse Spring JBoss enviar dato
Publicado por: Ogramar en 12 de Julio 2016, 18:38
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
Título: Re:XHTML, Java enviar tramas de bytes puerto serie Eclipse Spring JBoss enviar dato
Publicado por: Meta en 13 de Julio 2016, 17:59
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.