I have a Happ Fighting UGCI unit connected to my Linux machine. I'm using PyUSB 1.0 and attempting to interact with the Happ. I can read the events from the joystick and the buttons all day long. However, when I attempt to write to the device, on either of the two endpoints, the write()s timeout.
Any experience or examples using this device? What are the reasons why a write() will timeout? My script appears as follows: ------------------------------------------------------------------- import sys import usb.core VENDOR_ID= 0x078b PRODUCT_ID = 0x0030 print "Looking for Happ device" device = usb.core.find(idVendor=VENDOR_ID, idProduct=PRODUCT_ID) if device is None: sys.exit("Could not find Happ device") print "Checking for active kernel driver" if device.is_kernel_driver_active(0): try: print "Detaching kernel driver" device.detach_kernel_driver(0) device.detach_kernel_driver(1) except usb.core.USBError as e: sys.exit("Could not detach kernel driver: %s" % str(e)) try: print "Setting configuration" device.set_configuration() except usb.core.USBError as e: sys.exit("Could not set configuration: %s" % str(e)) configurations = [] interfaces = [] endpoints = [] for configuration in device: configurations.append(configuration) for interface in configuration: interfaces.append(interface) for endpoint in interface: endpoints.append(endpoint) print "Configurations:", len(configurations) print "Interfaces:", len(interfaces) print "Endpoints:", len(endpoints) print "Reading data from Happ device, endpoint %d, size %d" % ( endpoints[0].bEndpointAddress, endpoints[0].wMaxPacketSize) on = True onSequence = '\x08\x7F\x7F' offSequence = '\08\x00\x00' while True: try: print "Reading" data = device.read( endpoints[0].bEndpointAddress, endpoints[0].wMaxPacketSize, timeout = 0) except usb.core.USBError as e: if e.args == ('Operation timed out',): print "Timed out" if len(data) > 0: for i in data: print i, ',', print ' ' try: if on: on = False device.write( endpoints[0].bEndpointAddress, onSequence, interfaces[0]) else: on = True device.write( endpoints[0].bEndpointAddress, offSequence, interfaces[0] ) except usb.core.USBError as e: print "Failed to light switch" print str(e) -- Bill dum ni vivas, ni vivu! ------------------------------------------------------------------------------ Ridiculously easy VDI. With Citrix VDI-in-a-Box, you don't need a complex infrastructure or vast IT resources to deliver seamless, secure access to virtual desktops. With this all-in-one solution, easily deploy virtual desktops for less than the cost of PCs and save 60% on VDI infrastructure costs. Try it free! http://p.sf.net/sfu/Citrix-VDIinabox _______________________________________________ pyusb-users mailing list pyusb-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/pyusb-users