PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : libusb



Dragoran
31-12-2004, 10:24
Hallo
Ich versuche gerade zu lernen wie man mit libusb usbgeräte steuert habe aber jetzt folgendes Problem:
Dieser code:


#include <usb.h>
#include <stdlib.h>
#include <stdlib.h>
struct usb_bus *busses;
struct usb_bus *bus;
struct usb_device *dev;
int main()
{
char string[256];
usb_dev_handle *udev;
int ret;
usb_init();
usb_find_busses();
usb_find_devices();
busses=usb_get_busses();
for(bus=busses;bus;bus=bus->next) {
for(dev=bus->devices;dev;dev=dev->next) {
udev=usb_open(dev);
ret=usb_get_string_simple(udev,dev->descriptor.iManufacturer,string,sizeof(string));
if(ret > 0) {
printf("%s\n",string);
}
usb_close(udev);
}
}
return 0;
}
gibt nichts aus.
ausgabe von lsusb:

Bus 004 Device 001: ID 0000:0000
Bus 003 Device 002: ID 1292:0400 Innomedia
Bus 003 Device 001: ID 0000:0000
Bus 002 Device 002: ID 045e:0040 Microsoft Corp. Wheel Mouse Optical
Bus 002 Device 001: ID 0000:0000
Bus 001 Device 001: ID 0000:0000

was mache ich falsch?
edit: als root funktioniert es...

Dragoran
31-12-2004, 11:19
ein anderes problem habe ich auch:

#include <usb.h>
#include <stdlib.h>
#include <stdlib.h>
struct usb_bus *busses;
struct usb_bus *bus;
struct usb_device *dev;
int main()
{
char string[256];
usb_dev_handle *udev;
int ret;
usb_init();
usb_find_busses();
usb_find_devices();
busses=usb_get_busses();
for(bus=busses;bus;bus=bus->next) {
for(dev=bus->devices;dev;dev=dev->next) {
udev=usb_open(dev);
if(dev->descriptor.idVendor==0x1292) {
puts(bus->dirname);
puts(dev->filename);
/*usb_set_altinterface(udev, 0); */
usb_claim_interface(udev, 0);
printf("%s\n",usb_strerror());
}
usb_close(udev);
}
}
return 0;
}
bekomme die meldung:
could not claim interface 0: Device or resource busy
wie kann ich herausfinden welcher prozess das gerät verwendet?

Tuxist
09-01-2005, 22:25
das gerät ist vielleicht schon belegt von einer ressource.
Device or resource busy

knallerbse
18-01-2006, 01:11
hi.
versuchs mal zuerst mit:
int usb_detach_kernel_driver_np(usb_dev_handle *dev, int interface);
dann kannst du
int usb_claim_interface(usb_dev_handle *dev, int interface);
ausfuehren.