Leer puerto RS 232 en Java

Hola buenas, me han encargado el desarrollo de un aplicativo que lea datos a través de un puerto serie RS232, dicho aplicativo lo tengo que hacer en JAVA, como entorno de desarrollo estoy utilizando Netbeans 5.5 y sistema operativo windows xp profesional, tengo varias dudas:
¿Qué librería es más recomendable para realizar lecturas de un puerto serie RS232?
¿Es algo tan complicado como me lo esta pareciendo de inicio?
¿Me imagino que existirán códigos java para realizar lecturas de RS 232, sabes donde o como puedo conseguir alguno?
¿Si sabes de cualquier web, libro etc.. Que me pueda ayudar en esto te agradecería que me comentaras tus sugerencias?
Finalmente cuya

1 respuesta

Respuesta
1
En realidad no estas complicado pero si concuerdo contigo en que no hay mucha información al respecto y la que hay a veces es muy confusa.
Yo he utilizado la implementación de IBM de la especificación de java para leer/escribir en el puerto serial, la documentación trae ejemplos sobre como usarlo. La implementacion te la puedes bajar de este link: http://jjbox.sourceforge.net/files/ibm-javacomm-win32-x86.zip. En esta liga puedes encontrar algo de info: http://publib.boulder.ibm.com/infocenter/javasdk/v6r0/index.jsp?topic=/com.ibm.java.doc.user.win32.60/user/jcommchapter.html
El uso de la librería es bastante sencillo, usas la clase SerialPort para abrir el puerto serial (le especificas que puerto, la paridad, la velocidad, etc), añades un eventlistener a esta clase para que te avise cuando han llegado datos, con esta clase obtienes un inputStream el cual puedes ya manipular a tu gusto.
Se que SUN tiene otra implementación del api del puerto serial, más nunca la he usado, aunque supongo que no debe tener mucha diferencia en su uso.
Tengo varias dudas, haber si me las puedes aclarar:
Si no he entendido mal se instalan los archivos de la librería en los directorios que indica del jre de mi equipo.
Una vez hecho esto me indica que tengo que configurar el api, concretamente el archivo javax.comm.properties, especificandole el driver: driver=com.sun.comm.Win32Driver, pero no se muy bien para que sirve en concreto esto, me lo puedes explicar?
Gracias de todas formas los links son justo lo que necesitaba.
Así es básicamente tienes que copiar los archivos de la librería en el directorio de tu jre (recuerda que en caso de que vayas a usar tu app en otro equipo copiar esos archivos en el jre del equipo o distribuir tu app junto con tu directorio jre).
Sobre el archivo properties no te preocupes mucho ya viene configurado por defecto, básicamente lo que hace es que usa una librería nativa de windows para acceder al puerto serial, es por eso que hay dos versiones de esta librería (para windows y linux) debido a que usa librerías nativas para acceder a los puertos seriales, el código en java es el mismo para ambos, por lo que podría decirse que realmente el comm.jar es un wrapper alrededor de una librería nativa del sistema operativo.
Una ultima cuestión, mi aplicativo va implantarse en muchos equipos, por tanto seria recomendable que llevara el jre consigo junto con la librería instalada, hasta ahora para incluir el jre he utilizado Jmoosth pero no se por que no me funciona siempre bien, ¿qué método empleas tu para incorporar el jre en tu proyecto y que el jar busque la maquina donde tu le indicas?
Muchas gracias y un saludo
Usualmente yo lo que hago es crear una carpeta para la aplicación (llemémosla demo), dentro de esta carpeta meto mi jar, meto las librerías y meto el jre, y me queda una estructura como la siguiente:
Demo
         jre
          libs
          demo.jar
Creo un archivo .bat o un shell script para el caso de linux/unix, donde pongo la variable de ambiente del java_home a que apunte a mi jre y después ejecuto mi jar.
Es una forma muy simple de distribución, quizás no muy profesional pero muy simple y funciona.
Como decía un antiguo profesor mio lo simple nunca falla.. oye tendrás que disculparme por ser algo novato pero nunca he trabajado con .bat, podrías pegarme el código que lleva ese bat para entenderlo mejor, de todas formas muchas gracias por la dedicación en la respuesta se agradece.
Un saludo
Un ejemplo seria esto:
@echo off
set JAVA_HOME=c:\demo\jre
start c:\demo\jre\bin\javaw -jar demo.jar

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas