C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: PC間のUSB通信について


(過去ログ 75 を表示中)

[トピック内 8 記事 (1 - 8 表示)]  << 0 >>

■44344 / inTopicNo.1)  PC間のUSB通信について
  
□投稿者/ yus (1回)-(2009/12/06(Sun) 05:20:49)

分類:[.NET 全般] 

プログラム(できれば.NETで欲を言えばC#)でPC間をUSB接続し、データのやり取りを行うアプリケーションを作成しようと考えています。

使用例としては、AとBのPCで、Aからあるバイナリデータ等を送信し、B側でそれを受け取り、処理をする。
というものを考えています。

これは可能なのでしょうか?
LANを使用したデータ通信はC#でできたのですが、USBでも出来ないかなぁと考えているところです。

以下のことが分からないです。
・まず、そもそもUSBケーブルをつないでやり取りができるのか?
PC同士をつないでデータ(ファイル?)のやり取りが出来るようになるケーブルが存在するようです。
参考URL:http://www.sanwa.co.jp/product/syohin.asp?code=KB-USB-LINK2K
普通のケーブルでPCをUSBでつなぐだけではお互い認識しないそうなので、
上記のようなケーブルを利用する必要があるのではないか?とも考えています。
ただ、この商品の説明を見る限りファイルの転送を目的としているので、バイナリデータを送って、
データによって処理を変える等を実現できるのかどうかが分からないので手を出せずにいます。

もしPC間通信が出来るのであれば↓

・PCをUSB同士でつないだ際、どちらがホストでどちらがクライアントなのかをどうやって判定するか?
予想では、ホスト側で使用するUSBポートにて、プログラムからデバイスの偽装を行う(?)ことで、
ホストとクライアントがはっきりするのではないか?と考えました。
たとえば、AのPCをBのPCにUSBキーボードと認識させ、A上のフォームのボタンを押すと、
キーボードの「a」をB上で押したことになるというような動作です。
これは出来るのでしょうか?ドライバを作れば出来る等の意見があれば助かります。

以上です。
よろしくお願いいたします。
引用返信 編集キー/
■44346 / inTopicNo.2)  Re[1]: PC間のUSB通信について
□投稿者/ 774RR (435回)-(2009/12/06(Sun) 07:09:03)
そういう疑問を持ったなら USB の仕様書なり技術解説書なりを入手するのが筋だと思うぞ。
http://www.usb.org/ から仕様書を入手できる。
日本語解説書が必要ならば、たとえば
USB コンプリート [第3版] インサイトインターナショナル株式会社

で、結論を言えば USB は「ホスト1台+ファンクション255台」の非対称ネットワークなので
ホスト同士を直接接続することは絶対にできない。
例示の転送ケーブルは、どちらの PC から見てもケーブルデバイスがファンクションに見えるという構成だ。
そういう装置を作らなければ USB で PC 2台を接続することはできない。
逆に、そういう装置を作れば、デバイスドライバ+アプリケーションソフトで例示のようなアクションは可能。
PC1 から USB 装置を見ると、キーボードに見える。
PC2 から USB 装置を見ると、出力装置に見える。
PC2 からデータ出力をすると PC1 にキー入力が届く。
引用返信 編集キー/
■44347 / inTopicNo.3)  Re[2]: PC間のUSB通信について
□投稿者/ れい (861回)-(2009/12/06(Sun) 07:49:56)
No44344 (yus さん) に返信
> ・PCをUSB同士でつないだ際、どちらがホストでどちらがクライアントなのかをどうやって判定するか?
> 予想では、ホスト側で使用するUSBポートにて、プログラムからデバイスの偽装を行う(?)ことで、
> ホストとクライアントがはっきりするのではないか?と考えました。
> たとえば、AのPCをBのPCにUSBキーボードと認識させ、A上のフォームのボタンを押すと、
> キーボードの「a」をB上で押したことになるというような動作です。
> これは出来るのでしょうか?ドライバを作れば出来る等の意見があれば助かります。

No44346 (774RR さん) に返信
> PC1 から USB 装置を見ると、キーボードに見える。
> PC2 から USB 装置を見ると、出力装置に見える。
> PC2 からデータ出力をすると PC1 にキー入力が届く。

同じようなことを考える人はいるもんですね。
私もPCにUSBキーボードの替わりをさせたくて、デバイスを作ってみたことがあります。

当時はドライバが自由に作れたのいろいろ試してみましたが、
シリアル入力でよいことがわかったのでUSB-RS232Cな変換機を買って誤魔化しました。

