USB设备断开连接时,read()中出现异常?

问题描述:

我正在使用串行连接到USB设备的应用程序(显示为​​COM端口)。在以前的硬件上,使用了silabs芯片,PC上安装了硅片驱动器。新硬件使用内部USB模块,现在有一个自定义驱动程序。USB设备断开连接时,read()中出现异常?

当我使用/用旧的硬件,我会得到一个例外,在read()调用,当USB设备断开连接我读线程,但随着新的设置不是这种情况。我一直在寻找驱动程序,并且silabs依赖于它自己的.sys文件,新驱动程序使用usbser.sys。我一直在阅读关于INF文件中不同部分的许多内容,假设这与驱动程序问题有关,但似乎无法找到任何在我眼中流行的东西。

该应用程序是用Java编写的,并使用jComport组件。可悲的是,我不允许发布任何驱动程序代码,但希望你们可以帮助我。

任何人都可以传递一些信息来帮助我?

在这里的行为的差异可能与在实施设备/驱动器之间意外删除的差异做。在使用Silabs驱动程序时删除设备时,从该点开始向驱动程序发送的请求将失败,因为该设备不再可用。您的新设备可能会作为CDC设备运行,但在执行删除时不会执行相同的策略,并且不会导致某些功能失效,或者与Silabs驱动程序的操作方式相同。

对付这两种情况下正确的方法是实现您的USB转串口转换器意外删除检测。不幸的是,在Java中没有一个简单的方法来解决这个问题,但是here is some sample C++ code表明了你可以等待的事件。