我们正在使用 Windows 10 测试连接到多个 USB 集线器的几种不同设备。其中一些具有相同的 VID/PID,一些则不同。有很多设备正在插入和拔出,我们发现在枚举串行端口(确切地说是 USB CDC ACM 端口)时突然出现重大问题:
所有串行端口都获得相同的 COM 编号!这怎么可能呢?当然,当我们尝试同时与大多数端口通信时,这是不可能的。为什么这种情况会时不时发生,有时在重启后发生,有时又不会发生?
当 COM 编号开始增长超过 250 时,我们还看到了不稳定的情况,因此我们构建了一个清除所有注册表项的工具。这似乎在一段时间内有效,但同样,并非总是有效。重新安装整个操作系统在开始时有效,但很快又开始给我们带来问题。在 Linux 机器上插入相同的设备总是会给我们一个新的 /dev/ttyACMx。我们还在 Windows 7 中看到了这种有问题的行为。