Sto cercando di usare libusb, ma io sono il seguente messaggio di errore:Messaggio di errore 'interfaccia non reclamati' dal libusb
usbfs: processo di 24665 (myprogram) non rivendicare l'interfaccia 0 prima dell'uso
Non capisco davvero perché, perché per quanto posso dire, lo sto facendo secondo la descrizione trovata nella libreria. Ecco il mio codice:
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <libusb.h>
int main(void)
{
int result;
struct libusb_device_descriptor desc;
libusb_device **list;
libusb_device *my_device = NULL;
result = libusb_init(NULL);
libusb_set_debug(NULL, 3);
ssize_t count = libusb_get_device_list(NULL, &list);
for (int i = 0; i < count; i++) {
libusb_device *device = list[i];
result = libusb_get_device_descriptor(device, &desc);
if((desc.idVendor == 0x03f0) && (desc.idProduct == 0x241d)) {
my_device = device;
break;
}
}
if(my_device != NULL) {
libusb_device_handle *handle;
result = libusb_open(my_device, &handle);
int kernelActive = libusb_kernel_driver_active(handle, 0);
if(kernelActive == 1) {
result = libusb_detach_kernel_driver(handle, 0);
}
result = libusb_claim_interface (handle, 0);
result = libusb_control_transfer(handle,0x21,34,0x0003,0,NULL,0,0);
result = libusb_release_interface (handle, 0);
if(kernelActive == 1) {
result = libusb_attach_kernel_driver(handle, 0);
}
libusb_close(handle);
}
libusb_free_device_list(list, 1);
libusb_exit(NULL);
return EXIT_SUCCESS;
}
Come si può vedere, rivendico l'interfaccia prima del trasferimento. (Ho provato lo stesso codice con altri dispositivi USB, nel caso avessi qualcosa a che fare con esso.)
Sto usando libusb-1.0.9, che è l'ultima versione che ho trovato. Sto facendo funzionare questa cosa su Ubuntu12.04_64 (Precise Pangolin).
Potrebbe essere un problema di autorizzazioni? Hai provato a eseguire il tuo programma con 'sudo'? – gfour
Sì, ho provato sudo. A quanto pare, tutto sembra funzionare bene, quindi presumo che il messaggio sia solo un'informazione mal presentata, piuttosto che un errore o un avvertimento. Mi piacerebbe ancora molto capire perché ho ricevuto il messaggio, però. – Robert
[Dai un'occhiata a questa soluzione] (http://stackoverflow.com/questions/22011760/libusb-claim-interface-access-denied-java/39269489#39269489). Potrebbe essere d'aiuto –