找到正在使用或保留某序列埠的程序

更新 Nov 11, 2020

環境

操作系統

  • Windows

我有一個程式在嘗試通過VISA訪問某序列(serial)埠(COM)時返回VI_ERROR_RSRC_BUSY或其他資源正在繁忙(other resource is busy)的錯誤。我該如何確定哪個程序(process)正在使用COM port?

要查詢哪個程序正在使用序列埠(Serial Port, COM),請按照以下步驟操作:
  1. 下載Process Explorer Tool
  2. 控制台»裝置管理員。在裝置管理員中,引導到連接埠(COM和LPT),然後右鍵單擊目標serial port並選擇內容(R)
  3. 點選詳細資料按鈕,然後選擇屬性(P)將內容改為服務 ,記下此處列出的值。在下圖的範例中(NI USB-232),服務值為NiSerU 。請注意此欄位的值,以便在Process Explorer中進行搜索。
  4. 打開Process Explorer,您將看到類似於下圖的視窗。
  5. 在選單中選擇Find » Find Handle or DLL...。此時將彈出一個新視窗,並在Handle or DLL substring那行中輸入從裝置管理員獲得的值,在本範例中為NiSerU。
  6. 點擊Search ,下方結果將顯示哪個process正在使用該埠。例如,在下面的搜索中,透過Handle or DLL的敘述\ Device \ NiSerU1 ,我們可知道 USB-232正在被NIMax.exe使用。從這裡,您可以確定哪個程序正在使用serial port資源。