2008-09-03 158 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鍵 + 大號顯示與每個進程的打開的句柄下窗格。點擊您用來打開串口的過程,然後通過下窗格查看哪些手柄看起來像是串口。您可以在觀看時打開和關閉端口,並且文件句柄應該出現並消失,並且以綠色或紅色突出顯示。當然,只有當您有多個串行端口或您嘗試診斷的串行端口並不總是被某個神祕過程鎖定時,纔可能這樣做。

相關問題