2017-07-25 7 views
0

Je configure mon premier transfert asynchrone libusb mais je ne reçois jamais de rappel.libusb_submit_transfer pas de rappel

J'ai connecté à la bibliothèque et peut énumérer et ouvrir des périphériques avec succès.

Les fonctions qui sont utilisées pour mettre en place le transfert (dans cet ordre) sont les suivantes:

libusb_alloc_transfer() 
libusb_fill_bulk_transfer() 
libusb_submit_transfer() 

libusb_submit_transfer retourne un bon résultat donc j'attendre à recevoir un rappel même si elle renvoie une erreur, mais aucune n'est reçue.

Des suggestions sur ce qui pourrait se tromper?

Répondre

1

libusb documentation états:

Dans l'intérêt d'être une bibliothèque légère, libusb ne crée pas des fils et ne peuvent fonctionner que lorsque votre application appelle en elle. Votre application doit appeler libusb à partir de sa boucle principale lorsque les événements sont prêts à être traités, ou vous devez utiliser un autre schéma pour permettre à libusb d'entreprendre tout travail qui doit être fait.

Deux niveaux d'intégration sont proposées:

  • Simple: vous utilisez un appel de blocage comme contenu principal de la boucle de votre application
  • Advanced: vous pouvez libusb de demande de ses descripteurs et les mélanger avec le vôtre, ou enregistrez des rappels (libusb_set_pollfd_notifiers()) pour être averti des descripteurs ajoutés/supprimés.

Un exemple d'utilisation de la dernière se trouve dans les libmaru project

+0

Merci, je ne libusb Un entretien en utilisant 'libusb_handle_events' ou similaire, par conséquent, ne recevant aucune callbacks – dynamode