2009-02-13 24 views
20

Me gustaría comunicarme con un dispositivo USB en Windows y Java, pero no puedo encontrar una buena biblioteca para hacerlo. No quiero que el usuario tenga que instalar ningún hardware adicional o controladores de dispositivo para que esto funcione. Es decir, quiero poder interactuar con USB al igual que otras aplicaciones de Windows.¿Cómo comunicarse con un dispositivo USB en Windows y Java?

Estoy familiarizado con jUSB y JSR 80, pero ambos parecen ser proyectos muertos (al menos para Windows).

+0

simplemente me encontré con esto en http://cafe.elharo.com/blogroll/what-java-still-cant-do/#comment-69109 "[ ...] en Windows, no puedes enumerar los dispositivos conectados y empezar a hablar con ellos, que es para lo que es la API USB de Java ". No entiendo completamente su comentario, pero parece bastante desalentador :( – Gili

Respuesta

2

Hice bastante investigación sobre esto hace algún tiempo, y la desafortunada realidad fue que todos los útiles proyectos gratuitos de USB + Windows + Java estaban muertos. Es comercial y costoso (precio $ 39.99 no es por desarrollador, pero por copia de su software se vende!) JCommUSB biblioteca que probablemente funciona, aunque no tengo experiencia en ello; tuvimos que construir nuestras propias envolturas en C personalizadas para los controladores USB y comunicarnos con ellos a través de JNI.

+0

Parece que la biblioteca JCommUSB también está muerta. El nombre de dominio está a la venta. – Cypher

9

libusb-win32 requiere que instale su controlador genérico, que luego pone a su disposición un dispositivo USB. No estoy seguro de que sea posible hacer un acceso sin controlador a un dispositivo USB a menos que el dispositivo pertenezca a una de varias clases estándar (almacenamiento e HID, en particular).

Hay un Java wrapper for libusb-win32 que podría funcionar para usted. No lo he usado yo mismo, sin embargo.

+0

No todos los dispositivos USB se entregan con controladores incorporados que se instalan automáticamente cuando se enchufa el dispositivo? ¿O es solo para dispositivos "estándar"? ¿Es al menos posible comunicarse con dispositivos "estándar" usando Java sin controladores? – Gili

+3

No, los controladores a bordo son una excepción. , como el almacenamiento y HID (teclados, ratones, etc.) probablemente funcionaría con el libusb-win32 mencionado anteriormente. Windows incluye controladores estándar para ellos. –

+1

He estado buscando una forma sencilla de interactuar con un dispositivo USB personalizado que no funciona Implica emular un puerto de comunicación, gracias – 8bitwide

0

La forma más rápida y fácil es piratear un código nativo :) Escribí un pequeño contenedor para dispositivos HID que permitía a mis aplicaciones Java leer datos de los digitalizadores CalComp, por lo que es definitivamente factible y no demasiado difícil. Lo malo es que mi trabajo sigue siendo un código de propiedad de mi antiguo empleador, por lo que por razones legales no puedo publicarlo como de código abierto.

Lo bueno es que se puede conseguir un comienzo de vuelo con el código de ejemplo HID desde el Microsoft DDK :)

Cuestiones relacionadas