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

VB6用定时器查询的方式实现与USB设备通讯慢,如何解决?VB codePublic Sub WriteReport()result WriteFile

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

VB code
Public Sub WriteReport()    result = WriteFile(HidDevice, SendBuffer(0), 65, 0, 0)End SubPublic Sub tmrDelay_Timer()    Timeout = True    SetHosMsg.tmrDelay = FalseEnd SubPublic Sub ReadReport()    result = ReadFile(HidDevice, ReadBuffer(0), 65, 0, 0)End SubPublic Sub VBtoUSB()    Call WriteReport   '发送        Timeout = False    SetHosMsg.tmrDelay.Interval = 5    SetHosMsg.tmrDelay.Enabled = True    Do        DoEvents    Loop While Timeout = True        Call ReadReport   '接收End Sub


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

[解决办法]
这个得研究一二。
[解决办法]

是 HID 设备?

不需要都用延时。

如果接收返回错误,可能是下位机来不及应答,此时再延时后重复接收。

另外,我一般是用下面一组 API:

Public Declare Function ConnectToUSBHIDDevice Lib "HS32U2_HID.dll" (ByVal vid As Integer, ByVal pid As Integer, ByVal version As Integer) As Long
Public Declare Sub CloseUSBHIDDevice Lib "HS32U2_HID.dll" (ByVal hDev As Long)

Public Declare Function SetFeatureToUSBHIDDevice Lib "HS32U2_HID.dll" (ByVal hDev As Long, ByRef buff As Byte, ByVal datalength As Long) As Long
Public Declare Function GetFeatureFromUSBHIDDevice Lib "HS32U2_HID.dll" (ByVal hDev As Long, ByRef buff As Byte, ByVal datalength As Long) As Long

Public Declare Function GetFeatureLength Lib "HS32U2_HID.dll" (ByVal hDev As Long) As Long

SetFeature 相当于 WriteReport;GetFeature 相当于 ReadReport。

[解决办法]

是 HID 设备?

不需要都用延时。

如果接收返回错误,可能是下位机来不及应答,此时再延时后重复接收。

另外,我一般是用下面一组 API:

Public Declare Function ConnectToUSBHIDDevice Lib "HS32U2_HID.dll" (ByVal vid As Integer, ByVal pid As Integer, ByVal version As Integer) As Long
Public Declare Sub CloseUSBHIDDevice Lib "HS32U2_HID.dll" (ByVal hDev As Long)

Public Declare Function SetFeatureToUSBHIDDevice Lib "HS32U2_HID.dll" (ByVal hDev As Long, ByRef buff As Byte, ByVal datalength As Long) As Long
Public Declare Function GetFeatureFromUSBHIDDevice Lib "HS32U2_HID.dll" (ByVal hDev As Long, ByRef buff As Byte, ByVal datalength As Long) As Long

Public Declare Function GetFeatureLength Lib "HS32U2_HID.dll" (ByVal hDev As Long) As Long

SetFeature 相当于 WriteReport;GetFeature 相当于 ReadReport。