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
[email protected]
https://lists.sourceforge.net/lists/listinfo/pyusb-users