28 Jun 2012 16:43
Timeout Error with libUSB Win 32
Atton_666 <flavien_33 <at> hotmail.fr>
2012-06-28 14:43:24 GMT
2012-06-28 14:43:24 GMT
Hi everybody,
I develop an application on Windows 7 64bits with Qt Creator. I use libusb
win 32 in order to communicate with a STM32 µc. I can find my device after
install a driver with inf-wizard. I can open connection with this device but
i can't use bulk_read/write.
Here is a part of my code:
#define VENDOR 0x0483
#define PRODUCT 0x3748
#define EP_IN 0x81
#define EP_OUT 0x02
#define BUF_SIZE 64
m_testUSB->clear(); //Effacement du texte précédent.
int ret;
char buffer[BUF_SIZE]; //Définition de la taille du Buffer permettant
l'échange d'instructions
//entre le périphérique USB et le PC
struct usb_bus *busses = new usb_bus(); // Création de la structure
busses permettant d'obtenir des informations sur les bus du PC
usb_init(); // Initialisation de la librairie. Cette fonction doit être
appelée avant tout autre fonction de libUSB
m_testUSB->append("le nombre de bus = " +
QString().setNum(usb_find_busses())); //Récupération du nombre de bus depuis
le dernier appel à cette fonction
m_testUSB->append("le nombre d'appareil = " +
QString().setNum(usb_find_devices())); //Récupération du nombre de
périphérique (Branché/Débranché) depuis le dernier appel à cette fonction
busses = usb_get_busses(); //récupération de la liste des bus usb
// Parcours tous les bus
for (struct usb_bus *bus = busses; bus; bus = bus->next)
{
int k = 0; //Compteur d'appareil attendu
// Parcours tous les appareils afin d'identifier l'appareil concerné
for (struct usb_device *dev = bus->devices; dev; dev = dev->next)
{
// Teste si le périférique détecté est bien celui qui possède les
PID VID indiqués par PRODUCT et VENDOR
if( (dev->descriptor.idVendor == VENDOR) &&
(dev->descriptor.idProduct == PRODUCT) )
{
k++;
m_testUSB->append("CLE DETECTEE");
// Ouverture de l'appareil
struct usb_dev_handle *devHandle ;
devHandle = usb_open(dev);
if (dev == NULL)
{
m_testUSB->append("Erreur a l'ouverture.");
}
else
{
// Set la configuration active
if(usb_set_configuration(devHandle, 1)>=0)
{
m_testUSB->append("Configuration 1 réussie");
}
else
{
m_testUSB->append("Configuration 1 ratée");
usb_close(devHandle);
}
//Demande d'interface avec le périphérique
if(usb_claim_interface(devHandle, 0)>=0)
{
m_testUSB->append("Demande d'une interface et
process");
}
else
{
m_testUSB->append("Impossible d'ouvrir l'interface");
}
if(usb_set_altinterface(devHandle,0)==0)
{
m_testUSB->append("Config interface OK");
}
else
{
m_testUSB->append("Config interface Ratée");
}
//Initialise les configurations des endpoints
if(usb_clear_halt(devHandle, EP_OUT)>=0)
{
m_testUSB->append("usb clear halt ep out OK");
}
if(usb_clear_halt(devHandle, EP_IN)>=0)
{
m_testUSB->append("usb clear halt ep in OK");
}
buffer[0]=0x00;
//Ecriture sur le périphérique
ret = usb_bulk_write(devHandle, EP_OUT, buffer,
sizeof(buffer), 500);
if(ret)
{
m_testUSB->append("usb_interrupt_write OK");
}
if( (ret = usb_bulk_write( devHandle, EP_OUT, buffer,
sizeof(buffer), 500 )) < 0 )
{
m_testUSB->append( QString( "usb_interrupt_write KO :
%1" ).arg( usb_strerror() ) );
}
else
{
m_testUSB->append( QString( "usb_interrupt_write OK :
%1 écrits" ).arg( ret ) );
}
// if(ret>0)
// {
//
m_testUSB->append("usb_interrupt_write test OK");
// m_testUSB->append("Emis : " );
// m_testUSB->append(buffer);
// }
// else
// {
// m_testUSB->append("Erreur
écriture: ");
//
m_testUSB->append(usb_strerror());
// }
// Fermeture de l'appareil
usb_close(devHandle);
}
}
}
if(k==0) // Si le périphérique voulu n'est pas détecté on affiche
le message ci-dessous
m_testUSB->append("LA CLE N'EST PAS DETECTEE");
Here is my libusb test's result:
DLL version: 1.2.6.0
Driver version: 1.2.6.0
bus/device idVendor/idProduct
bus-0/\\.\libusb0-0001--0x0483-0x3748 0483/3748
- Manufacturer : STMicroelectronics
- Product : STM32 STLink
- Serial Number: VÿjIpST(%‡
bLength: 18
bDescriptorType: 01h
bcdUSB: 0200h
bDeviceClass: 00h
bDeviceSubClass: 00h
bDeviceProtocol: 00h
bMaxPacketSize0: 40h
idVendor: 0483h
idProduct: 3748h
bcdDevice: 0100h
iManufacturer: 1
iProduct: 2
iSerialNumber: 3
bNumConfigurations: 1
wTotalLength: 39
bNumInterfaces: 1
bConfigurationValue: 1
iConfiguration: 0
bmAttributes: 80h
MaxPower: 50
bInterfaceNumber: 0
bAlternateSetting: 0
bNumEndpoints: 3
bInterfaceClass: 255
bInterfaceSubClass: 255
bInterfaceProtocol: 255
iInterface: 4
bEndpointAddress: 81h
bmAttributes: 02h
wMaxPacketSize: 64
bInterval: 0
bRefresh: 0
bSynchAddress: 0
bEndpointAddress: 02h
bmAttributes: 02h
wMaxPacketSize: 64
bInterval: 0
bRefresh: 0
bSynchAddress: 0
bEndpointAddress: 83h
bmAttributes: 02h
wMaxPacketSize: 64
bInterval: 0
bRefresh: 0
bSynchAddress: 0
Here application's messages:
le nombre de bus = 0
le nombre d'appareil = 0
CLE DETECTEE
Configuration 1 réussie
Demande d'une interface et process
Config interface OK
usb_interrupt_write OK
usb_interrupt_write KO : libusb0-dll:err [_usb_reap_async] timeout error
And to finish reports of out application:
libusb0-dll:[os_init] dll version: 1.2.6.0
libusb0-dll:[os_init] driver version: 1.2.6.0
libusb0-dll:[os_find_busses] found bus-0
libusb0-dll:[os_find_devices] found \\.\libusb0-0001--0x0483-0x3748 on bus-0
libusb0-dll:err [_usb_reap_async] reaping request failed, win error: Un
périphérique attaché au système ne fonctionne pas correctement.
libusb0-dll:err [_usb_reap_async] timeout error
I hope that someone is able to fix my problem ;)
Best Regards.
--
View this message in context: http://libusb.6.n5.nabble.com/Timeout-Error-with-libUSB-Win-32-tp5710113.html
Sent from the LibUSB Dev - Win32 mailing list archive at Nabble.com.
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Libusb-win32-devel mailing list
Libusb-win32-devel <at> lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libusb-win32-devel
RSS Feed