電子書籍の厳選無料作品が豊富!

お世話になります。

デバイス(CY3684 EZ-USB FX2LP Development Kit)と、私が作成したWinUSB
のソフトウェアを使って、USBの通信を確立させることができました。

しかし、1台のPCで同デバイスを2台以上つなげた場合、
接続させる順番によって、接続が確立されたり、されなかったりします。

---------
ex) 簡単ですが例を...

・PC
・USBデバイスA
・USBデバイスB

1. PCとUSBデバイスAを接続 -> OK
2. PCとUSBデバイスBを接続 -> OK
3. PCとUSBデバイスA、Bを切断 -> OK
4. PCとUSBデバイスBを接続 -> OK
5. PCとUSBデバイスAを接続 -> NG
⇒ WinUSB関数でHandle取得に失敗

※ PCのUSB接続ポートは変更していません

# これ以降、必ずUSBデバイスA、Bの順番に接続しないと、
# 必ず接続(Handle取得)に失敗してしまいます
---------

また、上記4のところで、PCとUSBデバイスAを接続、PCとUSBデバイスBを接続
という順序で接続すれば、問題なくHandleも取得でき、通信も出来ました。

原因を調べていましたら、iSerialNumberによって、この問題が回避
できる?といった情報を入手したのですが、よくわかりませんでした。
(EZ-USBのデスクリプタの設定値を変更するってことでしょうかね?)
ただ、EZ-USBのiSerialNumberのデフォルトは0でした。

本現象について、WinUSBのインストールの失敗(infファイルの作成ミス)
なのか、そもそもEZ-USBでは、複数台を接続するには正しい順序が必要
なのか迷走しております。

どの順序でデバイスと接続しても確立させる方法について、
何かアドバイスを頂ければ幸いです。

A 回答 (1件)

解決方法を知っているわけではないですが


興味があったので何らかのヒントにでもなればと思います。

1)以前使ったときにはEZ_USBのドライバは複数台制御可能でした。
2)iSerialNumberが0の場合は、別のUSBポートにさすと毎回ドライバの
インストールが始まります。0以外の場合は、同じデバイスであれば
一度ドライバをインストールすれば別のポートにさしても
ドライバのインストールは始まりません。
(デバイスディスクリプタの変更とストリングディスクリプタの追加を意味します)

上記2点はあまり関係ないような気がします。

下記の確認をしてはいかがでしょうか
1)USBデバイスAをUSBデバイスBをさしているポートに接続すると
どうなりますか?
2)USBデバイスAとBのファームウェアの違いはありませんか?
3)BUS HOUNDなどのフリーのツールを使ってUSBのデバイス接続時の
やり取りを観測してはいかがでしょうか
URL http://perisoft.net/bushound/

ご検討お祈りしています。

この回答への補足

ご回答ありがとうございました。怪しい部分が分かってきました。
問題は、setupapi関数の使い方に誤りがありそうです。

確認事項の件ですが、

1)USBデバイスAをUSBデバイスBをさしているポートに接続すると
どうなりますか?

⇒ 順序関係が逆になります。
こうした場合、USBデバイスB -> USBデバイスAの順番でないと、
USBデバイスAが接続できなくなります。

2)USBデバイスAとBのファームウェアの違いはありませんか?

⇒はい、ありません。

3)BUS HOUNDなどのフリーのツールを使ってUSBのデバイス接続時の
やり取りを観測してはいかがでしょうか

⇒ BUS HOUNDの情報ありがとうございます。知識を深めるためにも、
  試させていただきます^^

補足日時:2013/05/21 12:55
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!