2013-06-20 108 views
0

我正在使用串行連接到USB設備的應用程序(顯示爲​​COM端口)。在以前的硬件上,使用了silabs芯片,PC上安裝了硅片驅動器。新硬件使用內部USB模塊,現在有一個自定義驅動程序。USB設備斷開連接時,read()中出現異常?

當我使用/用舊的硬件,我會得到一個例外,在read()調用,當USB設備斷開連接我讀線程,但隨着新的設置不是這種情況。我一直在尋找驅動程序,並且silabs依賴於它自己的.sys文件,新驅動程序使用usbser.sys。我一直在閱讀關於INF文件中不同部分的許多內容,假設這與驅動程序問題有關,但似乎無法找到任何在我眼中流行的東西。

該應用程序是用Java編寫的,並使用jComport組件。可悲的是,我不允許發佈任何驅動程序代碼,但希望你們可以幫助我。

任何人都可以傳遞一些信息來幫助我?

回答

0

在這裏的行爲的差異可能與在實施設備/驅動器之間意外刪除的差異做。在使用Silabs驅動程序時刪除設備時,從該點開始向驅動程序發送的請求將失敗,因爲該設備不再可用。您的新設備可能會作爲CDC設備運行,但在執行刪除時不會執行相同的策略,並且不會導致某些功能失效,或者與Silabs驅動程序的操作方式相同。

對付這兩種情況下正確的方法是實現您的USB轉串口轉換器意外刪除檢測。不幸的是,在Java中沒有一個簡單的方法來解決這個問題,但是here is some sample C++ code表明了你可以等待的事件。

相關問題