硬件开发做久了,大家都会面临一个让人头大的问题:新买的 USB 转 TTL 串口线,每次一插上电脑,分配到的 COM 端口号就会不停地往上蹦,从 COM3、COM4 慢慢堆叠到 COM80、甚至是 COM256 之后。这不仅在很多老旧的上位机软件(那些只支持 COM1 到 COM8 的古董 exe)中完全无法打开,而且看着凌乱不堪。这是 Windows 系统的设备安装历史缓存积重难返引发的。
Windows 为了保证你下一次插回同一个 USB 小板时,该板子能继承并保留之前设置的所有参数,会在注册表中永久记录它的底层 USB 设备描述符,即使你早就把它丢进了垃圾桶,系统分配给它的 COM 号也会一直被永久占用并隐藏。要一次性把这几百个幽灵 COM 号一扫而光,可以使用以下清理绝招:
- 以管理员权限开启系统 CMD 控制台。
- 输入 `set devmgr_show_nonpresent_devices=1`,开启显示隐藏和不在线设备的环境变量,接着输入 `devmgmt.msc` 打开设备管理器。
- 点击设备管理器顶部的'查看' -> '显示隐藏的设备'。
- 此时,展开'端口(COM 和 LPT)'选项卡,你会看到曾经用过的、发灰、半透明的所有历史串口幽灵设备。在这些垃圾 COM 设备上右键选中并一一点击'卸载设备',勾选'尝试删除此设备的驱动程序'。
- 全部卸载后重新插入开发板,系统就会把空闲、尊贵的 COM3 / COM4 重新派发给当前设备,串口调试体验瞬间神清气爽。