Scanner les ports usb sous linux

Contenu du snippet

J'ai commencé à ecrire un Driver USB sous linux et j ai rencontré bcp de problèmes et peu de solutions. alors pour palier à ce manque je m engage à fournir les infos et les source au fur et à mesure que j'avance.
Je commence par vous dire qu'il vous faut lire alors lire en français certes mais surtout en anglais le plus chiant.
Les liens qui m ont le plus aidé sont les suivants.
Comprendre l'USB : http://acquier.developpez.com/cours/USB/
Comprendre l'USB : http://www.xml.com/ldd/chapter/book/bookindexpdf.html
Le tutorial de la librairie : http://libusb.sourceforge.net/doc/index.html
Avant de compiler je tiens à dire qu'il vous faut installer la librairie USB si vous l avez pas enccore disponible ici : http://superb-west.dl.sourceforge.net/sourceforge/libusb/libusb-0.1.12.tar.gz

Source / Exemple :


/*

  • Main
*
  • Written by:
  • Copyright 2006, Yasmin OROU GUIDOU <ogyasmin@yahoo.fr>
*
  • USB
  • /
#include <stdio.h> #include <usb.h> #include <errno.h> // Bibliothèque des erreurs. struct usb_bus *busses; struct usb_bus *bus; struct usb_device *dev,*fdev; usb_dev_handle *device_handle = 0; void driver_init(void) { usb_init(); //Initialisation de la librairie (par example determine le chemin du repertoire des bus et peripheriques) usb_find_busses(); // Enumère tous les bus USB du systemes usb_find_devices();// Enumère tous les peripheriques sur tous les Bus présents) // Parcours de la liste des bus et des périphériques } void usb_scan(void) { for (bus = usb_busses; bus; bus = bus->next) { for (dev = bus->devices; dev; dev = dev->next) { printf("bus : %s Device %s \n id Vendor: %d | id Product : %d | Manufacturer Name : | Product Name : \n", bus->dirname,dev->filename ,dev->descriptor.idVendor,dev->descriptor.idProduct); // dev->descriptor.iManufacturer,dev->descriptor.iProduct ( Vous pouvez ajouter ces infos mais si les périphériques n'ont pas fournit au système les info il y aura erreur de segmentation } } } struct usb_device *usb_find_My_device(int idV, int idP) { for (bus = usb_busses; bus; bus = bus->next) { for (dev = bus->devices; dev; dev = dev->next) { // condition vérifié si c'est un Mon flash disque iProduct=Flash Disk if ((dev->descriptor.idVendor == idV) && (dev->descriptor.idProduct ==idP )) //Caract de ma clé USB32 idV=0x0ea0 idP=0x2168 return(dev); } } return(0); } int main (void) { int send_status; int open_status; unsigned char send_data=0xff; unsigned char receive_data=0; driver_init(); usb_scan(); return 0; }

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.