2010-10-12 9 views
10

Ich werde eine Anwendung in Qt schreiben, die auf den 3 Hauptbetriebssystemen läuft (Windows, Linux und Mac). Eine der Eigenschaften dieser App ist, dass sie USB benötigt, um mit einem Stück kundenspezifischer externer Hardware zu kommunizieren. Gibt es eine plattformübergreifende USB-Bibliothek?Gibt es eine C++ plattformübergreifende USB-Bibliothek?

+0

Spricht die benutzerdefinierte Hardware HID über USB, oder verwenden Sie die serielle Leitung direkt? – nmichaels

+0

Wahrscheinlich eine serielle Verbindung. Es ist ein ATMega USB-Chip, mit der LUFA USB-Bibliothek, die beide unterstützt, aber eine serielle Verbindung ist wahrscheinlich die wahrscheinlichste Option. – Bojangles

+0

Ahh, aber unter Windows können Sie ein Dutzend anderthalb Third-Party-Bibliotheken für $$$ finden ;-) –

Antwort

8

Versuchen Sie libusb.

Unterstützte Betriebssysteme: Linux, FreeBSD, NetBSD, OpenBSD, Darwin, MacOS X (und Windows, durch die libusb-win32-Projekt).

Aber Sie sollten beachten, dass es libusb0.sys Kernel-Mode-Treiber auf Windows verwendet, die zertifizierte WHQL nicht und es könnte ein Problem in 64-Bit-Windows 7 und Windows Server 2008 R2 sein. Entschuldigung, Version 1.2.0.0 von libusb0.sysis digitally signed.

+0

Danke! Genau die Informationen, die ich brauchte. – Bojangles

+0

Das Problem mit libusb-win32 ist, dass es ein Port von libusb-0.1 ist, der nicht mit libusb-1.0 kompatibel ist. Libusb-1.0 scheint nun Windows nativ zu unterstützen. – trojanfoe

+0

Libusb ist in den letzten Jahren besser geworden: Sie können es jetzt unter Windows verwenden, um mit Geräten zu kommunizieren, die WinUSB als ihren Treiber haben, also müssen Sie keinen Kernel-Modus-Code von Drittanbietern wie 'libusb0.sys' ausführen. –

4

Ich würde nur für jeden Beitrag aktualisieren möchten, die es kommt wieder heute ...

Libusb (Version 0.1) ist veraltet, da wurde. Der moderne Standard ist libusb-1.0 oder libusbx.

Persönlich denke ich, es gibt viele Gründe, libusbx zu verwenden. Es wurde von frustrierten Libusb-0.1-Entwicklern geschrieben, die einen häufigeren Update-Zyklus und ein besseres Bug-Maintenance-System wollten.

Meine Gründe für libusbx was darauf hindeutet, sind wie folgt: aus der Box mit dem Lesen eingehenden Nachrichten Zugang

  • erfordert keine sudo
  • für mich viel besser gearbeitet
  • bessere Unterstützung und häufigere Antworten auf Fehler/Probleme
  • Asynchron und Synchron Unterstützung für das Senden/Empfangen von Nachrichten

Zugegeben, libusb-1.0 unterstützt async/sync-Berichte ... aber die Philosophie hinter libusbx ist viel ansprechender und die Dokumentation ist besser.

Es liegt also ganz bei Ihnen, ob Sie oder wer immer noch etwas mehr über die Bibliotheken wissen möchte, die Geschichte ist sehr einfach online zu finden. Sie können auch this Stapel Frage für weitere Informationen zum unmittelbaren Thema sehen.

+3

Ab Februar 2014 gibt es tatsächlich nur noch [libusb] (http://libusb.info).Die linusbx-Homepage hat den folgenden Kommentar: libusbx war eine Abzweigung von [libusb] (http://libusb.info), einer Bibliothek, die generischen Zugriff auf USB-Geräte bietet. Ab dem 26.01.2014 wurde dieses Projekt vollständig in [libusb] (http://libusb.info) zusammengeführt und wird nicht weitergeführt. Da es keine weiteren Releases von libusbx geben wird, wird dringend empfohlen, zu [libusb] (http://libusb.info) zu wechseln. – user23573

Verwandte Themen