【项目笔记_RP552D】pywinusb 收发数据性能优化

问题描述

之前在做USB的项目的是一直有个问题没有解决,就是发现python版本的SDK 性能远远不及C++版本的SDK,在批量发送数据的测试中
效果如下:

[2294484] ====> 这个是STM32的日志,中括号为当前的ms数
// 之前的 python 版本的代码,发送数据的间隔最少需要2ms, 而USB设备的描述中中断传输的效果是1ms
[2294484] D/usb: usb echo: e_id:80 ret:0
[2294487] D/usb: usb echo: e_id:81 ret:0
[2294490] D/usb: usb echo: e_id:82 ret:0
[2294492] D/usb: usb echo: e_id:83 ret:0
[2294494] D/usb: usb echo: e_id:84 ret:0
[2294498] D/usb: usb echo: e_id:85 ret:0
[2294502] D/usb: usb echo: e_id:86 ret:0
[2294506] D/usb: usb echo: e_id:87 ret:0
[2294512] D/usb: usb echo: e_id:88 ret:0
[2294516] D/usb: usb echo: e_id:89 ret:0
[2294518] D/usb: usb echo: e_id:90 ret:0
[2294520] D/usb: usb echo: e_id:91 ret:0
// C++ 版本的SDK,所有的数据间隔是1ms,这个完全能发挥出设备的性能
[2763383] D/usb: usb echo: e_id:1 ret:0
[2763384] D/usb: usb echo: e_id:1 ret:0
[2763385] D/usb: usb echo: e_id:1 ret:0
[2763386] D/usb: usb echo: e_id:1 ret:0
[2763387] D/usb: usb echo: e_id:1 ret:0
[2763388] D/usb: usb echo: e_id:1 ret:0
[2763389] D/usb: usb echo: e_id:1 ret:0
[2763390] D/usb: usb echo: e_id:1 ret:0
[2763391] D/usb: usb echo: e_id:1 ret:0
[2763392] D/usb: usb echo: e_id:1 ret:0
[2763393] D/usb: usb echo: e_id:1 ret:0
[2763395] D/usb: usb echo: e_id:1 ret:0
[2763395] D/usb: usb echo: e_id:1 ret:0
[2763396] D/usb: usb echo: e_id:1 ret:0
[2763397] D/usb: usb echo: e_id:1 ret:0
[2763398] D/usb: usb echo: e_id:1 ret:0
[2763399] D/usb: usb echo: e_id:1 ret:

之前一直是以为这个是由于 python 性能不及C++导致的,后来发现这个是收发数据线程的设计不合理导致的,修改如下
在这里插入图片描述
使用消息队列的阻塞机制,防止线程一直空转,易提升性能,再次测试发现:

[3368212] D/usb: usb echo: e_id:123 ret:0
[3368215] D/usb: usb echo: e_id:124 ret:0
[3368216] D/usb: usb echo: e_id:125 ret:0
[3368217] D/usb: usb echo: e_id:126 ret:0
[3368218] D/usb: usb echo: e_id:127 ret:0
[3368219] D/usb: usb echo: e_id:128 ret:0
[3368220] D/usb: usb echo: e_id:129 ret:0
[3368221] D/usb: usb echo: e_id:130 ret:0
[3368222] D/usb: usb echo: e_id:131 ret:0
[3368223] D/usb: usb echo: e_id:132 ret:0
[3368224] D/usb: usb echo: e_id:133 ret:0
[3368225] D/usb: usb echo: e_id:134 ret:0
[3368226] D/usb: usb echo: e_id:135 ret:0
[3368227] D/usb: usb ech
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值