USBプログラミング入門

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
VC6.0でUSB機器を制御するプログラムを作成しないと
駄目なんですが、良い参考文献はないでしょうか?

現在ネックになっているのは同一IDを同時に制御する
方法です。どうやって振り分けるのかが分かりません。
2デフォルトの名無しさん:2006/11/07(火) 21:09:07
>>1
死ねよ
3デフォルトの名無しさん:2006/11/07(火) 21:09:57
>>1
掲示板のルールくらい守れ、ネット初心者のオタク君
4デフォルトの名無しさん:2006/11/07(火) 21:10:17
先日はRS232Cでしたね…。
もう自殺するがいいわ!
5デフォルトの名無しさん:2006/11/07(火) 21:10:52
>>1
糞スレ立てすぎ
6デフォルトの名無しさん:2006/11/07(火) 21:11:40
>>1
いちごびびえすに帰れ
7デフォルトの名無しさん:2006/11/07(火) 21:12:34
>>1
神保町に行けば買えるよ
明日買いに行ってき名よ
8デフォルトの名無しさん:2006/11/08(水) 00:13:09
.NETなら余裕なのに
9デフォルトの名無しさん:2006/11/08(水) 14:59:03
>>8
マジで?
10デフォルトの名無しさん:2006/11/09(木) 21:49:03
>>1
でらえもん調査局は死ね
11死ねはやめろ:2006/12/17(日) 23:36:45
なんで死ねが絶えないんだ!死ねはやめろ!!なんで死ねが絶えないんだ!死ねはやめろ!!死ねはやめろ!!
なんで死ねが絶えないんだ!死ねはやめろ!!なんで死ねが絶えないんだ!死ねはやめろ!!死ねはやめろ!!
なんで死ねが絶えないんだ!死ねはやめろ!!なんで死ねが絶えないんだ!死ねはやめろ!!死ねはやめろ!!
なんで死ねが絶えないんだ!死ねはやめろ!!なんで死ねが絶えないんだ!死ねはやめろ!!死ねはやめろ!!
なんで死ねが絶えないんだ!死ねはやめろ!!なんで死ねが絶えないんだ!死ねはやめろ!!死ねはやめろ!!
なんで死ねが絶えないんだ!死ねはやめろ!!なんで死ねが絶えないんだ!死ねはやめろ!!死ねはやめろ!!
なんで死ねが絶えないんだ!死ねはやめろ!!なんで死ねが絶えないんだ!死ねはやめろ!!死ねはやめろ!!
なんで死ねが絶えないんだ!死ねはやめろ!!なんで死ねが絶えないんだ!死ねはやめろ!!死ねはやめろ!!
なんで死ねが絶えないんだ!死ねはやめろ!!なんで死ねが絶えないんだ!死ねはやめろ!!死ねはやめろ!!
なんで死ねが絶えないんだ!死ねはやめろ!!なんで死ねが絶えないんだ!死ねはやめろ!!死ねはやめろ!!
12デフォルトの名無しさん:2007/02/17(土) 11:19:16
チェック
13デフォルトの名無しさん:2007/02/19(月) 21:45:50
>>1
でらえもん調査局は死ね
14デフォルトの名無しさん:2007/05/24(木) 23:39:39
参考図書

Windows XP デバイスドライバプログラミング [入門と実践]
Interface 2007年1月号 USBターゲット&ホスト 機器設計の完全理解

この2冊はUSBデバイスドライバを作るときに読んでおいたほうがよい。
15デフォルトの名無しさん:2007/06/13(水) 01:52:39
>>1ではありませんが今1から勉強しています。
複数のポートを指定して同時出力するにはどうしたら良いのでしょう?
PD0とPD1に2個のLEDのアノードをそれぞれ繋ぎ、カソードはそれぞれGNDに
繋いでいます

setportconfigを使って出力したいポートのビットを立てればおkなんでしょうか?
16デフォルトの名無しさん:2007/10/13(土) 21:08:55
はじめまして。

PCと携帯電話(au)をUSB接続して、アドレス帳やスケジュールの
データなどをやり取りするアプリケーションを作成したいと
思っています。

データ通信の仕様を調べるために、市販のアプリと携帯を
繋いでデータをモニタリングしたいと思うのですが、モニタ用
ソフトなどありましたら教えてください(できればフリーがいいです)。

それから、上記の通信をアプリで行うためには、シリアル
通信ができればよいのでしょうか?

