- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
更新
我成功地发送了数据。对于遇到同样问题的任何人,我使用了以下代码:
data=[0x00, 0x04, 0x04, 0xFF, 0xFF, 0xFF, 0x00, 0x00]
result=dev.ctrl_transfer(0x21, 0x9, wValue=0x200, wIndex=0x00, data_or_wLength=data)
(这是基于此处发布的答案:link)
但是我不是很详细,为什么要用
bmRequestType=0x21
bRequest=0x9
wValue=0x200
这是什么解释?
初始请求:
我正在拼命尝试使用 PyUSB 向 HID 设备发送一个简单的报告。
使用“SimpleHIDwrite”,我确认该设备按预期工作。我想发送此数据:
报告编号:00
数据:[00, 04, 04, FF, FF, FF, 00, 00]
Sending data using SimpleHIDwrite
我是 Python 和 USB 的新手,我不知道如何使用 dev.ctrl_transfer 或 dev.write 来做到这一点。
此外,还有一些关于向 HID 设备发送数据的帖子,但我不知道如何解决我的问题。我该如何解决?
这里有更多的细节:
# Based on https://github.com/walac/pyusb/blob/master/docs/tutorial.rst
import usb.core
import usb.util
# Find our device
# dev = usb.core.find(idVendor=0xfffe, idProduct=0x0001)
dev = usb.core.find(idVendor=0x1781, idProduct=0x8c0)
# Was it found?
if dev is None:
raise ValueError('Device not found')
dev.set_configuration()
cfg = dev[0]
intf = cfg[(0,0)]
ep = intf[0]
# dev.write(ep.bEndpointAddress, [0x00, 0x00,0x04,0x04,0xFF,0xFF,0xFF,0x00, 0x00], 1000)
# dev.ctrl_transfer(bmRequestType, bRequest, wValue=0, wIndex=0, data_or_wLength=None, timeout=None)
print("print ep")
print(ep)
print("print cfg")
print(cfg)
print("print intf")
print(intf)
上面脚本的结果是这样的:
print ep
ENDPOINT 0x81: Interrupt IN ==========================
bLength : 0x7 (7 bytes)
bDescriptorType : 0x5 Endpoint
bEndpointAddress : 0x81 IN
bmAttributes : 0x3 Interrupt
wMaxPacketSize : 0x8 (8 bytes)
bInterval : 0xa
print cfg
CONFIGURATION 1: 100 mA ==================================
bLength : 0x9 (9 bytes)
bDescriptorType : 0x2 Configuration
wTotalLength : 0x22 (34 bytes)
bNumInterfaces : 0x1
bConfigurationValue : 0x1
iConfiguration : 0x0
bmAttributes : 0x80 Bus Powered
bMaxPower : 0x32 (100 mA)
INTERFACE 0: Human Interface Device ====================
bLength : 0x9 (9 bytes)
bDescriptorType : 0x4 Interface
bInterfaceNumber : 0x0
bAlternateSetting : 0x0
bNumEndpoints : 0x1
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 : 0xa
print intf
INTERFACE 0: Human Interface Device ====================
bLength : 0x9 (9 bytes)
bDescriptorType : 0x4 Interface
bInterfaceNumber : 0x0
bAlternateSetting : 0x0
bNumEndpoints : 0x1
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 : 0xa
Process finished with exit code 0
最佳答案
这就是您使用 PyUSB 进行 HID 所需的全部:
def hid_set_report(dev, report):
""" Implements HID SetReport via USB control transfer """
dev.ctrl_transfer(
0x21, # REQUEST_TYPE_CLASS | RECIPIENT_INTERFACE | ENDPOINT_OUT
9, # SET_REPORT
0x200, # "Vendor" Descriptor Type + 0 Descriptor Index
0, # USB interface № 0
report # the HID payload as a byte array -- e.g. from struct.pack()
)
def hid_get_report(dev):
""" Implements HID GetReport via USB control transfer """
return dev.ctrl_transfer(
0xA1, # REQUEST_TYPE_CLASS | RECIPIENT_INTERFACE | ENDPOINT_IN
1, # GET_REPORT
0x200, # "Vendor" Descriptor Type + 0 Descriptor Index
0, # USB interface № 0
64 # max reply size
)
没有必要跳上图书馆包装器周围图书馆的潮流。你是工程师还是什么?就read the documentation .该协议(protocol)不会很快改变。
最后,是的。我见过的所有四个 libusbhid 都是用极其糟糕的 C 编写的,并且依赖于更多的库。对于本质上是 10 行代码的内容。做出自己的决定。
关于python - 使用 PyUSB 发送 HID 报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37943825/
我正在运行 OS X 10.5 并尝试使用以下代码通过 PyUSB 连接到 USB 设备。 import usb.core, time, usb dev = usb.core.find(i
这个问题在这里已经有了答案: Pyusb on windows - no backend available (12 个答案) 关闭 4 年前。 我正在尝试联系并查找哪些 USB 设备与我的计算机相
我希望我的程序在设备被拔掉时退出。我的代码: device = usb.core.find(idVendor, idProduct) device.detach_kernel_driver(0) us
我有一个通过 USB 连接的设备,我正在使用 pyUSB 连接数据。 这是我的代码目前的样子: import usb.core import usb.util def main(): devi
我正在尝试制作一个脚本(在 Linux 上),它可以打开或关闭鼠标中的灯。 这是我目前的代码: import usb.core import usb.util import sys interface
玩转 PyUSB稍微看看它是否提供了一些关于为什么我正在使用的 WebUSB 库找不到我的设备的见解。我安装了libusb1 on the Mac via Homebrew使用 brew instal
我正在尝试将数字锁定发送到充当 HID 键盘的自定义硬件。我已经绑了一个 LED,如果 USB 上收到数字锁定键,它就会发光。它适用于外部键盘的数字锁定按键。但我无法通过 pyusb 手动发送数字锁定
我正在尝试通过 USB 将我的 Raspberry PI 连接到 Pic4550。 (Pic 功能在 windows c# 程序中是可以的!)。所以我安装了rpi 2,pyusb,并尝试在[https
我在 python 中使用 USB 库。我可以看到设备,我可以配置它。但是当我读出它时,我总是得到相同的东西数组('B',[17、96])。请注意,即使我不写入端点输出,我在读取时仍然会得到相同的结果
我有一个树莓派(我使用的是linux)和一个测量某些值的设备。 我有一个 python 服务器,当客户端发送“我想要这些值”命令时,我会向设备询问一些值。这是我的设备的功能: def usbDevic
我正在 Mac OSX 10.10.5 上使用 python hidapi 访问 USB HID 设备: import hid import time hidraw = hid.device(0x1a
我正在尝试使用 python 库 PyUSB 将数据发送到 USB 内存棒。我使用的代码如下: import usb.core import usb.util # find our devices #
我需要使用 USB 条码阅读器(原始数据模式)读取条码数据。我已经知道我可以将阅读器设置为键盘模式,但这不符合我的要求,因为我将同时使用 4 个阅读器并且文本会重叠。 我是 python 的新手,我尝
嘿,我正在尝试运行教程中可用的简单脚本;。 USB 正在导入,但是当我尝试搜索设备时出现以下错误,请帮忙 >>> dev=usb.core.find() Traceback (most recent
我正在尝试在 Ubuntu 中使用 Honeywell USB 3310g 扫描仪从条形码或二维码输出字符串。我有 libusb 和一个名为 metro-usb ( http://gitorious.
我有一个 Netware uniFlow 设备。当我插入它时,它显示在 dmesg 中: [ 2962.369905] usb 2-1.4: new full-speed USB device num
我试过 this link ,但在 shell 上收到以下消息: sudo apt-get install python-pip : vineet@vineet:~$ sudo pip install
我正在使用带有 PyUSB 的 Dymo USB 秤,除了秤在三分钟后自动关机外,一切都非常好。只要我的 python 程序在运行,我就想让它一直运行。有什么办法可以使用 python 做到这一点吗?
我正在用 Python 编写软件,使用 USB 连接的辐射探测器来探测宇宙 μ 子。 我正在尝试使用 PyUSB 模块与设备交互,但 PyUSB 没有找到我的辐射探测器。设备本身有一个串行端口,但我使
我在 Win 7 操作系统上运行 Python 2.7.8。我正在尝试通过 PyUSB 与 USB 设备(Numato 32 channel GPIO 设备)通信。 我从 URL 下载了 walac-
我是一名优秀的程序员,十分优秀!