Python USB通讯 PC端实现

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

是个大工程 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值