0

我正在开发一个使用串行连接到 USB 设备(显示为 COM 端口)的应用程序。在之前的硬件上,使用了 silabs 芯片,并在 PC 上安装了 silabs 驱动程序。新硬件使用内部 USB 模块,现在有一个自定义驱动程序。

当我使用/使用旧硬件时,当 USB 设备断开连接时,我会在 read() 调用中的读取器线程中遇到异常,但使用新设置时情况并非如此。我一直在查看驱动程序,其中 silabs 依赖于它自己的 .sys 文件,新驱动程序使用 usbser.sys。我一直在阅读有关 INF 文件中不同部分的大量信息,假设这与驱动程序问题有关,但似乎找不到任何出现在我眼中的东西。

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

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

4

1 回答 1

0

这里的行为差异可能与设备/驱动程序之间意外删除的实现差异有关。如果在使用 Silabs 驱动程序时删除设备,则从该点发送到驱动程序的请求将失败,因为该设备不再可用。您的新设备(作为 CDC 设备运行)可能没有实施相同的移除策略,也没有使某些功能失效,或者以与 Silabs 驱动程序相同的方式。

在这两种情况下处理此问题的正确方法是为您的 USB 转串口转换器实施意外移除检测。不幸的是,在 Java 中没有直接的方法,但这里有一些示例 C++ 代码演示了您可以等待的事件。

于 2013-12-10T14:59:47.463 回答