USBでデジタル入出力できるデバイスはいろいろ売っているので、
デバイスまで作っていいのでしたら双方向通信は簡単にできます。

キーボード準拠となるとハードウェアレベルで対応しないといけないので当時は面倒で、
USBキーボードを分解して電極を引き出し、それをUSB-デジタル入出力デバイスで制御するのが楽でした。

試作した装置は一応動いてましたが、
今は改造されてゲームキューブコントローラーに繋がれ、自動レベル上げ装置になってます…

引用返信 編集キー/
■44349 / inTopicNo.4)  Re[2]: PC間のUSB通信について
□投稿者/ yus (2回)-(2009/12/06(Sun) 12:47:45)
774RR さん
> そういう疑問を持ったなら USB の仕様書なり技術解説書なりを入手するのが筋だと思うぞ。
> http://www.usb.org/ から仕様書を入手できる。
> 日本語解説書が必要ならば、たとえば
> USB コンプリート [第3版] インサイトインターナショナル株式会社
了解致しました!ダウンロードしました(笑)仕様書が簡単に手に入るとは思っていなかったんで、今後は公開されているか確認しますね<(_ _)>

> で、結論を言えば USB は「ホスト1台+ファンクション255台」の非対称ネットワークなので
> ホスト同士を直接接続することは絶対にできない。
ですよね・・・なんとなくそんな感じはしてました。

> 例示の転送ケーブルは、どちらの PC から見てもケーブルデバイスがファンクションに見えるという構成だ。
> そういう装置を作らなければ USB で PC 2台を接続することはできない。
> 逆に、そういう装置を作れば、デバイスドライバ+アプリケーションソフトで例示のようなアクションは可能。
がんばってケーブル&ドライバを作ればできるってことですね!

ご意見ありがとうございました<(_ _)>
とりあえず仕様書とドライバについて調べてみます(^-^)
引用返信 編集キー/
■44350 / inTopicNo.5)  Re[3]: PC間のUSB通信について
□投稿者/ yus (3回)-(2009/12/06(Sun) 12:54:55)
> 同じようなことを考える人はいるもんですね。
> 私もPCにUSBキーボードの替わりをさせたくて、デバイスを作ってみたことがあります。
でしたか!できるんですねそういうことも。

> 当時はドライバが自由に作れたのいろいろ試してみましたが、
> シリアル入力でよいことがわかったのでUSB-RS232Cな変換機を買って誤魔化しました。
変換機は調べている最中にいくつか見つかって、確かにできそうな気はしました。

> USBでデジタル入出力できるデバイスはいろいろ売っているので、
> デバイスまで作っていいのでしたら双方向通信は簡単にできます。
デバイスも面白そうなんで作ってみたいですね(^-^)

> キーボード準拠となるとハードウェアレベルで対応しないといけないので当時は面倒で、
> USBキーボードを分解して電極を引き出し、それをUSB-デジタル入出力デバイスで制御するのが楽でした。
確かに、それが一番楽そうですよね。

> 試作した装置は一応動いてましたが、
> 今は改造されてゲームキューブコントローラーに繋がれ、自動レベル上げ装置になってます…
すごい使い方ですね・・・でも面白そうです(^-^)

ご意見ありがとうございました<(_ _)>
デバイスの作り方もがんばって調べてみます!
引用返信 編集キー/
■44351 / inTopicNo.6)  Re[3]: PC間のUSB通信について
□投稿者/ yus (4回)-(2009/12/06(Sun) 12:57:23)
皆様、貴重なご意見ありがとうございました。
できるかどうか?が目標だったので、できる!とわかった今、この質問は解決済みとさせていただきます。
解決済み
引用返信 編集キー/
■44354 / inTopicNo.7)  Re[1]: PC間のUSB通信について
□投稿者/ aetos (202回)-(2009/12/06(Sun) 21:00:19)
No44344 (yus さん) に返信

解決済みですが…

今後、個人でデバイスドライバを作るのは厳しくなります。
Vista 以降の 64bit OS では、デバイスドライバへの署名が必須になっています。
この署名は個人では取得できません。
引用返信 編集キー/
■44357 / inTopicNo.8)  Re[2]: PC間のUSB通信について
□投稿者/ 774RR (436回)-(2009/12/06(Sun) 23:26:03)
うんまあそういうことを言い出すと USB の VID なんかも個人で取得するのは困難だし
取得だけでなく維持し続けるのは費用対効果があがりそうにないし
技術的でない面での問題も山積みっつーことで。

そこをあえてチャレンジしてみるのが、漢と言うとか言わないとか。
# ということで解決済みに戻してみるテスト
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -