2015-05-08 58 views
0

我有一個COM端口上偵聽.NET應用程序。連接的另一端是運行lubuntu的UDOO板。的SerialPort在設備管理器,但SerialPort.Open()可見報告說,它無法找到

重新啓動udoo板後,COM端口暫時丟失,然後重新出現在設備管理器上。但是,當我調用SerialPort對象的「打開」功能時,出現一個異常,它顯示「端口COM4不存在」。完整的異常堆棧跟蹤如下。

at System.IO.Ports.InternalResources.WinIOError(Int32 errorCode, String str) 
    at System.IO.Ports.SerialStream..ctor(String portName, Int32 baudRate, Parity parity, Int32 dataBits, StopBits stopBits, Int32 readTimeout, Int32 writeTimeout, Handshake handshake, Boolean dtrEnable, Boolean rtsEnable, Boolean discardNull, Byte parityReplace) 
    at System.IO.Ports.SerialPort.Open() 

即使引發此異常,設備管理器也會顯示與以下屏幕截圖中相同的COM端口。

enter image description here

是的,我做了刷新設備列表中。拔下電纜並將電纜插回計算機即可解決此問題,但它並不優雅。

有沒有對我怎麼能解決這個問題有什麼想法?

+0

是否有可能原裝手柄仍然在使用/從原來的時間,這是開放式的應用程序打開? – Preston

回答

1

嘗試從禁用串行端口,然後重新啓用。 還要檢查硬件是否有問題。您可以通過串口插入USB設備來檢查它。如果工作正常。使用調試器來檢查代碼。

0

只要您的應用程序檢測到COM端口丟失,您應該關閉()連接到它。當它在系統中再次可用時,不會有打開它的問題。

我有類似的問題,ELMO驅動程序。我們在USB連接串行(COM)和HID上使用了2個邏輯管道。 COM在一個進程中被打開,HID在第二個進程中被打開。 硬件復位並重新初始化USB後,COM和HID端口被重新列在設備管理器中,但我們無法再打開它。通常只有PC重置有幫助。我們花了一些時間試圖找出問題所在,並且我們發現當USB不再可用時,HID進程沒有關閉連接。 介紹完這個簡單的修復程序後,所有工作都開始順利進行。

相關問題