Forum Linux.mandriva Utilisation de LibUsb

Posté par  .
Étiquettes : aucune
0
5
déc.
2006
Bonjour,

Je dois réaliser un programme de commande d'une carte USB. Je pensais devoir réaliser un module mais on m'a dit d'utiliser "libusb", mais comment ça marche ???
Je veux réaliser un programme simple , en C, qui me renvoie, par exemple les paramètres constructeurs. Au final le programme doit envoyer des données sur le port USB pour une carte GPIB

Merci
  • # Tu as lu la doc de la libusb ?

    Posté par  (site web personnel) . Évalué à 5.

    Parce que bon dire "comment ca marche" alors que c'est bien documenté et qu'il existe plein d'exemples semble montrer que tu n'as pas du tout cherché...

    Tu cherches "libusb" sur google et ca te donne la doc qui contient déja elle même quelques exemples : http://libusb.sourceforge.net/doc/
  • # Programme libusb

    Posté par  (site web personnel) . Évalué à 4.

    Ben déjà, vérifie que tu as la libusb sur ton ordi:
    le fichier "/usr/include/usb.h" doit exister.
    sinon, il te faut installer le package libusb-devel
    (ou libusb-dev selon la distribution)

    Une fois cela fait, regarde la documentation ici:

    http://libusb.sourceforge.net/doc/
    En particulier, en bas il y a le chapitre "exemple".

    Le fichier usb.h est aussi une bonne référence.

    Un autre article: http://www.linuxjournal.com/node/7466/print

    Encore un: http://www.cs.indiana.edu/~bpisupat/work/usb.html

    Ensuite, bah il faut commencer le programme...
    Normallement tu dois connaitre le deviceID et le vendorID du periphérique, donc le détecter ca dois ressembler à ca:

    int main(void)
    {
    struct usb_bus *busses;
    usb_init();
    usb_find_busses();
    usb_find_devices();
    busses = usb_get_busses();
    struct usb_bus *bus;
    int c, i, a;

    /* boucle sur les bus USB */
    for (bus = busses; bus; bus = bus->next) {
    struct usb_device *dev;
    /* Par bus, boucle sur les devices */
    for (dev = bus->devices; dev; dev = dev->next) {
    if ((dev->descriptor.idVendor == MYVENDOR) &&
    (dev->descriptor.idProduct == MYPRODUCT) ) {
    /* boucle sur les configurations, si plus de 1 seule */
    {...}
    }
    }
    }
    }

    Ensuite, ben il faut l'ouvrir, faire un claim, et chercher dans la doc du périphérique USB comment trouver les "paramètres constructeurs" dont tu parles.

    Voila !

    Regarde aussi si, a tout hasard, ton périphérique n'est pas compatible avec un protocole "standard" USB dont linux a les drivers, style série 'ACM', ou 'HID'.
    (Rigole pas ca m'est arrivé....)
    A+

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.