• ベストアンサー

アプリ再起動せずにデバイスリセットして通信する方法

USB開発初心者です。 PCアプリからUSB通信でデバイス機器をリセットさせ(何かメッセージを送って、デバイス側がそのメッセージを受信するとリセットする)、 デバイスリセット後にアプリを再起動せずにUSB通信を再開させる方法はあるのでしょうか? 現状、デバイスがリセットし、エニュメレーションを行ってPCに認識させた後は、 アプリとデバイスでUSB通信が上手く出来なくなってしまいます。 デバイスリセット後にアプリを再起動させると問題無く通信出来る様です。 何か方法等あれば教えて下さい。 よろしくお願いします。 ※情報が足りない場合等ご指摘頂ければ助かります。

質問者が選んだベストアンサー

  • ベストアンサー
  • gha10320
  • ベストアンサー率71% (5/7)
回答No.1

Windowsの場合で書きます まずは、アプリを立ち上げないでデバイスマネージャーを立ち上げ USBを抜くと、ドライバがアンロード(デバイスマネージャーからいなくなる) されて、また挿入するとロードされる様子を観察して下さい。(現れる) この様子が、デバイスの抜き差しを行った正しい動きです ではアプリを立ち上げて デバイスをリセットすると、ドライバがアンロードされますが アプリがそのデバイスのハンドルを握りっぱなしで アンロードされていない状態だと思います。 アプリでWM_DEVICECHANGEメッセージを受け取って 抜けた場合は、ハンドルクローズ 挿入された場合は、ハンドルオープン すればいいと思います。 Linuxの場合だと、ドライバのremoveハンドラが呼び出されたら アプリにシングナル渡すか位しか思いつきません。

optimum22
質問者

お礼

gha10320様 ご回答ありがとうございます。 具体的にご指摘頂きましてとても参考になりました。

関連するQ&A