2009-03-12 16 views
6

Hacemos uso de una aplicación java que gestiona un pinpad a través del puerto serie. Esto funciona perfectamente en Windows con Sun Comm.jar, el dll suministrado y el archivo de propiedades.¿Cómo hago para que Java use el puerto serie en Linux?

Ahora estamos intentando utilizar esta solución en Linux (en realidad se ejecuta en varios otros sabores de linux en el campo) - con el modo de servidor Ubuntu.

después de mucho intentos - sangre, sudor y lágrimas casi tenemos este escenario:

versión de Java 1.4.2_17 Linux - Ubuntu libs Comm - Comm3 suministrados por el sol con el controlador predeterminado

Un prueba de comunicación externa muestra los puertos de comunicación:/dev/ttyS0 y/dev/ttyS1 Pero la aplicación java dice incapaz de abrir el puerto/dev/ttyS1

(usando los archivos RXRT produce errores en el puerto no válidos)

¿Alguien ha podido usar java 1.4.2 en Linux para la comunicación de puerto serial y ha encontrado una solución que podría aplicar en mi escenario?

muy apreciadas

Phill

+0

¿Estás seguro de que el proceso de Java tiene permisos para abrir/dev/ttyS [01]? –

+0

¿cuál es el error? Y estoy de acuerdo con Eugene en que es posible que – TofuBeer

+0

conceda permisos para este problema? También tengo el mismo error. – Joe

Respuesta

1

Ha sido un tiempo desde que he hecho esto. Recuerdo que no puedes simplemente abrir/dev/ttyS0 como un archivo y E/S.

Recuerdo tener el mismo problema con los frascos Sun IO también.

La solución que recuerdo haber decidido fue crear un pequeño programa de línea de comandos en C que hiciera eco de stdin en el puerto serie y en el puerto serie en stdout. Luego, lancé este programa desde mi proceso de Java. No tengo el código, pero hay muchos ejemplos en la web para programas c que escriben en puertos serie de Linux.

+0

hmmm, le he ofrecido una solución al hombre en Nueva Zelanda que está buscando ayuda en esto. Pero tengo que esperar para mañana (11 horas más adelante) para ver si llegan a algún lado. Luego ubicaré mi hallazgo aquí. gracias hombre –

2

Asegúrese de estar utilizando un usuario con permisos para acceder a los puertos serie. Algunas distribuciones colocan los puertos serie en el grupo uucp, así que asegúrese de que el usuario pertenezca a ese grupo.

1

que hemos estado usando las bibliotecas SerialIO para comunicaciones serie Java en Windows y Linux desde hace varios años con excelentes resultados (y no, no trabajo para ellos :-)):

http://serialio.com/products/serialport/serialport.php

Sin embargo, las librerías no detectan automáticamente los puertos seriales disponibles en Linux; debe configurarlos manualmente.

+0

Hola tony, estoy tratando de configurar SerialIO en Ubuntu. Obtengo la lib nativa cargada correctamente para mi ubuntu de 64 bits pero cuando intento abrir un puerto obtengo javax.comm.NoSuchPortException:/dev/ttyUSB0: no se encuentra en la lista de puertos. pero el dispositivo está allí y no lo usa ninguna otra aplicación. Cualquier ayuda será muy apreciada. ¿Tal vez puedo hacer una pregunta que puedas responder? ¡Gracias! –

+0

@DavidHofmann Oooof ... han pasado un par de años desde que trabajé en esas cosas, no estoy seguro de tener siquiera el código :-(. Sin embargo, recuerdo ese problema exacto y * creo * tuve que agregar manualmente/dev/tty/USB0: a un archivo de configuración que * creo * correlacioné el puerto USB con un puerto serie. No me da mucha ayuda :-(. Buscaré alrededor y veré si puedo descifrar el código original . – tonys

0

No hemos cambiado mucho, nada en las bibliotecas utilizadas. pero eliminar el uso de un EventListener en el objeto del puerto serie solucionó el problema.

Esto realmente permitió que nuestro código funcionara en linux (jre1.4.2, slackware y controladores Suns Comm3) donde esto no era un problema en Windows - extraño.

Phill

3

sé que esto es una cuestión de edad, sino que ha creado un paquete de Java y la biblioteca nativa para permitir puerto serie leer y escribir, actualmente en modo síncrono solamente.

Es de código abierto y está disponible en GitHub:

j232 - El código fuente de Java

libj232 - biblioteca nativa de j232.

La página wiki es here.

Tenga en cuenta que este es un paquete y biblioteca de Linux solamente.

Cuestiones relacionadas