我工作的公司生产的硬件通过串口与计算机通信.第三方公司编写与我们的硬件通信的软件.
有时我需要诊断我们的硬件.但是,第三方软件应用程序在Windows启动时连接到串行端口,阻止任何其他连接.我不知道这个应用程序/服务的名称,它并不总是相同的.
有没有办法:
找到当前使用给定串行端口或的应用程序/服务的名称/ pid
从另一个应用程序窃取串口连接.
vb.net最好,但我也会采用语言无关的答案.
您也可以使用SysInternals中的进程资源管理器工具来搜索打开的句柄.在这种情况下,您可能希望搜索"Serial",因为它使用的设备名称可能不会映射到com端口号.(例如,COM1是我系统上的\ Device\Serial0).
如果你想从另一个应用程序控制串口,我想你需要合作驱动程序.
正如Rob Walker所说,您可以使用Process Explorer找到谁正在使用串行端口.大多数情况下,键入Ctrl+ F并搜索"serial"会显示谁打开了串口,但我遇到的情况是我的"COM3"串口的句柄显示为"\ Device\VCP0".这可能很奇怪,因为它在带有USB到串行连接器的VirtualBox下运行.
如果搜索"serial"和"device\vcp"没有得到任何结果,您可以通过使用已知程序打开串行端口句柄来弄清楚它是如何命名的.在Process Explorer中,通过键入Ctrl+ 显示每个进程的打开句柄的下部窗格L.单击用于打开串行端口的进程,并查看下方窗格以查看哪些句柄看起来可能是串行端口.您可以在查看时打开和关闭端口,文件句柄应该显示和消失,并以绿色或红色突出显示.当然,只有当您有多个串口或者您尝试诊断的串口并不总是被某个神秘过程锁定时,才有可能实现这一点.