8

FTDI チップに基づく USB デバイスがあります。時々、そのドライバーが動けなくなります。

Linux では、デバイスが自動的に切断され、デフォルトのカーネルによって再接続される問題はありません。問題はデバイス名が変更されることだけです。これは udev ルールで修正できます。

Windows の下でスタックすると、アプリケーションのスレッドread()またはwrite()その時点で完全にハングします。それは殺されることも、によってTerminateThreadも、によってもできませんKillProcess

アプリを強制終了する唯一の方法は、USB デバイスを物理的に切断することです。

プログラムでデバイスの再接続を発行する方法はありますか?これにより、ドライバーのデッドロックが解消され、ポートを再度開いて作業を続行できるようになりますか?

管理者権限アプリケーションは、必要に応じて持つことができます。

4

1 に答える 1

5

考え方を一歩進めたほうがいいと思います。USB デバイスを直接再起動しようとしていますが、ハブを試してみませんか?

私は同様の問題を抱えていました。

devcon remove *ROOT_HUB* && devcon rescan

ハングしたUSBデバイスをハブに再接続。

: これにより、すべての USB デバイスがデバイス マネージャーから削除され、再度追加されます。expect または alike を使用して、必要に応じてまたはのいずれかを実行devcon findall *ROOT_HUB*および削除できます。ROOT_HUB20ROOT_HUB30

于 2013-01-03T16:54:02.830 に答える