2010-01-23 313 views
21

Estoy tratando de escribir una aplicación java que acceda a los puertos usb para leer y escribir en un dispositivo conectado a través de usb. El problema que enfrento es que no sé exactamente qué usar en Java para hacer tal cosa. Busqué en línea y encontré algo llamado JUSB pero todas las publicaciones parecen bastante antiguas.Cómo acceder a los puertos USB en java

Actualmente estoy usando el RXTX bibliotecas, pero a veces me encuentro con algún error de sincronización. Cuando uso C# para hacer el equivalente, requiere mucho menos código y no me encuentro con el mismo error de sincronización.

Mi pregunta es, ¿hay algo incorporado en la última versión del JRE que puedo utilizar para acceder a los puertos USB (que es tan fácil como el # código equivalente C)?

Respuesta

11

No hay nada equivalente al soporte USB de C# en Java. Tanto jUSB como Java-USB están muy desactualizados y es probable que no se puedan usar para cualquier desarrollo de aplicaciones serio.

Si desea implementar una aplicación USB multiplataforma, realmente su mejor opción es escribir una interfaz abstracta JNI que se comunique con las bibliotecas nativas de Linux, Mac y Windows que deberá escribir usted mismo. Me gustaría ver LibUSB para manejar Mac y Linux. Windows, como has visto, es bastante sencillo. Acabo de terminar un proyecto de un año que hizo justamente esto, y desafortunadamente esta es la única solución seria multiplataforma. Si no tiene que implementar en Windows y sus necesidades son limitadas, puede usar una de las libs Java más antiguas (jUSB o Java-USB). Todo lo que necesite implementarse en Win32/Win64 necesitará un componente nativo.

2

El Java Communications API. Esto debería proporcionar una funcionalidad similar al espacio de nombres C# System.IO.Ports.

+1

System.IO.Ports es para comunicaciones serie a menos que el OP implique una interfaz de serie a USB? – t0mm13b

+0

Acuerdo: System.IO.Ports no tiene interfaces USB, solo es para puertos Com. –

+0

Si su dispositivo USB está expuesto en un puerto COM, puede usar System.IO.Ports. –

4

Consulte las bibliotecas jUSB o usb4java.

+5

Java-USB es solo Linux.Si eso es todo lo que necesita, puede funcionar, aunque parece que no se actualizó por un tiempo. –

5

Es posible que desee echar un vistazo a usb4java - http://usb4java.org/index.html parece ser compatible con Windows, Linux y Mac OS y parece ser razonablemente actual en el momento de la publicación. Desafortunadamente está bajo LGPL por lo que puede no ser adecuado para el desarrollo comercial.

+2

La vinculación con bibliotecas LGPL no debería ser un problema, si solo va a utilizar sus API en su código (y tiene una licencia no LGPL). Las bibliotecas con licencia de GPL son licencias copyleft, lo que obliga a que la licencia de su código también sea una licencia GPL, independientemente de la licencia que haya utilizado. – Joseph

18

He estado usando usb4java durante un año en crossplafom (Linux y Windows) y funciona muy bien.

Ver:

http://usb4java.org/

Ellos son muy activos y tienen una muy buena frente javax USB.

Cuestiones relacionadas