serial read jserialcomm event ejemplo java windows serial-port

read - Comunicación en serie Java en Windows



serial port event listener in java (5)

Empecé a buscar lo mismo hace un par de semanas, y hasta ahora he estado muy contento con la biblioteca RXTX multiplataforma. Funciona con cualquier sistema operativo Windows, Linux y OS X. Tiene una API muy limpia y fácil de entender.

editar: RXTX también es de código abierto.

He estado buscando una API de Java que pueda comunicarse con dispositivos seriales en Windows / Win32, pero muchas de las API que he comprobado son para Linux, demasiado anticuadas o simplemente tenían malas críticas.

¿Puede alguien recomendarme uno que haya probado o que sepa que es fácil de implementar en Windows XP?


Java es notorio por su soporte de E / S en serie escamosa. En un trabajo anterior, probamos tanto RXTX como SerialIO para una aplicación que transmitía datos a 56 kbps desde un servocontrolador Teknic, y descubrí que engullían la CPU bastante. Tal vez para las aplicaciones que no requieren transmisión continua desde un puerto serie, ambas bibliotecas son buenas, pero no consideramos que la transmisión de E / S desde un puerto serie deba consumir un 15-30% sostenido de la CPU la máquina cuando es muy necesaria para otros hilos en la JVM que necesitan ser receptivos.

En cambio, creamos un servidor en C ++ que leería la secuencia de datos del puerto serie en el servo, lo transformaría / paquetizaría y lo enviaría a nuestra aplicación Java en XML a través de una conexión de socket. ¿La carga de la CPU en el servidor de E / S serie en C ++? Apenas se arrastra en 1% en su peor momento.

Hay ciertas cosas que Java hace bien: la E / S en serie, en mi opinión, no es una de ellas, según el tipo de aplicación ...

En última instancia, debe tomar incluso lo que dije con un grano de sal, y probar ambos, RXTX y SerialIO (que es muy barato, como $ 50 o menos para la versión de Java) y si cumplen con sus necesidades, vaya con ello. Personalmente, me quedaría con SerialIO porque es compatible y se trabaja activamente. RXTX, no tanto.


Sin reservas, recomiendo Java Serial Port de serialio.com; Tuve importantes problemas de estabilidad con el paquete serie Sun, IBM y RxTx. SerialPort ha sido sólido en producción 24/7 durante más de 5 años.

Admiten la API serial Java estándar, así como su propia alternativa patentada. Sin embargo, me quedaría con la API estándar, a menos que realmente necesites algo suyo que el estándar no tiene, solo para mantener tus opciones abiertas.


He escrito una biblioteca Java de código abierto porque ninguna de las existentes se ajusta a mis necesidades (obsoleta, de código cerrado, difícil de modificar, sin mantenimiento, ...).

Se llama JSerial, tiene licencia MIT, y puede obtener más información aquí: https://github.com/thibautd/JSerial .

Actualmente solo es compatible con Windows, pero tengo planes para soportar Linux. Puede modificar fácilmente la parte nativa con el último Visual Studio si lo necesita.


He estado usando PureJavaComm durante los últimos cinco años más o menos. Se mantiene activamente, y es una implementación pura de Java (a través de JNA). RXTX me ha decepcionado por la falta de mantenimiento y numerosos problemas sutiles.