※ ChatGPTを利用し、要約された質問です(原文:WinUSBを用いた複数デバイスとの接続について)
WinUSBを用いた複数デバイスとの接続について
このQ&Aのポイント
WinUSBを使ったデバイス接続において、複数デバイスを接続する際の問題と解決策について説明します。
複数台のデバイスを接続する際、接続順序によって接続の成否が異なる問題があります。具体的な順序や原因について説明します。
iSerialNumberの設定値を変更することで、接続の成否が改善する可能性があります。具体的な設定方法や現象の原因について解説します。
お世話になります。
デバイス(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では、複数台を接続するには正しい順序が必要
なのか迷走しております。
どの順序でデバイスと接続しても確立させる方法について、
何かアドバイスを頂ければ幸いです。
補足
ご回答ありがとうございました。怪しい部分が分かってきました。 問題は、setupapi関数の使い方に誤りがありそうです。 確認事項の件ですが、 1)USBデバイスAをUSBデバイスBをさしているポートに接続すると どうなりますか? ⇒ 順序関係が逆になります。 こうした場合、USBデバイスB -> USBデバイスAの順番でないと、 USBデバイスAが接続できなくなります。 2)USBデバイスAとBのファームウェアの違いはありませんか? ⇒はい、ありません。 3)BUS HOUNDなどのフリーのツールを使ってUSBのデバイス接続時の やり取りを観測してはいかがでしょうか ⇒ BUS HOUNDの情報ありがとうございます。知識を深めるためにも、 試させていただきます^^