2012-12-22 36 views
8

下發出USB設備重新連接我有一個基於FTDI芯片的USB設備。有時候,它的司機卡住了。如何在Windows

在Linux下,有沒有問題 - 設備都會自動斷開連接,並通過默認的內核重新連接,而唯一的問題是設備名稱變更 - 即可以通過udev規則進行固定。

在Windows下,當它卡住了,應用程序的線程,做read()write()在那一刻完全掛起。它不能被殺死,也不能被TerminateThreadKillProcess殺死。

殺應用程序的唯一途徑 - 是斷開USB設備物理。

以編程方式發出設備重新連接的任何方式,這將消除驅動程序的死鎖並允許重新打開端口並繼續工作?

管理權限應用程序可以有,如果需要的話。

+0

「Devcon.exe的重啓* FTDI *」 「Devcon.exe的禁用* FTDI *」 是失敗,而在懸掛狀態 – datacompboy

+0

的壞消息是,基於FTDI的設備是目前市場上最可靠的! - 基於PL2303(和/或其芯片組供應商的驅動程序)的設備遭到嚴重破壞。 – marko

+0

您是否嘗試過[ftdichip.com](http://ftdichip.com)的更新驅動程序? –

回答

5

我建議你將你的思考了一步。您正嘗試直接重新啓動USB設備,爲什麼不試試集線器?

我也有類似的問題,這樣做的:

devcon remove *ROOT_HUB* && devcon rescan 

重新連接USB設備到集線器時,它被掛。

注意:這將從設備管理器中刪除所有USB設備並重新添加它們。您可以使用expect或類似的方法來執行devcon findall *ROOT_HUB*,並根據需要刪除ROOT_HUB20ROOT_HUB30

+1

它似乎失敗,我關閉集線器,如設備本身...:/ – datacompboy

+0

聽起來像你的問題可能不是與設備,但你的USB集線器。你有另一臺電腦或USB集線器可以試用嗎? –

+0

這是MB板載USB集線器,我會檢查與外部被動和主動USB集線器,謝謝你的建議!這似乎是真正的解決方案 – datacompboy