2012年4月28日土曜日

WinUSBをインストールする

infファイルを作るのは面倒くさいもので。

Interfaceのダウンロードサービスをありがたく利用させてもらって手抜きをしようと。

下記リンクより
http://www.cqpub.co.jp/interface/download/contents.htm
2011年8月号のなかの"Windows用の汎用USBドライバWinUSBの基本的な使い方"を
ダウンロードし、解凍。

中のフォルダ、"WinUSB-WinXP-Install"の下に、ある2つのフォルダの中にお宝が。
32bitのドライバのインストールするときは、"WinUSBdrv"を、64bitのときは"WinUSBdrv64"を使います。

で、どちらかを選んでその中の"WinUSBTest.inf"の中に自分のエントリを追加。

[DevDrv.NTx86]
;;%DeviceName%=USB_Install, USB\Vid_045e&Pid_94aa&mi_00
%DeviceName%=USB_Install, USB\VID_0547&PID_1002 ;; OSR USB-FX2
%DeviceName%=USB_Install, USB\VID_045B&PID_0020 ;; CQ FRK SH-2A
%DeviceName%=USB_Install, USB\VID_FFFD&PID_0000&MI_01
[DevDrv.NTamd64]
;;%DeviceName%=USB_Install, USB\Vid_045e&Pid_94aa&mi_00
%DeviceName%=USB_Install, USB\VID_0547&PID_1002 ;; OSR USB-FX2
%DeviceName%=USB_Install, USB\VID_045B&PID_0020 ;; CQ FRK SH-2A
%DeviceName%=USB_Install, USB\VID_FFFD&PID_0000&MI_01

赤字の箇所が追加した部分。
自分は複合デバイスに割り当てたかったので"&MI_01"がついてますが、ここは各人の設定に合わせて。

インストールするときは同じフォルダの"dpinst.exe"を使ってインストール。

配布するときのインストーラを作るときはもっとちゃんとしないといけないんでしょうが、テストしたいぐらいの時はこれでちゃちゃっと。

ただ、このまま使うと、デバイス名が"WinUSB Test Device"になっちゃうのでココらへんが嫌な人は最後の方の文字列を適当に書き換えを。

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