it-swarm.com.de

Wie verwende ich libusb am besten, um mit angeschlossenen USB-Geräten zu kommunizieren?

Wie kann ich mit libusb am besten mit angeschlossenen USB-Geräten kommunizieren?

Wie übertrage ich Daten auf die USB-Geräte, empfange Informationen von den Geräten, finde den Namen des angeschlossenen Geräts heraus, ob sie über Speicher verfügen usw.

Insbesondere werde ich dies auf einem Mac OS X-Computer ausführen, sodass ich weiß, dass ich nicht nur Windows-Headerdateien verwenden kann.

Wenn es eine gute Erklärung für libusb- und USB-Geräte gibt, wäre das auch hilfreich.

14
user473973

Ich habe hier eine textliche Anleitung zur Verwendung von libusb-1.0 gefunden: http://www.dreamincode.net/forums/topic/148707-introduction-to-using-libusb-10/

9
user2469202

Hier ist ein Beitrag zu einer ähnlichen Frage, die für Sie nützlich sein könnte. Ich füge viele Links hinzu.

Aber vielleicht sehen Sie es lieber hier. In diesem Fall geht es also!

Mit Libusb können Sie Geräte auflisten und das gewünschte Gerät basierend auf einer bestimmten Hersteller-/Produkt-ID (V/P-ID) auswählen. Wenn Sie dies nicht wissen und es online mit der Produktbeschreibung nicht finden können, können Sie es leicht finden.

Wenn es nicht online ist, müssen Sie eine App verwenden, die lsusb unter Linux ähnelt. (Ich glaube nicht, dass es auf dem Mac ist.) Wenn Sie lsusb ausführen, werden die verbundenen Geräte und ihre V/P-IDs aufgelistet. Sie können Ihr Gerät leicht finden, indem Sie den Stecker ziehen, lsusb ausführen und das Gerät wieder anschließen und vergleichen. Es ist ein Stück Kuchen. Jede USB-Listen-App auf dem Mac zeigt hoffentlich die V/P-ID an, wie dies bei lsusb der Fall ist.

Sobald Sie diese V/P-ID haben, verwenden Sie libusb (wenn Sie 0.1 verwenden), um alle Geräte aufzulisten und das Gerät zu finden, das dieser ID entspricht. (Ich unterstütze die Verwendung von libusbx, die zufällig über eine einzige Find-Device-Funktion auf Basis der V/P-ID verfügt - in der Tat ist libusbx um einiges viel knapper.)

Nachdem Sie Ihr Gerät ausgewählt haben, senden Sie ein Paket über Funktions- oder Ausgabeberichte. Dies ist der komplizierteste Teil, da das Paket, das Sie senden, von dem einzelnen Gerät abhängig ist, das ich glaube. Es sind 8 Byte Daten, von denen nur ein einziges Zeichen an das USB-Gerät gesendet werden soll. (Wenn Sie 8 Zeichen senden möchten, müssen Sie ein Array von Zeichen durchlaufen und für jedes Zeichen einen Funktions- oder Ausgabebericht senden.)

Als Beispiel können Sie sich auf ein bestimmtes Terminal Example I beziehen, um zwei LEDs zu steuern. Wenn es hilfreich ist, großartig! Es enthält ein Beispiel für libusbx und libusb-0.1.

Ich hoffe das hilft!

6
eatonphil

Der Prozess, dem Sie folgen können, ist:

  1. Rufen Sie die VID und PID für das Gerät ab, mit dem Sie kommunizieren möchten, indem Sie lsusb verwenden.
  2. Versuchen Sie, das Gerät zu öffnen, und lesen Sie die Gerätebeschreibung
  3. Wenn Sie den Namen des Geräts benötigen, verwenden Sie den String-Deskriptor, um diesen zu erhalten
  4. Prüfen Sie, ob ein Kernel-Treiber angeschlossen ist. Wenn dies der Fall ist, trennen Sie es und führen Sie eine Rohdatenübertragung aus
  5. Nachdem Sie die Antwort erhalten haben, schließen Sie den Treiber erneut an.
1
freeworld

Die offizielle Seite für libusb 1.0 (die neuere und empfohlene Version) ist https://libusb.info/ . Die API-Dokumentation finden Sie unter http://api.libusb.info . Klicken Sie auf den Abschnitt Module, um die verschiedenen Funktionsbereiche durchzugehen. Die Quelle ist unter https://github.com/libusb/libusb und Sie können einige Arbeitsbeispiele unter https://github.com/libusb/libusb/tree/master/examples sehen. Hoffentlich hilft das!

Der Artikel von @ user2469202 ist auch ein gutes Grundintro.

1
studgeek