USBドライバーって
■ このスレッドは過去ログ倉庫に格納されています
0001よっち
NGNG最近、USBドライバを作らないといけなくなったのですが
C++ビルダー5でUSBドライバを作ることはできるのでしょうか?
ネットで調べた限りではVC++でDDKを使ってつくるとしか載っていなかったので
おそらくダメだとは思いますけど・・・
初心者質問ですみませんがよろしくお願いします。
m(__)m
0002デフォルトの名無しさん
NGNG0003デフォルトの名無しさん
NGNG| | |
( ゚д゚)ドカーン
0004デフォルトの名無しさん
NGNG0005デフォルトの名無しさん
NGNG0006デフォルトの名無しさん
NGNG単発質問スレは避け、下記の総合スレまたはそれぞれの専用スレでお願いします。
***すれ立てるまでもない質問はここで 第13刷***
http://pc.2ch.net/test/read.cgi/tech/1018752281/l50
0007デフォルトの名無しさん
NGNGhttp://www.google.co.jp/search?hl=ja&q=USB+%83h%83%89%83C%83o+%8AJ%94%AD&lr=lang_ja
Linux で USB ドライバを作ってみたいんだけど、サンデープログラマーでも
作れちゃうものなの?
あと、h/w のアーキテクチャ (x86, Alpaha, PowerPC, etc...) も勉強する必要
ある?
0008デフォルトの名無しさん
NGNGDelphiとVBとHSPのスレばっかり立つので飽きてきてる。
漏れは毛色の違うスレの伸びに期待したいところ。
反デルとかそういうのじゃなくて変化が欲しいね。
0009デフォルトの名無しさん
NGNG0010デフォルトの名無しさん
NGNGhttp://pc.2ch.net/test/read.cgi/linux/1002630729/
0011デフォルトの名無しさん
NGNG仕事ならなおさら、Builderで動かそうとする時間自体もったいない。
とりあえず、DDKのサンプルをごちゃごちゃいじれば、一応動くモノは
できるよ。
以上、USBドライバは一応作ったことのあるDel厨でした。
0012デフォルトの名無しさん
NGNGただし↑の方が実は難しいという罠。
/usr/src/linux/drivers/usbとかの下を見て、適当にアレンジすればよいと思う。
(どれも高々500行程度なのでいくつか読んでれば書き方のパターンが見えてくる)
内部解説が欲しい場合ははオライリー「Linuxデバイスドライバ」とusb.hを見るべし。
USBプロトコル仕様はInterface増刊とかに載ってる。ここにはLinuxサンプルドライバも
載ってるが、あまり見ないほうが良い(w
h/wの違いはLinux側で吸収してくれるので考慮する必要は無し。…と思う。
以上、健闘を祈る。
0013デフォルトの名無しさん
NGNGthanx!
0014デフォルトの名無しさん
NGNGもう一つのパソコンのソフトでジョイスティックの入力をまねることは出来ますか?
0015デフォルトの名無しさん
NGNGいまいち意味が伝わらないが、
ようするにリモートコントロールをしたいってことか?
0016デフォルトの名無しさん
NGNGレスありがとうございます。
説明が悪かったようですね。
>ようするにリモートコントロールをしたいってことか?
はい。リモートコントロールがしたいのです。
ただし、リモートコントロールの対称のソフトにはUSBのジョイスティックも
つなげれるようにしたいのです。
そこで今お尋ねしたいことは、リモートコントロールの操作を行うソフトがある
パソコンのUSBから、USBのジョイスティックの様な出力を行う事が
できるのかということです。
0017デフォルトの名無しさん
NGNG正しい日本語、正しい漢字でお願いします。
0018デフォルトの名無しさん
NGNGすいません。
対称->対象
これでいいですか?
0019デフォルトの名無しさん
NGNGよくないけど、まぁ、理解できなくもないけど。
とりあえずUSBケーブルを眺めてPC同士がつながるかどうか
ためしてみませぅ。
0020デフォルトの名無しさん
NGNG漁ったらこんなん出てきた↓。
____________________________________________________________
int main()
char Buffer[256];
HANDLE hUsb;
hUsb = CreateFile(
"\\\\USB0", // USB1,USB2,USB3・・・・
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL
);
if (hUsb == INVALID_HANDLE_VALUE)
{
return NULL;
}
DWORD rb;
ReadFile(hUsb, Buffer, 256, &rb, NULL); // receive
WriteFile(hUsb, (LPVOID)Buffer, 256, &rb, NULL); // send
CloseHandle(hUsb);
return 0;
}
0021デフォルトの名無しさん
NGNGここに「USB ←→ USB ネットワーク」と書いてあるので
USBでパソコン同士を接続することはできると思うんですけど、
出来ないのですか?
http://linux.nikkeibp.co.jp/column/inflection/6/usb3.html
0022デフォルトの名無しさん
NGNGここのページで少し勉強していたんですが、
USBには4種類のプロトコルがあり、ジョイスティックなども
そのプロトコルの内のどれかを使うことによってデータを送信
しているわけですよね?
ということは、同じプロトコルを用いて通信すればパソコンからの
出力でジョイスティックの操作の代わりが出来ると思うのですが
どうですか?
0023デフォルトの名無しさん
NGNGUSBはバスあたりホストノード(パソコン)1台となります。
USBクロスリンクケーブルはデバイスノードが2つありそれぞれ
論理的にアイソレートされています。
パソコン間をUSBで接続するには専用ドライバが必要にないります。
002422
NGNGということは、ジョイスティックを接続するのとは違うということですね。
それでは、ジョイスティックが差されているのか、他のパソコンが差されているのかを
ソフトで判断し、それぞれに合わせた処理を行わす事は出来るのでしょうか?
それとも、別々のプログラムとして作成しなくてはならないのでしょうか?
あと、どのようなことがやりたいのかもう少し具体的に説明しますね。
僕がやりたいことは、ヘリコプターをコンピュータで制御することです。
で、実機で実験していては壊れたら大変なので、まずヘリコプターのシミュレータ
を作成します。で、もう一つのパソコンからUSBを用いて制御するソフトを
作成しようと思っています。
その時、人間の操作とコンピュータの制御との比較を行いたいので、
プロポ(ラジコンの操作するやつ)型のジョイスティックとコンピュータを取り替え
れるようにしたいのです。
002522
NGNGここを見ていると、どうやらパソコン同士を接続するためには
特殊なUSBケーブルが必要なようですね。
002623
NGNG22とかぶってしまいました。23はクロスリンクケーブルのことのみです。
ヘリコプター版CCVですか?かなり主観が入ってますが3つの問題点があります。
�@デバイスドライバを自分で作成するレベルがあればどのような組み合わせ
実現可能です。経験がなければ、かなりの工数を取られます。
�AヘリのシミュレータとJOYエミュレータのソフトを自分で制作するなら
API(DirectX等)を1まいラッピングしたクラスを定義して
ラッパーをアプリケーションのインターフェースとします。(結構思いつきですが)
ラッパーを交換するとによりJYOとJYOエミューレータの切り替えを行います。
ラッパーの作成はC++などの経験が多少必要かも知れません。(Cで組めなくないが)
制御シミュレーションソフトにMatlabなど使うとこの方法はとりにくいと思います。
�Bパソコンは人命にかかわる機器を制御できません。(たとえ模型のヘリと
いえども)パソコン周辺機器についても同じことが言えると思います。
シミュレータはまったく問題ないと思います。
(ジョイステックでヘリのシミュレーションをするだけなら
MS Flight Sim.で十分ですが・・・)
002723
NGNG確かI/O-DATAでも同じような商品を出していたと思いますが
ドライバはUSBドライバでなく、LANドライバになってたと思います。
(下の層はUSBドライバでしょうけど)
0028デフォルトの名無しさん
NGNGジョイスティックだから、、そんなにデータは流さないでしょ・・・
0029デフォルトの名無しさん
NGNG003022
NGNG>>26
こういうことをCCVというんですね、勉強になりました。
Googleで調べて参考にしてみます。
>>�@
確かに工数が問題ですね。
USBの部分より他のことに力を入れたいのであまり工数が掛かりすぎる
のはいけませんね。
>>�A
C++の経験はあります。というか、C++とJAVAくらいしかわかりません。
やはり、ラッパーを交換するような形になりますかね。
>>�B
同意です。
自分の乗っている飛行機がWindowsで飛んでいたらかなりいやですね。
>>28
それもそうなんですけど、自分のプログラミングの技術の向上になると
思うので。
それとも、USBはあまり将来性がないのでしょうか?
>>29
TCP/IPではジョイスティックを差したりは出来ないですよね?
たぶん、パソコン同士の接続の部分について言ってるんだと思いますが。
間違っているかもしれませんが、TCP/IPではアナログな機器の制御
などはできませんよね。
最終的に実機のラジコンヘリを制御したいわけで、パソコンからの出力
をプロポの出力に変換する必要があります。
この時TCP/IPではできないと思うのです。
というか、TCP/IPなどはもっと上位の部分でなんか違う気がするんですけど。
0031デフォルトの名無しさん
NGNGTCP/IPによるコントロールを実装したクラスを作って、
統一的に扱えるようにしろって事じゃないの?
003222
NGNGってことは、26さんが言ってるのとおなじようなことですね?
つまり、シミュレータ側にコントローラとTCP/IPを扱うクラスの二つを
作り、状況に合わせて切り替えられる用にする。
また、制御する側にも二つのクラスを作り、シミュレータを用いる時と
実機を操作する時で使い分けるということですね。
TCP/IPのプログラミングはやったことがあるので、パソコン同士の
接続はこれが一番楽だとは思います。
あまり良い解決策がみつからなければ、この方法を用いるかもしれません。
ただ、美しくないというか・・・。
USBだけで済ませられる方がかっこよくありませんか?
あと、純粋にUSBではどのようなことができるのか知りたいってのもあります。
0033デフォルトの名無しさん
NGNGだったら、USBコントローラから自作しろよ。
0034デフォルトの名無しさん
NGNG「美しくない」 なんて言葉は、最後まで作り上げたものだけが吐ける台詞だ。
まず作れ。 で、あとでうまい方法思いついたら差し替えられるようにしとけ。
0035デフォルトの名無しさん
NGNG(というか、ドライバ2つ作るから面倒)だから、
プロトコルを変換するハードを作って、
シミュレータがあるPCにはUSBコントローラと認識させて、
コントローラ側のPC用のドライバだけ書き上げるのがいいんじゃないか。
003622
NGNG来ると思ってました。
こういうやりとり今まで見てきましたけど、あまり2chで発言しないんで
自分がその立場になるのは、うれしいというか・・・。
期待どうりの答えが返ってくるのはなんかおもろいです。
それから、31さんの意見とかは参考にしてます。
ただ、スレッドのタイトルからUSBに話を持っていった方が有益かと
思われたので。
USBコントローラ自作するのは厳しいので遠慮します。
003722
NGNG>>34
そうですね。すいません偉そうなことを言って。
シミュレータの部分は作りかけています。
とりあえず、自分のできる所から作って行こうと思います。
話変わりますけど、今はなんとか動く物が作れるだけで、
メンテのしやすさとか、そういったものまで考えた
プログラムを作るのは難しいですね。
本当はフローチャートとか作成したりしてきっちりとした仕様を
作った方が良いんでしょうけど、いきあたりばったりで作っているんで
クラスの仕様の変更とか良く起こります。
まだまだ、勉強が必要ですね。
>>35
ホストへの転送として送られたものをエンドポイントへの転送に変換し、
また、その逆を行ったりするということでしょうか?
003823
NGNG厳密に言うと、CCVとは能動制御を前提とした機体または機体設計のことを指します。
能動制御装置(ACTIVE CONTROLER)の制御定数を触り、状態変数を観測して
チューニングするのが目的(?)なので装置は下の構成になると思います。
�@人間の操作を記録
human pc1 pc2
[joy]--USB/MIDI--[--recorder-->ACTIVE CONTROLER-]->[ Fli.Sim.]->[CRT]
�A人間の操作を再生(チューニングモード)
[ player-->ACTIVE CONTROLER-]->[ Fli.Sim.]->[CRT]
�B本番(or 製品)
human pc1
[joy]--USB/MIDI--[-- pass -->ACTIVE CONTROLER-]->[propo]->[servo]->[airplane]
このACTIVE CONTROLERとrecoder/playerのソースを自作する限りUSBコントローラ/MIDI
ポートに関する知識は不要です。むしろDirectInputの方が重要だと思います。
蛇足ですが多くの(ある種の?)制御屋は、Ethernet&TCPIPで物を制御し動かす
ことを好みません。使う場合は情報系と制御系を分離しています。
0039デフォルトの名無しさん
NGNGIPで操作を嫌う理由って何?
速度とかコネクションがいつ切れてもおかしくない仕様だから?
0040SH3
NGNGどこかで公開していませんか。
あちこちのオープンソースのサイトを探してみたのですが、発展途上でどこも
公開をしてくれていないのですね。
だれか、知っている人いませんか。
■ このスレッドは過去ログ倉庫に格納されています