datos - ¿Cómo hago para que Java use el puerto serie en Linux?
arduino java (5)
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.
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.
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 muchos intentos, sangre, sudor y casi lágrimas tenemos este escenario:
Java versión 1.4.2_17 Linux - Ubuntu Comm libs - Comm3 suministrado por sun con el controlador predeterminado especificado
Una prueba de comunicación externa muestra los puertos de comunicación: / dev / ttyS0 y / dev / ttyS1 Pero la aplicación java dice que no se puede abrir el puerto / dev / ttyS1
(el uso de los archivos RXRT produce errores de puerto no válidos)
¿Alguien ha podido usar java 1.4.2 en Linux para comunicación de puerto serial y ha encontrado una solución que podría aplicar en mi escenario?
apreciado enormemente
Phill
Ha pasado un tiempo desde que hice esto. Recuerdo que no puedes simplemente abrir / dev / ttyS0 como un archivo y E / S.
Recuerdo haber tenido el mismo problema con los frascos Sun IO también.
La solución que recuerdo haber decidido era 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.
Hemos estado utilizando las bibliotecas SerialIO para las 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 bibliotecas no detectan automáticamente los puertos seriales disponibles en Linux; debe configurarlos manualmente.
No cambiamos mucho, nada en las bibliotecas utilizadas. pero eliminar el uso de un EventListener en el objeto de puerto serie solucionó el problema.
En realidad, esto 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
Sé que esta es una vieja pregunta, pero he creado un paquete de Java y una biblioteca nativa para permitir el puerto serie de lectura y escritura, actualmente solo en modo síncrono.
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 está aquí .
Tenga en cuenta que este es un paquete y biblioteca de Linux solamente.