Bonjour à tous,
J'ai trouvé un tutoriel très sympa qui explique un démon pour les périphériques USB mais pas la première étape importante qui consiste à lister ceux déjà présent sur le PC.
Je reste bloqué sur ce code qui liste les hidraw :
#include <libudev.h>
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <unistd.h>
int main (void)
{
struct udev *udev;
struct udev_enumerate *enumerate;
struct udev_list_entry *devices, *dev_list_entry;
struct udev_device *dev;
/* Create the udev object */
udev = udev_new();
if (!udev) {
printf("Can't create udev\n");
exit(1);
}
enumerate = udev_enumerate_new(udev);
udev_enumerate_add_match_subsystem(enumerate, "hidraw");
udev_enumerate_scan_devices(enumerate);
devices = udev_enumerate_get_list_entry(enumerate);
udev_list_entry_foreach(dev_list_entry, devices) {
const char *path;
path = udev_list_entry_get_name(dev_list_entry);
dev = udev_device_new_from_syspath(udev, path);
printf("Device Node Path: %s\n", udev_device_get_devnode(dev));
dev = udev_device_get_parent_with_subsystem_devtype(
dev,
"usb",
"usb_device");
if (!dev) {
printf("Unable to find parent usb device.");
exit(1);
}
printf(" VID/PID: %s %s\n",
udev_device_get_sysattr_value(dev,"idVendor"),
udev_device_get_sysattr_value(dev, "idProduct"));
printf(" %s\n %s\n",
udev_device_get_sysattr_value(dev,"manufacturer"),
udev_device_get_sysattr_value(dev,"product"));
printf(" serial: %s\n",
udev_device_get_sysattr_value(dev, "serial"));
udev_device_unref(dev);
}
/* Free the enumerator object */
udev_enumerate_unref(enumerate);
udev_unref(udev);
return 0;
}
On peut remplacer hidraw avec usb ou usb_devices mais ca ne liste pas les périphériques USB.
# au hasard du web
Posté par NeoX . Évalué à 2.
en demandant à mon moteur de recherche de me trouver le bout de code qui utilise hidraw,
je tombe sur ce sujet, ou apparemment quelqu'un essaie de faire comme toi,
mais directement avec QT, certes il n'y a pas de reponses, mais ca peut permettre de voir ce qu'il a fait.
http://openclassrooms.com/forum/sujet/qt-unix-lister-les-peripheriques
et un peu plus loin sur le web, on retrouve ton exemple mais en bas de la page, il y a un "monitoring" de l'USB pour afficher un peripherique qu'on vient de brancher
http://www.signal11.us/oss/udev/
[^] # Re: au hasard du web
Posté par electro575 . Évalué à 1.
Je n'avais pas testé le code de la personne pour le premier lien. Il s'avère que son programme peut lister les périphériques USB.
A moi d'adapter le code à mon application.
Le deuxième lien m'a permit de faire tourner le démon usb.
Une personne m'a indiqué cette librairie pour la communication USB multiplatforme :
Libusb
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.