import usb.core
import usb.util
import datetime
import time
# find our device
dev = usb.core.find(idVendor=0x34bf, idProduct=0xff02)
# was it found?
if dev is None:
raise ValueError('Device not found')
# set the active configuration. With no arguments, the first
# configuration will be the active one
dev.set_configuration()
# get an endpoint instance
cfg = dev.get_active_configuration()
intf = cfg[(1,0)]
ep = usb.util.find_descriptor(
intf,
# match the first OUT endpoint
custom_match = \
lambda e: \
usb.util.endpoint_direction(e.bEndpointAddress) == \
usb.util.ENDPOINT_OUT)
#print(ep)
assert ep is not None
# write the data
#ep.write('test')
BUF_SIZE=2048*4
cmd = bytearray([])
for i in range(BUF_SIZE):
cmd.append(i%256)
st = time.time()
now = st
count = 0
#print(st)
while count < 0x400000 :
ep.write(cmd)
count += BUF_SIZE
now = time.time()
print(round(now - st,2))
print("Speed:", round(count/(now - st)/1024, 2), "KB/s", "Cost:", round(now-st, 2))
向虚拟的USB串口设备写入数据工具,PyUSB在Windows下需要安装USB驱动进行适配,按照VID PID查找Endpoint OUT,然后写入4MB的数据,进行测速
要USB通讯,需要搞清楚Description Interface Endpoint USBFilter
是个大工程