From: Greg H. <dr....@gm...> - 2017-03-06 21:33:49
|
Dear ladies and gents, evening. I have had partial success in interfacing an 8-bit microcontroller with a PC running windows 10,Python and PyUsb. I am a firmware specialist, i.e. not particularly proficient in Python, I am new to PyUSB. The problem is that my python program fails periodically with the following error. raise USBError(errmsg, ret) usb.core.USBError: [Errno None] b'libusb0-dll:err [_usb_reap_async] reaping request failed, win error: The I/O operation has been aborted because of either a thread exit or an application request.\r\n\n' Is this error known? If so is there a "fix" and "What is it?" Any assistance would be gratefully received, as this is an annoying problem that I desperately need help to fix. Many thanks Greg PS Code and output presented below. #!/usr/bin/python import usb.core import usb.util import time # find our device dev = usb.core.find(idVendor=0x04d8, idProduct=0x01a5) # was it found? if dev is None: raise ValueError('Device not found %s') print (dev) dev.set_configuration() cfg=dev[0] intf=cfg[(0,0)] ep=intf[0] #print("print ep") #print(ep) #print("print cfg") #print(cfg) #print("print intf") #print(intf) out_ep_address = ep.bEndpointAddress print ("ep.bEndpointAddress = %s" %out_ep_address) #print(out_ep_address) while True: dev.write(0x01, [0x81, 0x08, 0x08,0x03,0x04,0x05,0x06,0x07]) time.sleep(0.1) # Sample (0.1)s == 1ms test = dev.read(0x81, 8) print (test) C:\Users\User\AppData\Local\Programs\Python\Python36-32\python.exe "C:/Users/User/Dropbox (Personal)/PyUSB/PyPIC 1.py" DEVICE ID 04d8:01a5 on Bus 000 Address 001 ================= bLength : 0x12 (18 bytes) bDescriptorType : 0x1 Device bcdUSB : 0x200 USB 2.0 bDeviceClass : 0x0 Specified at interface bDeviceSubClass : 0x0 bDeviceProtocol : 0x0 bMaxPacketSize0 : 0x8 (8 bytes) idVendor : 0x04d8 idProduct : 0x01a5 bcdDevice : 0x1 Device 0.01 iManufacturer : 0x1 DIY Devices iProduct : 0x2 16F1455 Generic HID Device iSerialNumber : 0x0 bNumConfigurations : 0x1 CONFIGURATION 1: 100 mA ================================== bLength : 0x9 (9 bytes) bDescriptorType : 0x2 Configuration wTotalLength : 0x29 (41 bytes) bNumInterfaces : 0x1 bConfigurationValue : 0x1 iConfiguration : 0x0 bmAttributes : 0xa0 Bus Powered, Remote Wakeup bMaxPower : 0x32 (100 mA) INTERFACE 0: Human Interface Device ==================== bLength : 0x9 (9 bytes) bDescriptorType : 0x4 Interface bInterfaceNumber : 0x0 bAlternateSetting : 0x0 bNumEndpoints : 0x2 bInterfaceClass : 0x3 Human Interface Device bInterfaceSubClass : 0x0 bInterfaceProtocol : 0x0 iInterface : 0x0 ENDPOINT 0x81: Interrupt IN ========================== bLength : 0x7 (7 bytes) bDescriptorType : 0x5 Endpoint bEndpointAddress : 0x81 IN bmAttributes : 0x3 Interrupt wMaxPacketSize : 0x8 (8 bytes) bInterval : 0x1 ENDPOINT 0x1: Interrupt OUT ========================== bLength : 0x7 (7 bytes) bDescriptorType : 0x5 Endpoint bEndpointAddress : 0x1 OUT bmAttributes : 0x3 Interrupt wMaxPacketSize : 0x8 (8 bytes) bInterval : 0x1 ep.bEndpointAddress = 129 array('B', [128, 0, 1, 1, 5, 6, 7, 8]) array('B', [128, 0, 0, 2, 6, 7, 8, 9]) array('B', [128, 0, 1, 3, 7, 8, 9, 10]) array('B', [128, 0, 0, 4, 8, 9, 10, 11]) array('B', [128, 0, 1, 5, 9, 10, 11, 12]) array('B', [128, 0, 0, 6, 10, 11, 12, 13]) array('B', [128, 0, 1, 7, 11, 12, 13, 14]) array('B', [128, 0, 0, 8, 12, 13, 14, 15]) array('B', [128, 0, 1, 9, 13, 14, 15, 16]) Traceback (most recent call last): File "C:/Users/User/Dropbox (Personal)/PyUSB/PyPIC 1.py", line 48, in <module> test = dev.read(0x81, 8) File "C:\Users\User\AppData\Local\Programs\Python\Python36-32\lib\site-packages\u sb\core.py", line 988, in read self.__get_timeout(timeout)) File "C:\Users\User\AppData\Local\Programs\Python\Python36-32\lib\site-packages\u sb\backend\libusb0.py", line 560, in intr_read timeout) File "C:\Users\User\AppData\Local\Programs\Python\Python36-32\lib\site-packages\u sb\backend\libusb0.py", line 627, in __read timeout File "C:\Users\User\AppData\Local\Programs\Python\Python36-32\lib\site-packages\u sb\backend\libusb0.py", line 431, in _check raise USBError(errmsg, ret) usb.core.USBError: [Errno None] b'libusb0-dll:err [_usb_reap_async] reaping request failed, win error: The I/O operation has been aborted because of either a thread exit or an application request.\r\n\n' Process finished with exit code 1 Regards Greg Dr Greg Horler 07764 191965 |