我有一个程序(环境是 Windows 7 Enterprise 32 位),可以扫描可用的串行端口以检测特定的设备。
但许多机器的其中一个串口上配置了打印机驱动程序(这并不意味着该端口上确实连接了打印机)。在这种情况下,我的扫描程序无法打开该端口来搜索设备。
在 Windows XP 上,在开始扫描之前停止后台处理程序足以解锁打印机驱动程序分配的串行端口。在 Windows 7 上,这不再起作用。如果我在 COMx 上配置了打印机并停止后台处理程序,则无法打开 COMx。
我已经检查过进程锁进程表达式:当后台处理程序运行时,端口结果由 spoolsv.exe 进程分配,而当后台处理程序停止时,端口结果未被任何人分配。
关于如何暂时解锁打印机分配的端口,您有什么想法吗?
我发现的一个解决方法是在扫描之前将每个串行打印机的端口更改为 FILE:,并在扫描完成后将其更改回 COMx,但我想知道是否有更简单的解决方案。
答案1
我遇到了类似的问题,通过在串行端口高级属性(通过设备管理器)中将端口名称从 COM1 更改为 COM4 来解决。
一切工作正常。一些程序仍然将重命名的端口视为 COM1,但现在它们可以访问该端口。