如何使用 pyusb 控制 Xbox 360 游戏手柄上的 LED

Posted

技术标签:

【中文标题】如何使用 pyusb 控制 Xbox 360 游戏手柄上的 LED【英文标题】:How to control the LED on an xbox 360 gamepad using pyusb 【发布时间】:2016-07-20 01:32:53 【问题描述】:

我希望使用 pyusb 与有线 xbox 360 游戏手柄进行交互。到目前为止,我可以很好地阅读,但我也想写,这样我就可以让 LED 停止闪烁。

看着here,我应该可以做到,但无论我尝试发送什么消息,我都无法控制 LED。以下是我到目前为止的代码,有什么建议吗?

import usb
dev = usb.core.find(idVendor=1118, idProduct=654)
dev.set_configuration()
readEP = dev[0][(0,0)][0] #endpoint to read from
writeEP = dev[0][(0,0)][1] #endpoint to write to

print readEP #should be: <ENDPOINT 0x81: Interrupt IN>
print writeEP #should be: <ENDPOINT 0x1: Interrupt OUT>

##read the startup messages
for i in range(4): #usually only 4 messages
  data = dev.read(readEP.bEndpointAddress,readEP.wMaxPacketSize,100)
  print len(data) #should be 3

##get initial button/axes state
data = dev.read(readEP.bEndpointAddress,readEP.wMaxPacketSize,100)
print len(data) #should be 20

##Try to set the LED to illuminate just one element (message 0x06).
##Each of the following commented-out attempts fails to leave only the first
##element illuminated and subsequent attempts at reading or writing yields
##"usb.core.USBError: [Errno 5] Input/Output Error"
dev.write(writeEP,'010306',100) 
# dev.write(writeEP,'0\x010306',100) 
# dev.write(writeEP,'66310',100) #decimal value of 0x010306

##attempt to read again
while True:
  data = dev.read(readEP.bEndpointAddress,readEP.wMaxPacketSize,100)

【问题讨论】:

【参考方案1】:

解决了;只需要尝试正在编写的字符串的更多变体。以下是最终奏效的方法:

dev.write(writeEP,"\x01\x03\x06",0)

【讨论】:

以上是关于如何使用 pyusb 控制 Xbox 360 游戏手柄上的 LED的主要内容,如果未能解决你的问题,请参考以下文章

xbox360 自制的系统,如何更新官方界面的游戏封面

xbox360游戏安装问题

XBOX360无线手柄/有线手柄如何连接PC玩游戏?

xbox360怎么更新游戏封面

xbox360自制系统怎么更新游戏封面

xbox360手柄驱动win10怎么设置手柄