Vb.net 隐藏设备。处理事件的最佳方法?

Vb.net 隐藏设备。处理事件的最佳方法?,vb.net,hid,Vb.net,Hid,我使用一个HID设备连接到一个CAN总线,并连接了几种不同类型的传感器。他们中的一些反应很快,另一些有更多的延迟 我使用这个USB HID组件作为VisualBasic中的.dll,非常好用 我目前发送和接收命令的代码有点麻烦。有时命令和命令发送但接收速度不够快。问题可能与传感器有关,而不是实际的vb代码。我们希望程序继续监控其他传感器,不要挂起太久 目前我正在使用事件处理程序和循环,但我想知道线程是否能更好地实现这一点?或者我的日常生活是否适合这种情况 代码片段: CANUSB_Class.v

我使用一个HID设备连接到一个CAN总线,并连接了几种不同类型的传感器。他们中的一些反应很快,另一些有更多的延迟

我使用这个USB HID组件作为VisualBasic中的.dll,非常好用

我目前发送和接收命令的代码有点麻烦。有时命令和命令发送但接收速度不够快。问题可能与传感器有关,而不是实际的vb代码。我们希望程序继续监控其他传感器,不要挂起太久

目前我正在使用事件处理程序和循环,但我想知道线程是否能更好地实现这一点?或者我的日常生活是否适合这种情况

代码片段:

CANUSB_Class.vb

MainParsingRoutine.vb


如果有人在开发HID设备时偶然发现了这一页,我最终使用了ManualResetEvent

在CANUSB类中,下一行是:

resetEvent.Set()
然后在MainParsingRoutine.vb中,我更改了:

Do Until CANPort.rxDataReady = True Or _ 
                  CANTimer.ElapsedMilliseconds > timeout
              System.Threading.Thread.Sleep(0)
          Loop
          If CANPORT.rxDataReady = True Then
              sendCommand = True
致:

100毫秒后超时


与我们的HID设备配合得非常好,比我们以前的FTDI usb串行设备好得多。

我知道这已经很旧了,但我正在研究类似的东西,我很好奇:为什么选择ManualResetEvent而不是AutoResetEvent?我使用ManualResetEvent在发送和接收数据之间保持一个简单的“状态”。这在我们的例子中是有效的,因为每个发送的命令都有一个单一的响应。如果can总线正在输出数据,那么它将不是一个有效的选项。
resetEvent.Set()
Do Until CANPort.rxDataReady = True Or _ 
                  CANTimer.ElapsedMilliseconds > timeout
              System.Threading.Thread.Sleep(0)
          Loop
          If CANPORT.rxDataReady = True Then
              sendCommand = True
CANUSB.resetEvent.WaitOne(100)