解決策
この動作はデバイスが電源を失い、コンピュータは電源がある際に発生します。例えば、コンピュータがスタンバイやパワーセーブモードとなる場合、よくUSBポートの電源が切られます。 また、これはコンピュータが休止状態から復帰する際にも発生します。 どちらの場合にも、デバイスはコンピュータによって再検出されず、その故に通信ができなくなります。
この問題が発生した際にWindowsがデバイスを再検出するように設定する方法は、以下のとおりです。
- Microsoft社のDevConユーティリティをインストールします。DevConユーティリティは、デバイス マネージャーの代わりとなるコマンドラインのユーティリティです。DevConを使用すると、個別のデバイスもしくはデバイスグループの有効化、無効化、再起動、更新、削除、およびクエリをおこなうことができます。こちらからDevConをダウンロードできます。Windows 7を使用している場合は、Windows Driver Kit(WDK)の一部としてDevConをダウンロードすることが可能です。
- スタート>>ファイル名を指定して実行でdevmgmt.mscと入力し、OKボタンをクリックしてWindowsのデバイスマネージャを開きます。
-
問題のデバイスが接続されているUSBハブ(ポート)を特定する必要があります。 これを行うには、リストの一番下にある「ユニバーサル シリアル バス コントローラー」グループを展開します。
-
順番に、すべてのUSB ルート ハブ項目をダブルクリックして電源タブをクリックし、デバイスがリストされているかどうかを確認します。
-
デバイスが一覧表示されているハブが見つかったら、詳細タブをクリックし、ドロップダウンメニューから最後に確認された親を選択します。Windows 7を実行している場合は、デバイス インスタンス パスを選択します。値リストにある1番目と2番目の\記号の間に表示されている名前を記録します(例:ROOT_HUB20)。
-
次に、スタート>>ファイル名を指定して実行でcmdと入力し、OKボタンをクリックしてコマンドプロンプトを起動します。
-
コマンドプロンプトウィンドウで、まず始めにダウンロードしたdevcon.exeファイルを含むフォルダがあるディレクトリに変更します。64ビットOSを使用している場合、確実にdevcon.exeの64ビット版を呼び出している必要があります。適切なディレクトリを開いた時点で、以下のコマンドを入力してEnterキーを押します。このとき、ROOT_HUB20を手順5で記録した名前に変更します。
devcon restart * ROOT_HUB20 *
メモ: マウスやキーボードなどのユーザインタフェースデバイス、もしくはその他USBネットワークアダプタなどその他のUSVBデバイスが、再検出使用としているUSBデバイスと同じルートハブにある場合、再起動中はそれらのデバイスも接続が切れます。
- すぐに、Windowsがハブとそれに繋がっているUSBデバイスを削除して再検出し、再度有効化をおこないます。これで動作しない場合は、手順5で間違ったハブを選択している可能性があります。再起動が成功するまで手順3~7を繰り返します。
- デバイスが接続されているルートハブが分かれば、コマンドプロンプトにコマンドを渡すことができるシステム実行VIを使用して、この解決策をLabVIEWでプログラム的に実装可能です。システム実行VIは、接続(またはコネクティビティ)>>ライブラリ&実行可能ファイルのサブパレットにあります。