どなたか教えてください。よろしくお願い致します。
17デフォルトの名無しさん:2007/10/17(水) 23:24:36
はじめまして
18デフォルトの名無しさん:2007/10/18(木) 00:31:56
よくわかりません。おしえてださい
19デフォルトの名無しさん:2007/10/18(木) 03:43:58
汎用USBドライバUUSBD.DLL
http://www.otto.to/~kasiwano/newpage17.htm
20デフォルトの名無しさん:2007/11/23(金) 10:01:19
      o。_。_lコ<o>     |l≡≡≡|ミ|__。≠_〇o
 。+ +。。。。。 |l|FFFFFFF|。 。 .。 +|l≡≡≡|ミ|EEEEEEEEEEE|lll| .。+
  * o  o.   |l|FFFFFFF / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     。。oo  |l|FFFFFF | 職も彼女も見つからないうちにもう12月か…
   /| ̄ ̄ ̄l ::|FFFFFFF \
   |ミ|:」」:」」:」| ::|FFFFFF     ̄|/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   |ミ|:」」:」」:」| 〇 FF.。   ∧_∧  |l≡o + +! + 。 〇   +
   lミl.」」.」〇 ++ +  (´・ω・) o  〇 。 o  +   〇 。 +
  __〇___。_゚__/ ~つと)____o______〇__o___。
  二Il二Il二Il二Il二Il二Il二Il二Il二Il二Il二Il二Il二Il二Il二Il二Il二Il二Il二
21デフォルトの名無しさん:2007/11/30(金) 13:24:18
プロメテウスvsmに入ってるUSB評価ボードのシミュレータ
を使えば理解も早い。
ボードを実装しなくてもいいってのはでかい。
22デフォルトの名無しさん:2008/02/17(日) 03:37:13
質問しようとスレ検索したらこんなんかいw

ReadFile() 使って USB デバイスから到着するデータパケット (で良いのかな? 用語不詳) を
読み込んでるんですが、まぁ具体的には読み込みを別スレッド化してキュー経由で取り出せる
ようにしてみたんですけどね。読み込みが I/O ブロックに入ってしまうと同じハンドルの WriteFile()
もブロックされてしまうようになって転送中断も終了も出来なくなります。

I/O ブロックに入らないよう WaitForSingle/MultiObject() で確認しようと思ったのですが、USB デバ
イスのハンドルだとシグナル状態がないのか、うまく機能してくれないようで。何かオプションとか
間違ってるんでしょうか?

