ページ 1 / 1
USBの信号検知について
Posted: 2007年4月19日(木) 14:09
by やっかい者
USBの+信号ピンに数ボルトの直流電圧かけた場合、それをプログラムで感知するWindowsAPI関数はあるでしょうか?信号のやり取りは別にしないのですが・・・(MFCは使いません、できればDirectXあたり)
USBの列挙とか、GET何とかでやりたいのですが・・・
ご教授ください。
Re:USBの信号検知について
Posted: 2007年4月20日(金) 08:50
by なぎ
おそらく、ユーザーサイドから検出することはできないと思います。
まず、USB の D+ には外部から電圧をかけてはいけません。
5V(通常、USB の電源)に対して、 1.5kΩの抵抗でプルアップします。
これによって、OS 側は、USB 機器が(ついでに言えば、High Speed で)接続されたことを認識します。
ですから、OS のどこかで、D+ が 1.5kΩでプルアップされたことは認識できていると思いますが。
ユーザーサイドで使うのは、その後、デバイスドライバ経由で、USB デバイスとして登録が終わった後のことになります。
Re:USBの信号検知について
Posted: 2007年4月21日(土) 21:16
by やっかい者
なぎ 様
回答ありがとうございます・・・
では、自前のUSBドライバーを開発することになるでしょうか?
汎用性のある又はD+端子を認識する代替(同等)のドライバーなどありましたら
ご紹介ください。
C言語からは、かなり離れた質問で恐縮です。
Re:USBの信号検知について
Posted: 2007年4月23日(月) 09:00
by なぎ
いずれにしても、D+ の状態を直接知ることはできないはずです。
USB ドライバへの接続までは OS がやってしまいますし、そのドライバを接続するためには、USB デバイスとして正しくデバイスの開始手続きを(USB デバイス側が)行う必要があります。
このために、少なくとも、ベンダーID(USB デバイスメーカーの識別)と、プロダクトID(具体的なデバイスの識別)が定義されていて、OSに通知される必要があります。
汎用的に使える USB のデバイスドライバとしては、
http://www.otto.to/~kasiwano/newpage17.htm
で紹介されているものが使えそうです。
Re:USBの信号検知について
Posted: 2007年4月23日(月) 14:43
by やっかい者
なぎ様
とにかく、貴重な情報ありがとうございます。
USBのD+端子にTTLレベルの信号が印加されたかどうかの有無、
それだけの目的ではつかえそうです、今は想像でしかものが言えませんが
自分のものにするには時間がかかりそうです。
とにかくお世話になりました。
Re:USBの信号検知について
Posted: 2007年5月07日(月) 08:23
by やっかい者
>デバイスの開始手続きを(USB デバイス側が)行う必要があります。
>このために、少なくとも、ベンダーID(USB デバイスメーカーの識別)と、プロダクトID
ご指示いただいた、この件ですが・・・
ご指摘通り個人レベルではIDをロムることはできないようです。
市販の最も安価なUSBを分解する事にします。
ありがとうございました。