Comment utiliser correctement libusb pour parler aux périphériques USB connectés?

comment utiliser correctement libusb pour parler à des périphériques USB connectés?

en particulier, comment puis-je transférer des données aux périphériques USB, recevoir des informations à partir des périphériques, trouver le nom du périphérique connecté, s'ils ont un stockage, etc.

plus précisément, je vais exécuter ceci sur une machine Mac OS X, donc je sais que je ne peux pas juste utiliser des fichiers d'en-tête Windows.

S'il y a une bonne explication sur les périphériques libusb et USB, ce serait utile aussi.

11
demandé sur Peter Mortensen 2013-06-21 20:00:08

3 réponses

j'ai trouvé ici un howto textuel sur l'utilisation de libusb-1.0: http://www.dreamincode.net/forums/topic/148707-introduction-to-using-libusb-10/

7
répondu user2469202 2013-06-26 09:20:21

Ici est un post sur une question similaire qui pourrait être utile pour vous. J'ai inclure beaucoup de liens.

mais peut-être que vous préféreriez le voir ici. Donc, dans ce cas, ici, il va!

Libusb vous permet d'énumérer les périphériques et de sélectionner celui que vous voulez en fonction d'un ID Vendeur/produit spécifique (Id V/P). Si vous ne savez pas cela et ne pouvez pas le trouver en ligne avec la description du produit, alors vous pouvez facilement le trouver.

si elle n'est pas en ligne, vous devrez utilisez une application similaire à lsusb sur Linux. (Je ne crois pas qu'il est sur Mac. Lorsque vous lancez lsusb, il liste les périphériques connectés et leurs identifiants V/P. Vous pouvez facilement trouver votre appareil en débranchant, en lançant lsusb, et en branchant l'appareil de nouveau et en comparant. C'est un morceau de gâteau. Toute application de liste usb sur Mac affichera avec un peu de chance L'ID V/P comme le fait lsusb.

ensuite, une fois que vous avez cet ID V/P, vous utiliserez libusb (si vous utilisez 0.1) pour énumérer tous les périphériques et trouver le périphérique qui correspond à cet id. (Je le soutien en utilisant libusbx qui se trouve avoir une fonction de périphérique de recherche simple basée sur V / P id - en fait, libusbx est beaucoup plus concis tout autour.)

après avoir sélectionné votre périphérique, vous enverrez un paquet en utilisant des rapports de fonctionnalité ou de sortie. C'est la partie la plus compliquée parce que le paquet que vous envoyez dépend de chaque appareil, je crois. Il s'agit de 8 octets de données et un seul d'entre eux est un caractère unique que vous souhaitez envoyer au périphérique usb. (Si vous voulez envoyer 8 caractères, vous devez parcourir un tableau de caractères et de nous faire part d'une ou de sortie pour chaque personnage.)

à titre d'exemple, n'hésitez pas à faire référence à un terminal plutôt spécifique exemple j'ai écrit pour contrôler deux LEDS. Si c'est utile, c'est parfait! Il contient un exemple de libusbx et libusb-0.1.

j'espère que cela aide!

6
répondu eatonphil 2017-05-23 12:33:57

Le processus que vous pouvez suivre est la suivante:

  1. Obtenir la VID, le PID de l'appareil que vous souhaitez communiquer à l'aide de lsusb
  2. Essayez d'ouvrir l'appareil et de lire le descripteur de périphérique
  3. Si vous voulez le nom de l'appareil utilisation de descripteur de chaîne pour obtenir que
  4. Vérifier si un pilote de noyau est attaché. Si c'est le cas, détachez-le et effectuez un transfert de données brutes
  5. après avoir reçu la réponse re-attachez le pilote.
1
répondu freeworld 2016-10-08 23:41:59