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 :

Communication par USB


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de jibe74
    Inscrit en
    Avril 2004
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 172
    Par défaut Communication par USB
    Salut,

    J'ai à faire une application utilisant ce convertisseur, mais j'avoue être dans le brouillard pour la partie USB. Il faut dire que je découvre ce protocole (j'ai réalisé quelques applis qui utilisent RS232, mais les communications sont loin d'être ma spécialité) et j'ai du mal à faire le lien entre les différentes docs que je consulte :

    http://abcelectronique.com/acquier/USB.html
    http://www.motrona.eu/PDF/Uz210_f.pdf
    http://www.motrona.eu/PDF/Serpro_e.pdf
    http://www.developpez.net/forums/d12...ipherique-usb/

    Prises individuellement et du point de vue théorique, elles me paraissent claires (bien que je découvre que l'USB est bien plus complexe que le RS232 !), mais quand j'essaie de voir comment je pourrais faire pratiquement, j'ai l'impression qu'il me manque un paquet de choses essentielles ! Est-ce seulement parce que, je l'avoue, je n'ai pas pris le temps de lire toute la première doc, et d'en avoir pris seulement ce qui me semblait indispensable ? Si je ne doute pas qu'une lecture plus assidue me serait très bénéfique, je n'ai pas l'impression qu'elle m'aidera beaucoup sur le plan pratique...

    Ce que j'ai à réaliser est simple :

    Récupérer sur l'USB les données converties de l'entrée analogique pour les afficher sous forme de courbe. Peu importe de les récupérer "à la volée" ou par échantilonnage. Cela doit tourner sous Linux (je développe sur Ubuntu 12.04) et je pensais utiliser libusb.

    Mais voilà : je ne parviens pas à voir comment "traduire" le protocole décrit par Motrona en code C qui, via libusb, fera le dialogue avec l'UZ210...

    D'abord, me faut-il un driver ? Je pensais qu'avec libusb c'était inutile, mais les explications de djuju me mettent un doute... Si je dois en utiliser un, comment le générer ?

    Ensuite, comment faire les requêtes ? J'ai un peu de mal à retrouver, dans les exemples que j'ai, la relation entre les appels de fonction qui sont faits et la théorie. J'ai fait quelques analyses avec wireshark, et j'ai là aussi du mal à retrouver les bmRequestType, bmRequest, wValue, wIndex, wLength... Il y a plusieurs cas où l'ordre ou la taille des données semble différent... Bref, quelque chose m'échappe, mais je n'arrive pas à voir quoi exactement... Y aurait-il un exemple qui se rapprocherait plus de ce que je dois faire ?

    Ce que j'ai quand même réussi à faire

    J'ai réalisé il y a quelque temps une commande d'un bras robotisé KSR10. Bon, je n'ai pas eu grand mal : je suis parti d'un script python que j'ai trouvé sur le net, et pour la partie USB je me suis contenté de recopier les appels à libusb. Cela me paraissait assez simple et clair : après recherche du bras et obtention du handle, tout ce qu'on fait est d'envoyer une série de bits sur 3 octets, chacun commandant un moteur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    r = libusb_control_transfer(devh,
                                0x40,	//uint8_t 	bmRequestType,
                                6,		//uint8_t 	bRequest,
                                0x100,	//uint16_t 	wValue,
                                0,		//uint16_t 	wIndex,
                                cmd,	// Les 3 octets de la commande
                                CMD_DATALEN,
                                0	 
    );
    J'arrive aussi, en réutilisant le même code d'initialisation, à obtenir un handle pour l'UZ210. Mais après, je suis bloqué ! Je ne suis pas arrivé à faire la moindre récupération de données qui fonctionne... Je ne sais même pas que faire de la commande de lecture donnée dans la doc de l'UZ210 et ne comprends pas pourquoi elle n'a aucun rapport avec ce qui est décrit dans le site d'abcelectronique.com...

    Si quelqu'un pouvait m'indiquer une doc, un exemple ou autre qui me mette le pied à l'étrier...

  2. #2
    Membre confirmé Avatar de jibe74
    Inscrit en
    Avril 2004
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 172
    Par défaut
    Salut,

    J'imagine bien que sans question(s) précise(s), il est difficile de me répondre ! Toutefois, j'apprécierais qu'on m'oriente au moins un peu sur la manière d'aborder le problème.

    Je viens de découvrir ce document, qui est certainement le premier à lire ! Et du même coup, je découvre le site linux-usb.org qui me sera certainement très utile.

    J'ai de quoi bien m'occuper et apprendre, mais si quelqu'un pouvait m'orienter sur ce qui m'est le plus utile pour ce que j'ai à faire, ça m'éviterait de passer des heures à lire des docs qui ne me serviront peut-être jamais !

    Merci d'avance à ceux qui voudront bien essayer de me conseiller !

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 176
    Par défaut
    Bonjour,

    Bon je ne sais pas si ça va t'avancer, mais voilà un lien qui me semble intéressant pour démarrer facilement...si tu peux utiliser Python
    bonne chance

  4. #4
    Membre confirmé Avatar de jibe74
    Inscrit en
    Avril 2004
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 172
    Par défaut
    Merci : c'est toujours une piste, et la lecture en diagonale de l'article me laisse penser qu'il est agréable à lire et facile à comprendre. Je vais regarder ça plus en détails et éventuellement faire quelques essais... si je peux puisque je n'ai pas la chance d'être l'heureux propriétaire d'un si magnifique bouton !

  5. #5
    Membre Expert
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Par défaut
    Salut,

    J'ai regardé vite fait et un driver est effectivement nécessaire, il est téléchargeable sur leur page support, cependant l'USB n'est utilisé ici que comme "interface de liaison" entre l'appareil et le PC alors la communication ou l'acquisition se fait sur un port virtuel COM, donc sur le fonctionnement, du point de vue de ton application, tu dois voir ton appareil comme ayant une interface rs232 et non USB...

  6. #6
    Membre confirmé Avatar de jibe74
    Inscrit en
    Avril 2004
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 172
    Par défaut
    Salut,

    Merci de t'être penché sur le problème

    Citation Envoyé par minnesota Voir le message
    J'ai regardé vite fait et un driver est effectivement nécessaire, il est téléchargeable sur leur page support
    Ai-je besoin de changer de lunettes ? Il y a effectivement un driver Windows, mais je n'ai rien su trouver pour Linux, ni sur le site ni sur le CD livré avec l'appareil...

    Bon, s'il y en a bien un malgré le fait que je vienne de re-vérifier sans succès, je suis volontiers preneur de l'URL à laquelle on peut le télécharger

    Citation Envoyé par minnesota Voir le message
    cependant l'USB n'est utilisé ici que comme "interface de liaison" entre l'appareil et le PC alors la communication ou l'acquisition se fait sur un port virtuel COM, donc sur le fonctionnement, du point de vue de ton application, tu dois voir ton appareil comme ayant une interface rs232 et non USB
    C'est bien un peu la conclusion à laquelle j'étais arrivé, mais :
    1. Que faire s'il n'y a pas de driver fourni ? (en supposant que ce n'est pas uniquement un problème de vue déficiente )
      1. En faire un ? Mais comment ?
      2. En trouver un ailleurs ? Un driver d'adaptateur USB/RS232 quelconque (ou universel ?) peut-il faire l'affaire ?
      3. S'en passer ? Mais comment ?
    2. Il y a de nombreux appareils USB qui nécessitent un driver sous Windows, et qui fonctionnent très bien sans sous Linux. D'après toi, un driver Linux serait bien obligatoire dans ce cas ?
    3. Que l'USB ne serve que d'interface de liaison (on parle bien des couches OSI, là ?) empêche-t-il toute communication par l'application elle-même ? Ou est-ce dans ce cas vraiment très différent d'une communication plus "classique" par USB, au point que ce soit impossible avec les bibliothèques standard ?

Discussions similaires

  1. communication par usb
    Par mohamed-ahmed dans le forum Android
    Réponses: 0
    Dernier message: 22/05/2014, 21h03
  2. communication par USB - HID
    Par acarapataf dans le forum MFC
    Réponses: 0
    Dernier message: 05/11/2010, 15h13
  3. Communication entre deux programmes c# par USB
    Par Sylvain_31 dans le forum C#
    Réponses: 1
    Dernier message: 13/04/2010, 23h27
  4. [Communication]Echanges de fichiers par USB
    Par Menhir dans le forum Périphériques
    Réponses: 2
    Dernier message: 01/09/2009, 11h58
  5. Communication par le port USB
    Par Mr Vic dans le forum Windows
    Réponses: 4
    Dernier message: 29/12/2006, 19h24

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