VB6用定时器查询的方式实现与USB设备通讯慢,如何解决?

2019-12-20 21:45发布

借鉴了别人的VB程序,调用了API来实现与下位机USB通讯(STM32F103)。
我现在是用VB中tmr定时器,以1ms的速度(VB6定时间最小1ms)去查询USB设备,但是调试到一条指令下发至返回有64ms!!!!!!一直找不到哪里花去了这么多时间。


注:USB设备是STM32F103,以PLL/1.5的速度来描述USB速度,可以说肯定可以保证VB6中1ms的速度。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
24条回答
nongxiaoming
1楼-- · 2019-12-22 06:43
bbs2009 发表于 2012-8-18 11:04
貌似 :
VB  有高精度 定时器 可用, 比普通的VB 定时器 会好的多。
但USB  速度 上不去 最重要的是 协议问 ...

我哭……经验不足没有罪过,这是64B/ms与12M/s的较量……

刚刚在某手册上看到STM32如果用HID方式的,是用1ms的中断去询查USB的传输状态,而HID是64Byte,所以理论上最快的速度也就64Byte/ms,对吗?

不过就算是64Byte/ms,我也认了,但现在我的状态是:上64Byte+下64Byte=64ms,只想不通这64ms哪来的,所以只能归因于VB上的定时器(我设的是1ms),按回贴说的,VB定时器精度不高。

真的是这样吗?我该怎么办好呢?换VB不大现实……有没有办法让VB定时器的速度更快一点,或者不用定时器,用其它方法?

救急如救火……
zxq6
2楼-- · 2019-12-22 10:06
twitter 发表于 2012-8-18 11:11
vb6的定时器实际能跑的最小间隔取决于CPU性能、系统性能,差的机子最低实际只能跑到90ms,强些的能到60ms, ...

我这可如何是好呀……选择了它(VB),关键时刻要换,会被老板K死的,时间,精力……唉

难道VB就不能做1ms一次的查询吗?哪怕是不用定时器,能保证1ms轮询一次任务就可以了……
nongxiaoming
3楼-- · 2019-12-22 11:18
如果确实要用VB,那只能考虑死循环了。这种情况下界面不响应,不过可以通过插入doevents来响应界面输入。
worksnfkpynn99
4楼-- · 2019-12-22 11:45
 精彩回答 2  元偷偷看……
worksnfkpynn99
5楼-- · 2019-12-22 17:06
直接转VB.NET吧,用的是VB的语法,但可以完美支持C#大部分特性。
zxq6
6楼-- · 2019-12-22 18:07
pcwhy 发表于 2012-8-18 18:03
直接转VB.NET吧,用的是VB的语法,但可以完美支持C#大部分特性。

1ms的实时要求拿.NET来做就更为难楼主了,应用层到内核层的消耗加上托管到非托管的转换,1ms精度的难度更高了,要是用户拿了台性能不怎么的机子,就更惨了。

一周热门 更多>