2010-10-12 25 views
10

Sto (sto per essere) scrivendo un'applicazione in Qt che verrà eseguita sui 3 sistemi operativi principali (Windows, Linux e Mac). Una delle caratteristiche di questa app è che ha bisogno di USB per parlare con un pezzo di hardware esterno personalizzato. È disponibile una libreria USB multipiattaforma?Esiste una libreria USB cross platform C++?

+0

L'hardware personalizzato parla HID tramite USB o utilizza direttamente la linea seriale? – nmichaels

+0

Probabilmente un collegamento seriale. È un chip USB ATMega, con la libreria LUFA USB, che ha il supporto per entrambi, ma un collegamento seriale è probabilmente l'opzione più probabile. – Bojangles

+0

Ah, ma su Windows è possibile trovare una dozzina e mezzo di librerie di terze parti per $$$ ;-) –

risposta

8

Prova libusb.

Sistemi operativi supportati: Linux, FreeBSD, NetBSD, OpenBSD, Darwin, MacOS X (e Windows, attraverso il progetto libusb-win32).

Ma si deve notare che utilizza libusb0.sys driver in modalità kernel su Windows, che non è certificati WHQL e potrebbe essere un problema in 64 bit di Windows 7 e Windows Server 2008 R2. Siamo spiacenti, versione 1.2.0.0 di libusb0.sysis digitally signed.

+0

Grazie! Solo le informazioni di cui avevo bisogno. – Bojangles

+0

Il problema con l'uso di libusb-win32 è che si tratta di una porta di libusb-0.1, che non è compatibile con libusb-1.0. Tuttavia, libusb-1.0 ora sembra supportare Windows in modo nativo. – trojanfoe

+0

Libusb è migliorato negli ultimi anni: ora puoi usarlo su Windows per parlare ai dispositivi che hanno WinUSB come loro driver, quindi non devi eseguire alcun codice in modalità kernel da terze parti come 'libusb0.sys'. –

4

Vorrei solo ad aggiornare questo post per chi è tornato al giorno d'oggi ...

Libusb (versione 0.1) è stato dal deprecato. Lo standard moderno è usare libusb-1.0 o libusbx.

Personalmente, penso che ci siano molti motivi per utilizzare libusbx. È stato scritto da frustrati sviluppatori libusb-0.1 che volevano un ciclo di aggiornamento più frequente e un migliore sistema di manutenzione degli errori.

Le ragioni per suggerire libusbx sono i seguenti:

  • non richiede l'accesso sudo
  • lavorato molto meglio per me fuori dalla scatola con la lettura di messaggi in arrivo
  • migliore supporto e più frequenti risposte a problemi/bug
  • asincroni e supporto sincrono per l'invio/ricezione di messaggi

Concesso, libusb-1.0 supporta il reporting asincrono/sincronizzazione ... ma la filosofia alla base di libusbx è molto più allettante e la documentazione è migliore.

Quindi spetta a te, se tu o chiunque altro vorrebbe sapere ancora qualcosa sulle biblioteche, la storia è molto facile da trovare online. Puoi anche vedere la domanda dello stack this per ulteriori informazioni sull'oggetto immediato.

+3

A partire da febbraio 2014, è rimasto solo [libusb] (http://libusb.info).La homepage di linusbx ha il seguente commento: libusbx era un fork di [libusb] (http://libusb.info), una libreria che fornisce accesso generico ai dispositivi USB. A partire dal 2014.01.26, questo progetto è stato completamente integrato in [libusb] (http://libusb.info) e sta per essere interrotto. Poiché non ci saranno ulteriori rilasci di libusbx, siete fortemente incoraggiati a passare all'uso di [libusb] (http://libusb.info). – user23573