我正在开发一个使用USB设备串行连接的应用程序(显示为COM端口)。在之前的HW上,使用了silabs芯片,并在PC上安装了silabs驱动程序。新硬件使用内部USB模块,现在有一个自定义驱动程序。
当我使用/使用旧硬件时,我会在read()调用中的读取器线程中出现异常,当USB设备断开连接时,但是在新设置中,情况并非如此。我一直在查看驱动程序以及silabs依赖于自己的.sys文件的位置,新驱动程序使用usbser.sys。我一直在阅读有关INF文件中不同部分的很多内容,假设这与驱动程序问题有关,但似乎无法找到任何突然出现在我眼中的东西。
应用程序是用Java编写的,并使用jComport组件。可悲的是,我不允许发布任何驱动程序代码,但希望你们能帮助我。
任何可以传递一些信息来帮助我的人吗?
答案 0 :(得分:0)
这里的行为差异可能与设备/驱动程序之间意外删除的实现差异有关。在使用Silabs驱动程序删除设备时,从该点开始发送给驱动程序的请求将失败,因为该设备不再可用。您的新设备(作为CDC设备运行)可能不会在删除时实施相同的策略,也不会使某些功能失效,或者与Silabs驱动程序相同。
在任何一种情况下处理此问题的正确方法是为您的USB转串口转换器实施意外删除检测。不幸的是,在Java中没有直接的方法,但here is some sample C++ code演示了您可以等待的事件。