2012年4月28日土曜日

USB複合デバイスを作るときの注意

USB複合デバイスを作るとき、たぶん一つのデバイスを作って動作確認してディスクリプタを増やして次のデバイスを追加して…とやるとおもいますが、ここで落とし穴に注意。

一度あるVID,PIDでWindowsにつないでしまうとWindowが”どのデバイスドライバを使った”ということを覚えてしまいます(同じポートにつないだ時)。

そのため、上記のように追加すると”ビックリマーク”がついた状態になって”正常に動作していません”と言われます。

違うポートに繋げばまぁ回避できますがそういっぱいポートがあるわけでもなく。
またVID,PIDを変えていけば回避をできるわけですがそんな生産性のないことをしたくないですし。

これを回避するにはデバイスを”削除”すればよいのですがすでにディスクリプタを変えてしまっていると削除しようにもそのデバイスを認識しないので削除できません。

ちゃんとしている人は”ディスクリプタを変える前に削除してるぜ”っていうかもしれませんが人間は忘れるものなので...(少なくとも自分は無理)
また変更したディスクリプタを元に戻して...というのも生産性がない。

そこで、Utilityを使って”忘れさせ”ます。

で、これ。
http://www.nirsoft.net/utils/usb_devices_view.html

これは”接続していないデバイス”のドライバ設定を削除できます。

使用する前に、設定で、”接続していないデバイスを表示する”にチェックが入っているか確認しましょう。




また、管理者権限で実行しないと設定が削除できませんのでここも注意。

で削除したいデバイスを見つけたら、右クリックして削除。



デバイスの表の右のほうにVendorIDとProductIDの欄もあるのでソートをして複数の行を選択すれば一気に削除することもできます。
今まで作ったデバイスの名残がある人はこれを機に掃除してしまいましょう。

ちなみに、自分はこれで2日無駄にしました。あ゛ー。


リンク
http://itpro.nikkeibp.co.jp/article/COLUMN/20090529/330946/
http://www.microchip.com/forums/m646586-print.aspx

0 件のコメント:

コメントを投稿