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 :

Accéder à un boitier 8 relais USB, erreur de segmentation


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 42
    Par défaut Accéder à un boitier 8 relais USB, erreur de segmentation
    Bonjour,

    Je suis sous Debian 7.

    Je tente d'écrire un programme en C me permettant de commander des relais connectés sur un port USB.
    J'utilise la librairie libusb

    J'initialise l'accès à l'USB
    OK

    Je scanne les devices USB
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    libusb_get_device_list(...)
    OK

    Je recherche mon boitier USB dans la liste connaissant idVendor et idProduct (boitier KEMO : 0x1781 et 0x08c0)
    C'est une boucle avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    libusb_get_device_descriptor(dev, &desc)
    OK

    J'ai donc bien ma structure libusb_device_descriptor desc avec desc.idVendor et desc.idProduct
    et je trouve mes données desc.idVendor 0x1781 et desc.idProduct 0x08c0

    et enfin je veux ouvrir mon device :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int usb_open = libusb_open(dev, handle);
    ça plante méchamment : Erreur de segmentation !!!

    Là, je bloque...

    Quelqu'un a t-il une idée ?


    Merci
    Bertrand

  2. #2
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Sans chercher dans la doc, vu que c'est un open, je parie que tu n'as pas initialisé un pointeur correctement.
    Je pense qu'il faut lui donner l'adresse d'une variable bien construite

    je m'attend à voir un code du type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int usb_open = libusb_open(dev, &handle);

  3. #3
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2014
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2014
    Messages : 345
    Par défaut
    D'après la doc :

    int libusb_open(libusb_device *dev, libusb_device_handle **devh)

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 42
    Par défaut
    Côté déclaration, j'ai bien fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    struct libusb_device_handle *handle;
    et je n'ai aucun warning avec le compilateur...


    Je viens d'essayer avec la fonction directe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    handle = libusb_open_device_with_vid_pid(...);
    le programme ne se plante pas...

    mais quand je transfert des données, ça me retourne -1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    r = libusb_submit_transfer(commande);
    en pensant bien initialiser la "commande"...
    Je cherche...

  5. #5
    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
    et je n'ai aucun warning avec le compilateur...
    Quelle est la ligne de commande pour compiler ?

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 42
    Par défaut
    Je n'ai pas de ligne de commande à part make (Makefile) repris de l'exemple livré avec la librairie libusb-1.0.9

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. communication usb erreur
    Par Deskwisk dans le forum C
    Réponses: 0
    Dernier message: 17/06/2010, 14h16
  2. USB - Erreur 997
    Par Themacprod2 dans le forum API, COM et SDKs
    Réponses: 1
    Dernier message: 24/08/2008, 01h26
  3. programme qui detecte une cle USB ERREUR
    Par dimainfo dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 11/06/2008, 11h24
  4. [Cle USB] Erreur de redondance cyclique
    Par raymon dans le forum Composants
    Réponses: 2
    Dernier message: 02/05/2008, 15h54
  5. Disque USB erreur au Boot
    Par n1portki dans le forum Administration système
    Réponses: 5
    Dernier message: 24/03/2008, 00h24

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