首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PyUSB如何指定端点的类型和缓冲区大小

PyUSB如何指定端点的类型和缓冲区大小
EN

Stack Overflow用户
提问于 2018-06-05 17:10:54
回答 1查看 1.9K关注 0票数 0

通过USB发送数据有四种不同的方式:控制、中断、批量和等时。参考文献1来自“参考文献1”一书第330页:

..。大容量端点传输大量数据。这些端点通常要大得多(它们可以同时容纳更多字符),从而中断端点。..。

当我得到端点输入时,我使用以下命令。

代码语言:javascript
运行
复制
import usb.core
import usb.util
dev = usb.core.find(idVendor=0x0683, idProduct=0x4108)

if dev is None:
    raise ValueError('Device not found')

dev.reset()
dev.set_configuration()
cfg = dev.get_active_configuration()
intf = cfg[(0,0)]    

epi = usb.util.find_descriptor(
                              intf,
                              # match the first IN endpoint
                              custom_match = \
                              lambda e: \
                              usb.util.endpoint_direction(e.bEndpointAddress) ==\
                              usb.util.ENDPOINT_IN)

我试着添加,但是它给了我一个我还不完全理解的系统错误:

代码语言:javascript
运行
复制
usb.util.endpoint_type()== \
                              usb.util.ENDPOINT_TYPE_BULK

这是关于如何使用USB 链接1的另一个非常好的源代码。

似乎usb端点有可以在python中指定的参数。

其中bEndpointAddress指示该描述符所描述的端点。

bmAttributes指定传输类型。这可以是“控制”、“中断”、“等时”或“批量传输”。如果指定了同步端点,则可以选择其他属性,例如同步和使用类型。

wMaxPacketSize指示此端点的最大有效负载大小。

bInterval用于指定某些传输的轮询间隔。这些单元以帧表示,因此,这相当于低速/全速设备的1ms和高速设备的125 1ms。

我试过:

代码语言:javascript
运行
复制
epi.wMaxPacketSize = 72000000 #to make the buffer large
epi.bmAttributes = 3 # 3 = 10 in binary. to change the mode to bulk

我的问题是:

我应该在哪里指定我在Windows和(或) Linux中使用的端点类型,以及如何做到这一点?以及如何更改每个端点上的缓冲区大小?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-19 20:39:26

试试这个:

代码语言:javascript
运行
复制
epi = usb.util.find_descriptor(intf,
                               custom_match = \
                                 lambda e: \
                                   usb.util.endpoint_direction(e.bEndpointAddress) == \
                                   usb.util.ENDPOINT_IN \
                                   and \
                                   usb.util.endpoint_type(e.bmAttributes) == \
                                   usb.util.ENDPOINT_TYPE_BULK )

但你误解了关于参数的部分。bmAttributes和wMaxPacketSize是由USB硬件指定的,而不是由wMaxPacketSize更改的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50705529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档