// オープン
CreateFile(device_path, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

// 読み込み (2種類)
#define IOCTL_ASYNC_IN CTL_CODE (FILE_DEVICE_UNKNOWN, 0x850, METHOD_BUFFERED, FILE_ANY_ACCESS)
ReadFile(handle, temp, MAX_BUFFER_SIZE, &length, NULL);
DeviceIoControl(handle, IOCTL_ASYNC_IN, 0, 0, temp, sizeof(temp), &length, NULL);

// 書き込み
WriteFile(handle, buffer_array, length, &dummy, NULL);
23デフォルトの名無しさん:2008/02/17(日) 12:11:19
>>22
デバドラのスレッドで質問した方がいいとは思うが、
それ以前に君ってWin32APIレベルの理解がかなり怪しいんじゃないの?

その調子で質問したらどこ行っても「まず勉強しろ」と一蹴される気がするよ。
24デフォルトの名無しさん:2008/02/17(日) 12:22:23
確かに MS 系でゴリゴリ書いてたのは 95/98 くらいまでだけどそんな怪しいかね?
オプション確認してもらいたかったんだが知らない人には丸投げしてるようにも見えるかな。
25デフォルトの名無しさん:2008/02/28(木) 01:26:28
>>22
オーバーラップ
26デフォルトの名無しさん:2008/08/19(火) 09:25:07
libUSBってgnuライセンスですよね?

これって、アプリにlibUSBのlibをリンクしたら、アプリのソース公開でつか?
27デフォルトの名無しさん:2008/08/19(火) 14:33:00
LGPLなので非公開でも大丈夫です
2826:2008/08/19(火) 14:39:42
サンクス。
じゃ、使いまつ。
29デフォルトの名無しさん:2008/11/15(土) 12:20:32
いまさらな書き込みだがUSBインターフェースつきの基板の場合
内部ではCPU等が標準で持っているシリアルインターフェースに
USB-シリアル変換器を組み合わせているというタイプも多い。

この場合パソコンとの接続は仮想COMポート経由ということになるため
この部分で自動的に区別がつくことになる(1台目はCOM3、2台目はCOM4のように)

ただしコールドスタート時から接続しておく場合は
どちらがどちらに割り当てられるかケースバイケースということになりかねないため
接続を確認する処理の中で個々の識別ができるような仕掛けが必要となる。
30デフォルトの名無しさん:2009/04/19(日) 05:39:05
USB デバイス繋げて遊んでるんですけど、USB 機器の差し込み口を変えて再実行すると
コンフィギュレーションの指定のところで失敗します。元の差し込み口に差し直して
再実行すればうまく行くんですけど。

(*dev)->SetConfiguration(dev, confDesc->bConfigurationValue);

これが kIOReturnNotOpen を返しますが USBDeviceOpen() から GetNumberOfConfigurations(),
GetConfigurationDescriptorPtr() まで kIOReturnSuccess が戻るのは確認しています。

http://developer.apple.com/DOCUMENTATION/DARWIN/Reference/IOKit/IOUSBLib_h/Classes/IOUSBDeviceInterface/index.html#//apple_ref/doc/com/intfm/IOUSBDeviceInterface/SetConfiguration

今書いているのは MacOS X 10.5 ですが、Win98 の頃から差し込み口を変えただけで
ドライバの再インストールが始まったり認識できなくなったりするデバイスをたまに
見るんですけど、これってそもそも USB の特性なんでしょうか?
31デフォルトの名無しさん:2009/04/19(日) 13:10:29
>>29
ものすごい遅レスだけど、デバイス内部のCPUとUSBコントローラの接続が
UARTだからといってデバドラがVCPとは限らないだろw
その2つのインターフェイスは全然無関係だし。

具体例を言うとFTDIのFT232系統を見れば分かるけど
32デフォルトの名無しさん:2009/04/19(日) 22:17:10
まあ、生の UART を Windows で使う時だってデバドラが Comm
ドライバとは限らんわけだが。

そんなこといちいち指摘したい年頃なのか?
33デフォルトの名無しさん:2009/04/19(日) 22:43:32
>>32
それ自分で言ってる意味わかって言ってる?
ていうか生のUARTって何のことよ?w

それはともかく、「そんなこと」どころではなくて、
>>29の言ってることは大間違いなんだけど。

>>29本人かどうか知らんけど、「間違いを犯す」ことより「自分の間違いを認められない」
ことの方を恥ずかしいと思うべきだと思うぞ。
34デフォルトの名無しさん:2009/04/19(日) 23:49:37
> ていうか生のUARTって何のことよ?w

わからんのなら ROM ってろよ。
そもそも5ヵ月も前のレスに間抜けな指摘してる方が恥ずかしいと思うぞ。
35デフォルトの名無しさん:2009/04/20(月) 00:22:39
なんか哀れなお馬鹿さんだな。
まあこういう可愛くない馬鹿を見ると追い込みを掛けたくなる俺も病気だなw

>>34
まあ罵倒はいいから、弁解なり反論なりをしてくれない?
生のuartって何?commドライバって何?

既に示したとおり、理屈上も現に存在する製品としても[CPU]⇔[USB コントローラ]
間のインターフェイスと[USBデバイス]⇔[PC]間のインターフェイスに直接の関連はなく、
前者がUARTだからといって後者がVCPである必要は何もない事実と、>>29のレスが
どう整合するの?

もちろんできないならいいよ無理しなくても。
36 ◆0uxK91AxII :2009/04/20(月) 03:01:59
見ている第三者が恥ずかしいわ。
37デフォルトの名無しさん:2009/04/20(月) 03:54:46
自称第三者はいいよw
38デフォルトの名無しさん:2009/04/20(月) 06:28:21
> 前者がUARTだからといって後者がVCPである必要は何もない事実

別にそれが間違ってるなんて書いてないだろ。
わざわざ指摘するほどのことかって言ってるだけ。

ちょっと冷静になった方がいいぞ。
39デフォルトの名無しさん:2009/04/20(月) 06:36:55
第三者だけど煽っといて冷静になれはねぇな。
40a36 ◆K0BqlCB3.k :2009/04/20(月) 11:25:23
俺はそんな細かいことは気にしないぜ
ここは神経質なスレだな
41デフォルトの名無しさん:2009/04/25(土) 15:39:27
Windows で PC に接続している USB 機器を列挙してデバイス、コンフィギュレーション、
インターフェース、エンドポイントなんかのディスクリプタ情報を取りたいんですけど、
SP_DEVINFO_DATA からどうすればそれらを取得できますか?

HDEVINFO hDevInfo = SetupDiGetClassDevs(
  NULL, "USB", NULL, DIGCF_ALLCLASSES | DIGCF_PRESENT);
while(SetupDiEnumDeviceInfo(hDevInfo, i, &devInfoData)){
  /* ??? */
}
42デフォルトの名無しさん:2009/05/02(土) 10:30:30
何で MaxPower だけ b 付いてないの?
43デフォルトの名無しさん:2009/05/06(水) 15:45:22
一番メジャーなオープンソース汎用 USB ドライバって何ですか?
44デフォルトの名無しさん:2009/10/13(火) 17:31:53
libusb-win32
のinfファイルって、
何で
>Class = LibUsbDevices
なの?
45デフォルトの名無しさん:2009/10/14(水) 19:32:09
ClassGUID
ってどうやって番号発行するの?
46デフォルトの名無しさん:2009/10/14(水) 19:58:29
デバイス側の作り方も知りたい
47デフォルトの名無しさん:2009/10/15(木) 14:53:39
Arduinoいいお
48デフォルトの名無しさん:2010/05/09(日) 00:24:10
このスレで質問してもいいのかな

自作のHIDキーボードをPCに繋いで、
Windowsのデバイスマネージャの該当プロパティを見ると、
電源管理タブが表示されず
「このデバイスで、コンピュータのスタンバイ状態を解除できるようにする」
のチェックができないんだけど、
何が足りないのかな。
一応、デスクリプタのattributesの
remote wakeupフラグは立ててるんだけど。
49デフォルトの名無しさん:2010/05/09(日) 00:39:27
>>48
PC側のBIOS設定で禁止されてるとかね。
あるいは、デバイスがバスパワーで(キーボードだからたぶんそうだと思うけど)、
かつBIOSの設定で省電力モード時USBに給電しない設定になっている(というより、
デフォルトでそうなってるマシンが多い気がする)とか。

まあ電気・電子板で聞いた方がいいのかもね。
半年以上休眠してるスレで質問してもw
50デフォルトの名無しさん:2010/05/09(日) 01:18:39
ありがとうございます。
とりあえず会社のマシンとかで試してみます。
51デフォルトの名無しさん:2010/05/09(日) 03:31:51
>>49
試しに他のPCでやってみたら出てきました。
デスクリプタの設定自体は正しかったようです。
ただ、実際に復帰するにはホストデバイス間の通信と、
デバイスの信号や電源周りを含め処理しないとだめらしく、
想像より敷居が高いと判りました。
まともなデバッグ環境がないと実装は無理そうです。
52ぷれ:2010/05/13(木) 10:10:05
始めまして、今、マスストレージに対応していないUSBデバイスを
マスストレージに対応しているかのように見せるようなドライバを作成したい
と思っています。(USBを接続するとドライブのように見えるイメージです)
何か参考になりそうなサンプル、
ドキュメント等ご存知でしたら教えてくれませんか?


53デフォルトの名無しさん:2010/05/13(木) 14:11:11
V-USBいいお
54ぷれ:2010/05/14(金) 14:08:31
>>53 ありがとうございます。
もしかしてLinuxのドライバですよね。

環境書いていなくてすいません。
Windows WDMで書きたいのです。。。。

55デフォルトの名無しさん:2010/05/14(金) 14:17:20
あなたへのレスではなかったのですが・・・
56ぷれ:2010/05/14(金) 15:38:59
>>55 そうでしたかすいません。
57デフォルトの名無しさん:2010/05/25(火) 08:56:35
分け合ってUSBを延長する必要があります。
LANケーブルを使用した延長器でトライしたのですが線長が長くなり通信が安定しません。

アイオーデータのETG-DS/US+無線LANを使用してnet.USB経由にしようかと思いましたが、
最終的な接続先がマイコンのため、net.USBが使用できません。


パソコンでUSBの中継をするようなツールご存知ないでしょうか?


ETG-DS/US → Ethernet → PC(net.USB) → マイコンのUSB I/F
                    -----------

仮想USBであるnet.USBからUSB物理ポートへデータを吐き出す…。
いわば、USBのブリッジみたいなツールがほしいのですが。

58デフォルトの名無しさん:2010/05/25(火) 09:14:16
ないよ
多分LAN対応したマイコン同士を繋いだ方が早い

USB → マイコン1→ 無線LAN → マイコン2
5957:2010/05/25(火) 09:26:58
>>58

ありがとうございます。

やはり、ないですかぁ。

今回、図でいうとマイコン2が、購入品のため手を加えられません。
60デフォルトの名無しさん:2010/05/25(火) 09:32:02
PCに挿せるような環境なら、そのPCを遠隔から操作すりゃいいんじゃない?
61sage:2010/05/25(火) 09:57:58
「PC」じゃなくて「マイコン」って書いてるんだから分ってやれよ。
> LANケーブルを使用した延長器でトライしたのですが線長が長くなり通信が安定しません。
コレガの安っちいのじゃなくてBlackBoxの奴なら行けるかも。
6257:2010/05/25(火) 10:00:43
もともとUSBで直接PCに接続している信号を、置き換えを行うためマイコンで擬似信号を付加して、
PCに戻す装置なので、ハードが必要となります。なので、PC上に載せられないのです。
63デフォルトの名無しさん:2010/05/25(火) 10:00:53
そもそもPCのUSBってデバイス側にはなれないと思うよ
マイコン2がいじれないなら
USB → マイコン3 → 無線 → マイコン1 → USB → マイコン2
とか
64デフォルトの名無しさん:2010/05/25(火) 10:03:56
Arduino使えばいいよ
6557:2010/05/25(火) 10:08:31
やはり、デバイス側になれないということでソフト的に何とかしようというのは、無理っぽいですね。
ありがとうございます。
66デフォルトの名無しさん:2010/05/25(火) 10:34:17
ああ、マイコンがUSBホストなのかw
最終的な接続先がマイコンとか矢印の向きで、マイコンがデバイス側なのかと思ってた。
67デフォルトの名無しさん:2010/05/25(火) 11:40:16
Dだけ光にすればいいじゃん?
長さと金額にもよるだろうけど
68デフォルトの名無しさん:2010/05/25(火) 19:04:39
>>57

- USBはルートハブを入れて6段まで接続可能
- USBハブはレピータでもある
- ノード間のケーブル長は規格上は5mまで(実際は高品質のケーブルならもっといける)

以上は知ってるんだよね?
つまり、ごく普通に30mは引き回せるってことだけど。

あと、まんまUSBの物理層を無線にするものも売ってるよ。
69デフォルトの名無しさん:2010/05/26(水) 08:00:03
試しにUSBロングケーブルでぐぐったら20mとかいうのが出てきた。
70デフォルトの名無しさん:2010/05/27(木) 10:46:19
オシロで先頭と数十mぐらい引き伸ばした先を計ったら
劣化して見えるのかな
D+D-両端にバッファ(74VHCU04とか)付けるとかで改善しない?
71デフォルトの名無しさん:2010/05/27(木) 17:27:04
I2Cと似た半二重だからバッファかますの無理じゃね?
72デフォルトの名無しさん:2010/05/27(木) 20:45:15
単純に双方向にするだけだから、理論的には不可能じゃないけど(現にI2Cの場合は既製品であるし)
USBの周波数に追従するバッファってどんだけーって気はする。
差動だけにタイミング余計シビアだよな

というか、だから普通にハブを使っとけと。
73デフォルトの名無しさん:2010/05/27(木) 23:11:44
そうだね。ハブ中継なら遅延は起きても劣化は無視できる
74デフォルトの名無しさん:2010/05/28(金) 06:08:20
信号側の電圧上げてやればいいんじゃね?
75デフォルトの名無しさん:2010/05/28(金) 20:58:11
電力伝送してるわけじゃないから電圧とかそういう問題じゃないのw
76デフォルトの名無しさん:2010/05/29(土) 00:09:31
>>75
無知すぎw
77デフォルトの名無しさん:2010/05/29(土) 00:17:00
馬鹿かコイツ。
じゃあ仮に意味があるとして、どうやって電圧上げるんだよ。
78デフォルトの名無しさん:2010/05/29(土) 15:54:20
教えてくんかよ
79デフォルトの名無しさん:2010/05/31(月) 22:44:10
Through
80デフォルトの名無しさん:2010/09/26(日) 10:09:39
亀レスだけど、LANケーブル使うやつで安定しないのは
PCの電力供給能力が低いからじゃない?
ハブ多段につなげる場合でも、
電力供給用にセルフパワーハブ入れるのは必須な感じ。
81デフォルトの名無しさん:2010/09/26(日) 16:34:52
3ヵ月後にレスされても見てないだろうな
82デフォルトの名無しさん:2011/02/28(月) 22:18:01.85
83デフォルトの名無しさん:2011/03/07(月) 01:57:43.36
usb over tcp/ip 作ってみたいんだけど、
どっかにusbの規格書とか、分かりやすいusbドライバのソースとか落ちてない?
84デフォルトの名無しさん:2011/03/07(月) 08:41:40.68
規格書ならusb.orgにあるよ
WindowsならWDK落としてくればサンプルソースついてる
85デフォルトの名無しさん
>>84
サンクス
ちょっと調べてみる