![Windows 中不同的串行端口获得相同的 COM 标识符](https://linux22.com/image/1634329/Windows%20%E4%B8%AD%E4%B8%8D%E5%90%8C%E7%9A%84%E4%B8%B2%E8%A1%8C%E7%AB%AF%E5%8F%A3%E8%8E%B7%E5%BE%97%E7%9B%B8%E5%90%8C%E7%9A%84%20COM%20%E6%A0%87%E8%AF%86%E7%AC%A6.png)
我们正在使用 Windows 10 测试连接到多个 USB 集线器的几种不同设备。其中一些具有相同的 VID/PID,一些则不同。有很多设备正在插入和拔出,我们发现在枚举串行端口(确切地说是 USB CDC ACM 端口)时突然出现重大问题:
所有串行端口都获得相同的 COM 编号!这怎么可能呢?当然,当我们尝试同时与大多数端口通信时,这是不可能的。为什么这种情况会时不时发生,有时在重启后发生,有时又不会发生?
当 COM 编号开始增长超过 250 时,我们还看到了不稳定的情况,因此我们构建了一个清除所有注册表项的工具。这似乎在一段时间内有效,但同样,并非总是有效。重新安装整个操作系统在开始时有效,但很快又开始给我们带来问题。在 Linux 机器上插入相同的设备总是会给我们一个新的 /dev/ttyACMx。我们还在 Windows 7 中看到了这种有问题的行为。