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

时间:2018-06-05 17:10:54

标签: python-2.7 usb pyusb

通过USB发送数据有四种不同的方式:Control,Interrupt,Bulk和Isochronous。 book ref 1 从书籍book ref 1第330页开始:

  

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

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

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)

我试图添加,但它给我一个我不完全理解的sytax错误:

usb.util.endpoint_type()== \
                              usb.util.ENDPOINT_TYPE_BULK

enter image description here

这是关于如何使用USB link 1

的另一个非常好的来源

似乎usb端点具有可以在python

中指定的参数

enter image description here

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

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

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

bInterval 用于指定某些传输的轮询间隔。单位以帧表示,因此对于低速/全速设备为1ms,对于高速设备为125us。

我试过了:

epi.wMaxPacketSize = 72000000 #to make the buffer large
epi.bmAttributes = 3 # 3 = 10 in binary. to change the mode to bulk

我的问题是:

我在哪里指定我用于Windows和(或)Linux的端点类型以及如何执行此操作?如何更改每个端点上的缓冲区大小?

1 个答案:

答案 0 :(得分:0)

尝试一下:

main_time_line = p.line(x=(start, stop), y=(0, 0))

g1 = p.square(source=source, x='examination__date', y=0, size=4,
              color='black', name='g1')

hover_tool.renderers.append(g1)

g2 = p.circle(source=source, x='examination__date', y='level', size=15)

for i, (idate, ilevel, iname) in enumerate(zip(source.data['examination__date'],
                                               source.data['level'],
                                               source.data['examination__name'])):
    vert = 'top' if ilevel < 0 else 'bottom'
    horizontal = 'right' if ilevel < 0 else 'left'
    yoff = -10 if ilevel < 0 else 10
    p.line(x=idate, y=(0, ilevel), color='black', line_width=3)
    my_txt = Label(x=idate, 
                   y=ilevel, 
                   text=iname, 
                   text_align=horizontal,
                   text_baseline=vert, 
                   text_font_size='13px', 
                   y_offset=yoff)
    p.add_layout(my_txt)

但是您误解了有关参数的部分。 bmAttributes wMaxPacketSize 由USB硬件指定​​,不能由Python更改。