Iniciar sesión

Ver la versión completa : [Ayuda] ¿Simular puerto COM con java?



ChUKii
25/01/2010, 16:03
Buenas,

Se podria simular un puerto COM con java?

Por ejemplo si utilizamos una aplicación de navegacion GPS como el GARMIN Mobile PC o el NavigaTor que lean las posiciones GPS de un puerto falso.
La misma aplicación que abre la escucha del puerto COM seria la que se encargaria de lanzar la información a través de el :)

Quizas es una burrada lo que quiero hacer...

:brindis::brindis:

< - >
Vale, me respondo yo solo jeje

Parece que existe una Api de Java para comunicaciones por puertos serie y paralelo

http://java.sun.com/products/javacomm/reference/api/index.html

Tiene muy buena pinta...quizas me sirva :D :D

ChUKii
25/01/2010, 17:42
No, el tema no son las tramas nmea.
Yo por un puerto COM leo las tramas NMEA y "otras" que me llegan y despues de recibirlas me quedaria con las "otras" y las NMEA las tendria que simular que me llegan a traves de un COM para que un navegador leyera dichas tramas NMEA y las interpretase...

:brindis::brindis:

juanvvc
25/01/2010, 19:03
Crear un puerto serie es un servicio del sistema operativo, y creo que no hay manera de crear puertos serie desde Java. Una vez creados como sea que se creen en tu sistema operativo, supongo que desde Java simplemente te conectas con la librería serial a los puertos de entrada y salida, discriminas las líneas NMEA que quieras y reenvías. Por cierto,la librería serial de Java es un dolor de cabeza que tienes que recompilar cada vez que cambias el color del fondo del escritorio. Sí, acabé hastiado de esa librería :)

En Linux los puertos serie se crean con mknod. Ni idea de cómo hacerlo en Windows, pero me suena que normalmente solo lo hacen los drivers así que debe ser alguna llamada en la API de Windows.

ChUKii
25/01/2010, 20:59
Crear un puerto serie es un servicio del sistema operativo, y creo que no hay manera de crear puertos serie desde Java. Una vez creados como sea que se creen en tu sistema operativo, supongo que desde Java simplemente te conectas con la librería serial a los puertos de entrada y salida, discriminas las líneas NMEA que quieras y reenvías. Por cierto,la librería serial de Java es un dolor de cabeza que tienes que recompilar cada vez que cambias el color del fondo del escritorio. Sí, acabé hastiado de esa librería :)

En Linux los puertos serie se crean con mknod. Ni idea de cómo hacerlo en Windows, pero me suena que normalmente solo lo hacen los drivers así que debe ser alguna llamada en la API de Windows.

Linux tambien podria ser una opcion :), gracias tio

De todas formas estoy viendo esta libreria http://java.sun.com/products/javacomm/reference/api/index.html y existe la clase CommPort con el metodo "open" que tiene pinta de crear el puerto pasandole un objeto FileDescriptor imagino que con las propiedades del puerto...

Tiene buena pinta :)

IronArthur
26/01/2010, 16:33
SI que se puede sin problemas.

Para mi proyecto fin de carrera usaba un servicio hecho en java que emulaba respuestas simples de un autómata y se comunicaba por puerto serie con una placa simple que ejecutaba código java, que ya no me acuerdo como se llamaba, y esta controlaba el "autómata" en función de las respuestas.

Si tienes dudas busco el código del "emulador" del autómata pero recuerdo que era muy sencillo. Mucho.

Salu2

juanvvc
26/01/2010, 17:16
Entiendo que lo que Chukii quiere hacer es desde java:

- leer de un puerto serie real lo que dice un aparato externo
- escribir en un puerto serie virtual que va a leer otra aplicación del ordenador (que no sabe que el puerto serie es virtual y no real)

Lo de los puertos virtuales es lo que no estoy seguro si puede hacerse totalmente desde Java, es posible que necesites crearlos en el sistema operativo antes de llamar a Java. En Linux es trivial crear los puertos serie virtuales, en Windows no lo sé pero una búsqueda rápida por internet ha sacado a relucir el entorno Cygwin y es posible que ése sea un camino válido. Ya nos dirás si lo consigues (o si lo estoy entendiendo mal)

Por cierto, esto parece ser lo que necesitas: un Null-modem virtual http://en.wikipedia.org/wiki/COM_port_redirector

IronArthur
26/01/2010, 17:22
Pues yo creo que también lo entiendo mal pq en sí no es más que crear un Listener que escuche en el puerto COM y en función de la pregunta responde de una forma o de otra no?

I´m lost [Ahhh]

Salu2

ChUKii
27/01/2010, 08:15
SI que se puede sin problemas.

Para mi proyecto fin de carrera usaba un servicio hecho en java que emulaba respuestas simples de un autómata y se comunicaba por puerto serie con una placa simple que ejecutaba código java, que ya no me acuerdo como se llamaba, y esta controlaba el "autómata" en función de las respuestas.

Si tienes dudas busco el código del "emulador" del autómata pero recuerdo que era muy sencillo. Mucho.

Salu2

Gracias IronArthur,

Genial, pero al final creo que se va a quedar parado el tema, pero muchas gracias por la info, ahora sabiendo que se puede hacer quizas pueda utilizarlo :).
No hace falta que te molestes en buscarlo, si por lo que sea saliese ya lo busco y sino...pues si que te mandaria un privado jejeje.

Un saludo!

:brindis::brindis: