我从一个离开公司的程序员继承的代码中遇到了一个奇怪的问题,需要一些关于如何开始解决它的指导。
问题在于 - 在半定期的基础上,我们发现正在创建重复的USB虚拟通信端口。例如,在我的PC上,当我在设备管理器中查看端口并选择“查看隐藏设备”时,我有两个相同设备的条目 - 一个在COM6上,一个在COM8上。
不幸的是,我们无法可靠地重新创建问题。我们怀疑当我们的软件运行时有人快速断开并重新连接USB电缆时可能会发生这种情况,但需要确认。
据我所知,编写的代码假设没有人会拔掉电缆。在SW启动后,我没有看到任何逻辑来检测这种情况。当你重新插上电缆时它会失败 - 即使在重新插入电缆后也会无声地产生读写错误。你必须重新启动它才能再次运行。
我的串口和USB体验非常少,而且如何开始解决此问题我感到有些失落。
有人能说明为什么会这样吗?
混杂。细节,如果它们可能相关:
USB串行代码在C ++ DLL中
VS2008
FTDIBUS USB /串行驱动程序
Windows XP和Win7
重复注册表项的屏幕截图(注意所选键的值!)
答案 0 :(得分:2)
正如Raymond Chen的博客中所解释的那样,Old New Thing,以及上述评论者:
总结:
因此,如果没有序列号的设备或在Windows注册表中标记为具有重复序列号的设备插入到之前未插入的串行端口,则它将被视为新设备而不是重新连接旧设备。这将导致您描述的“Ghost”设备。
制造商特意将一些FTDI设备称为出现此问题: