2008-09-03 109 views
23

我工作的公司生产通过串口与计算机通信的硬件。第三方公司编写与我们的硬件通信的软件。如何确定哪个进程正在使用串行端口?

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

有什么办法要么:

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

vb.net最好,但我会采取一种语言不可知的答案。

回答

20

您还可以使用process explorer工具从Sysinternals的搜索打开的句柄。在这种情况下,您需要搜索'Serial',因为它使用的设备名称可能无法映射到com端口号。 (例如我的系统上的COM1是\ Device \ Serial0)。

如果你想利用从其他应用程序的串行端口的控制,我认为你需要的驱动程序的合作。

+1

太好了。奇怪的是,它似乎可以在我的Windows XP PC上运行所有端口**,除了我感兴趣的那个:使用Windows'usbser.sys`驱动程序的USB串行端口。 – 2011-10-10 04:52:16

3

Sysinternals拥有的公用事业摆我找到追踪哪些进程正在做的系统非常有用和教育。

他们有一个实用程序,不正是你需要什么叫Portmon,并给它如何工作接近页面底部的一些信息。如果实用程序不够用,那么这些信息和一些很好的问题可能会给您提供您需要的一切来实现它。

- 亚当

+2

不幸的是,PortMon无法在64位操作系统上工作,现在这个操作系统占了绝大多数。假设你可以尝试运行虚拟机,但这不适合我。 – topshot 2016-12-21 17:52:50

7

由于Rob Walker said,你可以找到谁在使用串行端口使用Process Explorer。大多数情况下,打字Ctrl + F搜索“串口”会告诉你谁有一个串口打开,但我遇到了一个情况,我的“COM3”串口的句柄显示为“\ Device \ VCP0" 。这可能很奇怪,因为它使用USB到串行连接器在VirtualBox下运行。

如果搜索“串行”和“设备\ VCP”不给你任何结果,您可能能够找出港口处理的是如何串行通过打开一个与已知的程序命名。在处理资源管理器,通过键入Ctrl键 + 大号显示与每个进程的打开的句柄下窗格。点击您用来打开串口的过程,然后通过下窗格查看哪些手柄看起来像是串口。您可以在观看时打开和关闭端口,并且文件句柄应该出现并消失,并且以绿色或红色突出显示。当然,只有当您有多个串行端口或您尝试诊断的串行端口并不总是被某个神秘过程锁定时,才可能这样做。

相关问题