我需要能够向USB设备发送一小段字节,但是不知道如何。
我知道供应商和产品的ID,以及消息字符串(但是我需要确定它是ASCII字符串还是十六进制字符串的帮助)。
有一个叫做usb_modeswitch的软件似乎可以做到这一点,但是它仅适用于linux。
我见过一个线程,那里有人用mingw编译它,但是没有提供二进制文件,我自己也不愿意尝试。
有人提到使用WinUSB,鉴于其固有的内含性,它是理想的选择,但我不知道该接口。
我确实有/可以得到Visual Studio,但是我需要帮助,以便从网上看到的东西中找出要使用的东西。
一个很好的选择似乎是PyUSB用的libusb-win32的(什么usb_modeswitch使用一个端口)。
可以像这样用它代替写而不是读来使用,但是我仍然需要知道是只发送一个字符串还是尝试从十六进制表示形式转换为字节,然后再调用write()
。
这是信息:
DefaultVendor=046d
DefaultProduct=c261
MessageEndpoint=01
ResponseEndpoint=01
TargetClass=0x03
MessageContent="0f00010142"
上下文
如果有帮助。
我的Logitech G920一直在运转,它拒绝被识别为机器上的设备。
无需卸载驱动程序,尝试其他USB插槽,插入未通电的电源,删除LGS即可。但奇怪的是,它仍然可以在我的笔记本电脑和xbox本身上运行。
当我遇到此线程时,我处于放弃并重新格式化机器的边缘:
果然:
那就是我找到这篇文章的地方。一些聪明的人已经在Linux上为自己解决了这个问题,使用制造出来的软件要求那些USB调制解调器在其驱动程序安装闪存驱动器模式和互联网给调制解调器模式之间切换。
上面的信息来自那里,我不知道的重要性'%b/%k'
,我希望这不是特定于usb_modeswitch的事情。
现在,我只需要在Windows中运行它即可。
谢谢你的帮助。
是的!
我最终使用了pyusb,并且由于方向盘是HID设备,因此您需要使用Zadig(这libusb-win32
是唯一起作用的设备)覆盖驱动程序。在还获取了libusb-win32和libusb1.0动态链接库供python使用(我不知道是哪个,我正在尝试很多事情)之后,这是起作用的代码:
import usb.core
import usb.util
import usb.backend.libusb1
import sys
VENDOR_ID = 0x046D
PRODUCT_ID = 0xC261
BACKEND = usb.backend.libusb1.get_backend(find_library=lambda x: "libusb-1.0.dll")
dev = usb.core.find(idVendor=VENDOR_ID, idProduct=PRODUCT_ID, backend=BACKEND)
if dev is None:
raise ValueError('Device not found')
dev.write(1, '0f00010142'.decode("hex"))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句