- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有带 LED 的 USB 大容量存储
我正在尝试打开和关闭 LED
使用USB数据包嗅探工具USBlyzer,
我可以获得原始数据
55 53 42 43 58 66 93 88 00 00 00 00 00 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
其请求信息为批量或中断传输且 I/O 已出
以及 USB 属性部分
我可以获得诸如此类的信息
端点描述符 81 1 输入,批量,512 字节
bDescriptorType 05h Endpoint
bEndpointAddress 81h 1 In
端点描述符 02 2 输入,批量,512 字节
bDescriptorType 05h Endpoint
bEndpointAddress 02h 2 Out
我用 python 2.7、libusb-win32-bin-1.2.4.0、pyusb-1.0.0-a1 编写了 python 代码
完整源码在这里
import usb.core
import usb.util
# find our device
dev = usb.core.find(idVendor=0x1516, idProduct=0x8628)
# was it found?
if dev is None:
raise ValueError('Device not found')
dev.set_configuration()
# get an endpoint instance
cfg = dev.get_active_configuration()
interface_number = cfg[0].bInterfaceNumber
alternate_setting = usb.control.get_interface(interface_number)
intf = usb.util.find_descriptor(cfg, bInterfaceNumber = \
ineterface_number, bAlternateSetting = alternate_setting)
ep = usb.util.find_descriptor(intf,custom_match = \
lambda e: \
usb.util.endpoint_direction(e.bEndpointAddress) == \
usb.util.ENDPOINT_OUT)
# set the active configuration. With no arguments, the first
# configuration will be the active one
assert ep is not None
ep.write(0x2,0x55)
ep.write(0x2,0x53)
ep.write(0x2,0x42)
ep.write(0x2,0x43)
ep.write(0x2,0x58)
ep.write(0x2,0x66)
ep.write(0x2,0x93)
ep.write(0x2,0x88)
ep.write(0x2,0x00)
ep.write(0x2,0x00)
ep.write(0x2,0x00)
ep.write(0x2,0x00)
ep.write(0x2,0x00)
ep.write(0x2,0x00)
ep.write(0x2,0x00)
ep.write(0x2,0x06)
ep.write(0x2,0x00)
ep.write(0x2,0x00)
ep.write(0x2,0x00)
ep.write(0x2,0x00)
ep.write(0x2,0x00)
ep.write(0x2,0x00)
ep.write(0x2,0x00)
ep.write(0x2,0x00)
ep.write(0x2,0x00)
ep.write(0x2,0x00)
ep.write(0x2,0x00)
ep.write(0x2,0x00)
ep.write(0x2,0x00)
ep.write(0x2,0x00)
ep.write(0x2,0x00)
ep.write(0x2,0x00)
但是当我尝试执行它时,
Traceback (most recent call last):
File "C:\Documents and Settings\kty1104\Desktop\usb2.py", line 14, in <module>
interface_number = cfg[0].bInterfaceNumber
File "C:\Python27\lib\site-packages\usb\core.py", line 447, in __getitem__
return Interface(self.device, index[0], index[1], self.index)
TypeError: 'int' object is not subscriptable
出现
我的代码有什么问题吗?
如果有任何错误的概念,请告诉我
谢谢!
最佳答案
我对 pyusb 一无所知,但我对错误消息的解释是,与其他人的观点相反,cfg
不是整数,但它需要非整数索引。我这样说是因为异常是在 __getitem__
中抛出的。函数,只能是 cfg
的__getitem__
,因为这是唯一一个 __getitem__
的地方将在该行中进行调用
interface_number = cfg[0].bInterfaceNumber
现在如果cfg
是一个 int,它不会有 __getitem__
。问题是cfg
的__getitem__
似乎期望能够下标 index
正如中间两个参数所示,它接收 index[0], index[1]
。自从你通过cfg
一个整数,这是不可能的。
来自 tutorial :
You can also use the subscript operator to access the descriptors randomly, like that:
>>> # access the second configuration
>>> cfg = dev[1]
>>> # access the first interface
>>> intf = cfg[(0,0)]
>>> # third endpoint
>>> ep = intf[2]
As you can see, the index is zero based. But wait! There is something weird in the way I access an interface... Yes, you are right, the subscript operator in the Configuration accepts a sequence of two items, with the first one being the index of the Interface and the second one, the alternate setting. So, to access the first interface, but its second alternate setting, we write cfg[(0,1)].
关于python - 点亮大容量存储器的 LED,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6216505/
假设我有一个 View ,它可以生成 model.fetch() 然后向服务器发出请求。 我想实现: 1) 能够记住结果的检查器 2) 仅当对服务器的最后一次请求早于十分钟时才刷新结果(向服务器发出请
Closed. This question needs to be more focused。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅关注editing this post一个问题。 6
我想将数据从闪存复制到 RAM。 那么如何在 DMA Controller 中设置 RAM 的目标内存地址,以便它可以使用其 channel 将数据从源地址(在闪存中)复制到 RAM 内存。 我是在
我有以下代码行,它将字符串 TesT 存储在 8051 微 Controller 的代码存储器中。 char code *text_to_compare = "TesT"; 如何在 IDATA 内存
我在 Raspberry Pi Pico 上使用 Circuit Python 为我提供键盘快捷键的硬件按钮。我使用的是 Circuit Python 而不是 MicroPython,因为它具有 US
我是一名优秀的程序员,十分优秀!