USBの信号検知について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
やっかい者

USBの信号検知について

#1

投稿記事 by やっかい者 » 18年前

USBの+信号ピンに数ボルトの直流電圧かけた場合、それをプログラムで感知するWindowsAPI関数はあるでしょうか?信号のやり取りは別にしないのですが・・・(MFCは使いません、できればDirectXあたり)
USBの列挙とか、GET何とかでやりたいのですが・・・
ご教授ください。

なぎ

Re:USBの信号検知について

#2

投稿記事 by なぎ » 18年前

おそらく、ユーザーサイドから検出することはできないと思います。

まず、USB の D+ には外部から電圧をかけてはいけません。
5V(通常、USB の電源)に対して、 1.5kΩの抵抗でプルアップします。
これによって、OS 側は、USB 機器が(ついでに言えば、High Speed で)接続されたことを認識します。

ですから、OS のどこかで、D+ が 1.5kΩでプルアップされたことは認識できていると思いますが。
ユーザーサイドで使うのは、その後、デバイスドライバ経由で、USB デバイスとして登録が終わった後のことになります。

やっかい者

Re:USBの信号検知について

#3

投稿記事 by やっかい者 » 18年前

なぎ 様
回答ありがとうございます・・・
では、自前のUSBドライバーを開発することになるでしょうか?
汎用性のある又はD+端子を認識する代替(同等)のドライバーなどありましたら
ご紹介ください。
C言語からは、かなり離れた質問で恐縮です。

なぎ

Re:USBの信号検知について

#4

投稿記事 by なぎ » 18年前

いずれにしても、D+ の状態を直接知ることはできないはずです。
USB ドライバへの接続までは OS がやってしまいますし、そのドライバを接続するためには、USB デバイスとして正しくデバイスの開始手続きを(USB デバイス側が)行う必要があります。
このために、少なくとも、ベンダーID(USB デバイスメーカーの識別)と、プロダクトID(具体的なデバイスの識別)が定義されていて、OSに通知される必要があります。

汎用的に使える USB のデバイスドライバとしては、
http://www.otto.to/~kasiwano/newpage17.htm
で紹介されているものが使えそうです。

やっかい者

Re:USBの信号検知について

#5

投稿記事 by やっかい者 » 18年前

なぎ様
とにかく、貴重な情報ありがとうございます。

USBのD+端子にTTLレベルの信号が印加されたかどうかの有無、
それだけの目的ではつかえそうです、今は想像でしかものが言えませんが
自分のものにするには時間がかかりそうです。
とにかくお世話になりました。

やっかい者

Re:USBの信号検知について

#6

投稿記事 by やっかい者 » 18年前

>デバイスの開始手続きを(USB デバイス側が)行う必要があります。
>このために、少なくとも、ベンダーID(USB デバイスメーカーの識別)と、プロダクトID

ご指示いただいた、この件ですが・・・
ご指摘通り個人レベルではIDをロムることはできないようです。
市販の最も安価なUSBを分解する事にします。
ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る