2008-11-11 26 views
16

La biblioteca debería;¿Cuál es la mejor biblioteca de usb para comunicarse con dispositivos usb HID en Windows?

-Fácil de usar y pocas líneas de código de cliente deben lograr mucho
-Ser la plataforma más independiente posible. (En caso de puertos futuros a otras plataformas)
-Tiene enlaces de C++.
-Se maduro y estable

También me gustaría ser notificado de la mayoría de los eventos HID a través de devoluciones de llamada.

He considerado las siguientes alternativas:

* libhid - (Por desgracia?) Esto es GPL y no se puede utilizar en mi aplicación.
* WDK - Parece ser un poco de bajo nivel para mi uso. Yo no necesito ese tipo de control
* atusbhid - Esto tiene un nivel adecuado de abstracción, sino que está firmemente ligada al bucle de mensajes de ventanas

¿Alguno de ustedes tienen otras alternativas para ofrecer?

+0

Descubrí a través de las pruebas que libusb-win32-src-1.2.6.0 no initailiza el elemento de los dispositivos de struct usb_bus. Por favor, intente con otra cosa. – Frank

Respuesta

5

Si libhid funciona para usted, entonces tal vez lo que haría sería escribir una aplicación (que usted usaría GPL), que usa libhid para hablar con dispositivos, y luego proporciona lo que necesita a través de una conexión TCP. Su aplicación real se conectaría a través de TCP para hacer lo que necesita. Esto obviamente sería un golpe de rendimiento masivo.

Esta aplicación sería efectivamente una "cuña" entre libhid y tu aplicación. En este caso, la cuña existiría por razones legales, no técnicas.

No digo que sea una buena idea, solo que es una idea.

2

Paquete de software HIDmaker de sistemas Trace es una opción.

Pros: - Fácil de usar (Excelente para aprender a programar para USB HID) - Genera trabajar aplicaciones de código fuente en un varios formatos de proyecto (Visual Studio, Borland) - Genera código de ejemplo estable por tanto el anfitrión como dispositivo (estable en mi experiencia) - alto rendimiento (si HID, incluso se puede decir que tiene un alto rendimiento en el primer lugar)

Contras: - Sólo funciona en Microsoft Windows - usa su propia biblioteca USB Creo que (ActiveX)

+0

Por lo tanto, en realidad, solo le proporciona un enlace C++ a su control ActiveX. Además, está destinado a producir el código en el lado del hardware para una variedad de microcontroladores. Eso me parece un poco exagerado. –

2

Consider rolling yo tu propio. Tendrás control total sobre la interfaz, el nivel de independencia de la plataforma, y ​​demás. Aunque un proyecto es GPL, puede usarlo como una receta propia y como banco de pruebas para encontrar problemas con los suyos.

+0

He creado mi propia biblioteca HID en C# y C++/CLI. Puede consultar el WDK. –

2

mirada a este código:

http://khason.net/blog/read-and-use-fm-radio-or-any-other-usb-hid-device-from-c

Te da algunas clases simples para hablar con un dispositivo HID. Lo que se reduce a esto es obtener el alias para el dispositivo (algo así como \? \ HID # Vid_nnnn & Pid_nnn # .......) y usar CreateFile para abrirlo. Puede obtener el alias del dispositivo en HKML \ SYSTEM \ CCS \ Control \ DeviceClasses {4d1e55 ...} \

Vid y Pid son la identificación del vendedor y la identificación del producto del dispositivo (ver Device Manager).

2

Hay varios controladores USB HID Host para Windows. Una biblioteca de enlace dinámico fácil de usar es http://embedded24.net. También hay varias aplicaciones de ejemplo incluidas para Visual Studio 2010 (C++, C# y VB).

7

Eche un vistazo a hidapi: es C, que responde a la pregunta de enlaces C++ (efectivamente :)), es multiplataforma y tiene una licencia muy permisiva. No parece tener las devoluciones de llamada, pero ...

+0

Definitivamente la mejor opción si libhid no es una opción debido a la licencia. – patrickvacek

Cuestiones relacionadas