[数据传输]

STM32F103 USB虚拟串口在WIN7下超级慢

[复制链接]
2468|10
手机看帖
扫描二维码
随时随地手机跟帖
hh312|  楼主 | 2017-3-14 15:26 | 显示全部楼层 |阅读模式
自己做的STM32F103 USB虚拟串口,使用的是官方的驱动,固件部分的USB代码也全是官方的,上位机是自己用C语言写的,调用COM端口,和USB没有关系,固件也不接收串口设置信息,即是说,上位机无论如何设置串口波特率,固件都不会理睬,都是固定为250k波特率。现在问题是,完全一样的代码,放到WIN8、WIN10上运行完全正常,放到WIN7上就慢得要命,从电脑发送200k字节给STM32需要3分钟左右,而在win8上10多秒就搞定了,就算用微软官方提供的win7虚拟机也一样慢,上网找了很久也没找到解决办法,WIN7 和 WIN8 在对待USB问题上,是否有什么特殊之处?

相关帖子

hh312|  楼主 | 2017-3-22 16:58 | 显示全部楼层
自己解决了,折腾了一阵子,发现win7 和 win10 确实差别很大,问题就在于虚拟串口通讯 writeFile 这个函数,原来是一个字节调用一次函数,在win10下没感觉什么问题,在win7下就慢得离谱,从2005到2017所有VC运行时,32位和64位全试过了,都没能提速,这么大的差距,真不懂系统是怎么搞出来的。而且,还发现,比如在win10下面,拔掉USB设备后,串口就自动释放了,但是win8是不行的,还得加一句代码去释放。win7估计也不行。所以说,win10还是进步了很多

使用特权

评论回复
SoldierJazz| | 2017-5-3 11:02 | 显示全部楼层
被你描述的WIN7就像无法使用了一样。。。

使用特权

评论回复
woshizhengjie89| | 2017-5-4 09:32 | 显示全部楼层
上位机还用C写? 很累的,怎么也得C++呀, 再者C#写上位机很方便啊,而且这两者估计就不会有你这种情况了

使用特权

评论回复
宇容创行| | 2017-5-4 10:52 | 显示全部楼层
win7是正常的,每次写1字节发1个帧,占用10ms,要提速要写多点啊

使用特权

评论回复
hh312|  楼主 | 2017-5-22 01:35 | 显示全部楼层
宇容创行 发表于 2017-5-4 10:52
win7是正常的,每次写1字节发1个帧,占用10ms,要提速要写多点啊

原来用的代码是TI的官方例程,估计他们图方便,也不知用的什么系统,一个字节就调用一次WriteFile函数,代码倒是很容易写,就是没想到放到win7上有这样的问题。只要改一下,几十个字节调用一次函数就可以了。

使用特权

评论回复
hh312|  楼主 | 2017-5-22 01:39 | 显示全部楼层
woshizhengjie89 发表于 2017-5-4 09:32
上位机还用C写? 很累的,怎么也得C++呀, 再者C#写上位机很方便啊,而且这两者估计就不会有你这种情况了 ...

不见得吧。C#如果也是一个字节调用一次发送函数,估计也没什么好结果。

使用特权

评论回复
woshizhengjie89| | 2017-5-23 20:47 | 显示全部楼层
hh312 发表于 2017-5-22 01:39
不见得吧。C#如果也是一个字节调用一次发送函数,估计也没什么好结果。

可是你也要想想啊,串口调式工具都是怎么做出来的!   有开源的看看他们的代码

使用特权

评论回复
bamianhu| | 2017-7-2 21:29 | 显示全部楼层
大哥,我也遇到了这个问题  请教我一下  应该怎么做?

使用特权

评论回复
bamianhu| | 2017-7-2 21:29 | 显示全部楼层
我的qq:2205140725,请联系我,感激不尽

使用特权

评论回复
bamianhu| | 2017-7-3 14:47 | 显示全部楼层
搞定了  一下子发送10000字节 我都不知道这波特率有什么用了?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

42

帖子

1

粉丝