IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Détection et affichage des ports USB et devices USB en C


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Décembre 2011
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Décembre 2011
    Messages : 3
    Par défaut Détection et affichage des ports USB et devices USB en C
    Bonjour à tous,

    Je suis novice en C et je me retrouve bloqué sur la fonction d'affichage et détection des USB sur le PC. Une discussion semblable a déjà été lancée mais cela remonte à 2008 et je n'ai eu aucun retour des différents participants .

    Le but de ma fonction est de pouvoir afficher tous les ports USB de la machine en indiquant lesquels de ces ports ont un appareil branché (clé USB, HDD ou autre..). Une fois un device choisi on lance le reste du programme.

    Pour ma fonction j'ai essayé d'utiliser libusb.h (ah oui j'ai oublié de dire que je dois obligatoirement la développer sous windows alors que je n'ai appris à programmer que sous linux et là il y a toutes les fonction de l'API win32 qui me sont étrangères !!). Pour la libusb je suis aller sur sourceforge et j'ai essayé de m'aider de leur exemple mais ça ne permet de détecter qu'un device dont on connait les différents ID..

    Je crois que j'ai tout dit mais si vous avez une question qui vous permettrait de mieux cerner le problème n'hésitez pas!!

    Je suis ouvert à toute idée ou proposition.

    En vous remerciant par avance de votre aide!!

    Hades!!

  2. #2
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    C'est faisable avec la libusb. C'est un peu bourrin d'après ce que j'ai vu, car tu es obligé de lister tous les devices et ensuite d'obtenir un handle sur chacun d'eux. Je n'ai pas réussi à obtenir des informations intéressantes sur mes appareils USB avec seulement un device. Avec un handle, c'est déjà mieux.

    Il existe un programme qui fait ce que tu veux faire. C'est lsusb. Tu pourras trouver les sources ici : http://www.libusb.org/log/libusb/examples/lsusb.c

  3. #3
    Candidat au Club
    Inscrit en
    Décembre 2011
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Décembre 2011
    Messages : 3
    Par défaut
    Merci Bktero!

    J'ai essayé avec le code source de lsusb mais ça bloque! je crois que c'est dû au fait que je suis sous windows??
    il y a aussi le sys/types.h qui est introuvable :s de plus je n'arrive pas à l'installer sur mon pc vu que je ne sais pas dans quel fichier le mettre (j'avoue je suis habitué au "/usr/include" de linux :s)..

    Merci pour ton aide!

  4. #4
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    Je ne suis pas sûr que le code de lsusb soit portable vers Windows. Pour être franc, je n'ai pas essayé, j'ai juste ouvert les fichiers sources et j'ai regardé très rapidement.

    Le fichier qui te manque est "sys/types.h" ou "/sys/types.h" ?

    Si c'est le cas 1, cela signifie que le fichier types.h n'est pas pas le chemin standard pour l'éditeur de lien. Par exemple, avec l'installation standard de la libusb_1.0, le fichier libusb.h n'est pas dans /usr/local/include mais dans /usr/local/include/libusb-1.0. Il faut donc l'inclure dans le fichier source de la façon suivante :#include <libusb-1.0/libusb.h>.
    En toute logique, le fichier pourrait être placé dans un dossier sys qui serait dans le dossier de ton projet (qui doit être dans le chemin de l'éditeur de lien).

    Si c'est le cas 2, ça sera peut-être plus compliqué. Personnellement, mon Ubuntu ne possède pas ce fichier. Viendrait-il de l'installation d'un autre composant ?

  5. #5
    Candidat au Club
    Inscrit en
    Décembre 2011
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Décembre 2011
    Messages : 3
    Par défaut
    il s'agit bien du premier cas! j'ai téléchargé le header "types.h" et j'ai mis son adresse exact dans le #include pour éviter d'autres désagréments et là il me demande d'autres headers qui sont introuvables.. je refais donc l'opération plusieurs fois pour qu'il ait tous les fichiers dont il a besoin! et là ça ne compile pas!!! J'ai des erreurs dans libusb.h !! Je crois que cette lib est uniquement dédiée à linux..
    En revanche, j'ai trouvé libusb-win32.h qui m'a l'air d'être la bonne et j'ai même trouvé un exemple mais il ne cherche qu'un device dont on connait les différents id (produit et vendeur!!) voir http://sourceforge.net/apps/trac/lib..._documentation
    J'aimerai bien me baser sur cette fonction mais je ne vois pas cmt lui faire parcourir tous les bus

  6. #6
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    Oui, il faut effectivement utiliser le portage de libusb pour Windows, sinon ça risque de ne pas marcher ^^

    EDIT : à noter que le "#include <usb.h>" indique que le programme utilise la version 0.1 de la bibliothèque et non la version 1.0.

Discussions similaires

  1. Mini USB a, mini USB b, mini USB ab ?
    Par Shain dans le forum Périphériques
    Réponses: 2
    Dernier message: 30/03/2010, 08h49
  2. Affichage des ports
    Par maya dans le forum 2D
    Réponses: 1
    Dernier message: 16/09/2009, 15h49
  3. gestion des ports USB
    Par electronic_13 dans le forum VB.NET
    Réponses: 5
    Dernier message: 19/08/2008, 20h23
  4. Utilisation des ports (serie, usb, etc.)
    Par muslim1987 dans le forum C++
    Réponses: 2
    Dernier message: 08/07/2008, 13h57
  5. [c#] gestion des ports USB
    Par TERRIBLE dans le forum C#
    Réponses: 3
    Dernier message: 25/11/2006, 19h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo