如何确定使用串行端口的进程?

时间:2008-09-03 17:46:21

标签: vb.net serial-port

我工作的公司生产的硬件通过串口与计算机通信。第三方公司编写与我们的硬件通信的软件。

有时我需要诊断我们的硬件。但是,第三方软件应用程序在Windows启动时连接到串行端口,阻止任何其他连接。我不知道这个应用程序/服务的名称,它并不总是相同的。

有没有办法:

  • 查找当前使用给定串行端口或
  • 的应用/服务的名称/ pid
  • 从另一个应用程序窃取串口连接。

vb.net最好,但我也会采用与语言无关的答案。

3 个答案:

答案 0 :(得分:20)

您也可以使用SysInternals的process explorer工具搜索打开的句柄。在这种情况下,您可能希望搜索“Serial”,因为它使用的设备名称可能不会映射到com端口号。 (例如,我的系统上的COM1是\ Device \ Serial0。)

如果您想从另一个应用程序中控制串口,我认为您需要合作驱动程序。

答案 1 :(得分:7)

作为Rob Walker said,您可以使用Process Explorer找到使用串口的用户。大多数情况下,键入 Ctrl + F 并搜索“serial”将显示谁打开了串口,但我刚遇到“COM3”的情况“串口的句柄显示为”\ Device \ VCP0“。它可能很奇怪,因为它在带有USB到串行连接器的VirtualBox下运行。

如果搜索“serial”和“device \ vcp”没有得到任何结果,您可以通过使用已知程序打开串行端口句柄来弄清楚它是如何命名的。在Process Explorer中,通过键入 Ctrl + L 显示每个进程的打开句柄的下部窗格。单击用于打开串行端口的进程,并查看下方窗格以查看哪些句柄看起来可能是串行端口。您可以在查看时打开和关闭端口,文件句柄应该显示和消失,并以绿色或红色突出显示。当然,只有当您有多个串口或者您尝试诊断的串口并不总是被某个神秘过程锁定时,才有可能实现此目的。

答案 2 :(得分:3)

Sysinternals有一系列实用程序,我发现这些实用程序对于跟踪系统正在执行的操作非常有用且具有教育意义。

他们有一个实用程序,它可以完全满足您的需要Portmon,并提供一些有关它如何在页面底部附近工作的信息。如果实用程序不够,那么这些信息和一些很好的问题可能会为您提供实现它所需的一切。

- 亚当