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

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

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

USBメモリ化の方法

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

■86038 / inTopicNo.1)  USBメモリ化の方法
  
□投稿者/ 夜叉丸 (86回)-(2017/12/14(Thu) 08:40:37)

分類:[.NET 全般] 

Windows7 C# .Net VisualStudio を使用しています。

WindowsパッドをUSBメモリのように使用したいのですが
どのようにプログラムを作成すればよいでしょうか?

具体的に
1.WindowsパッドにUSBで接続すると相手側でUSBメモリに接続したのと同じ動作にする。
2.Windowsパッド側では送信したいものだけが相手に見えるようにしたい。
ということです。



引用返信 編集キー/
■86039 / inTopicNo.2)  Re[1]: USBメモリ化の方法
□投稿者/ ぽぴ王子 (51回)-(2017/12/14(Thu) 09:16:17)
ぽぴ王子 さんの Web サイト
※回答ではありません。というか、この文章(質問とも言い難い)では回答は無理だと思います。

No86038 (夜叉丸 さん) に返信
> WindowsパッドをUSBメモリのように使用したいのですが
> どのようにプログラムを作成すればよいでしょうか?

まず「Windowsパッド」とは何を指していますか?
夜叉丸さんだけがわかる用語ではなく、他の方が聞いて「なるほどあれね」とわかるような
用語を使ってください。

「USBメモリのように」も、その一言ではたぶん誰にも伝わらないので、もう少し具体的に
どうしたいのか、伝わるように書いてください。

> 具体的に
> 1.WindowsパッドにUSBで接続すると相手側でUSBメモリに接続したのと同じ動作にする。
> 2.Windowsパッド側では送信したいものだけが相手に見えるようにしたい。
> ということです。

具体的に書いてくださっていますが、問題は「相手側でUSBメモリに接続したのと同じ動作」が
大雑把すぎて、いったいどういった動作を求めているのかが伝わらないのです。
「送信したいものだけが相手に見える」というのも、少なくとも私にはわかりませんでした。

何度も言いますが、もう少し他の方に伝わるような文章に噛み砕いて書いてくださいませんか。
そうしないと回答がつかないか、回答を得られるまでに無駄なやり取りが何度も何度も発生する
ことになってしまいます。
(環境を書けとおっしゃる方もいますが、それは今回は関係ないです)

引用返信 編集キー/
■86060 / inTopicNo.3)  Re[2]: USBメモリ化の方法
□投稿者/ 夜叉丸 (87回)-(2017/12/15(Fri) 09:06:21)
No86039 (ぽぴ王子 さん) に返信

説明が悪くてすみません。

>まず「Windowsパッド」とは何を指していますか?
Windowsプログラムしか作ったことないので、
Windowsでプログラムを作成できるタブレットPCのことです。
アップル用とか、Webのプログラムとかは作ったことないので
VisualStudioで作成できる c# .net のアプリケーションが
動作できるものです。


>「USBメモリのように」
例えば、サーフェイスを使用したとします。
今回作成するプログラムが動作するのはこのサーフェイスということになります。
このサーフェイスにUSBケーブルの片側をつなげてもう片方を相手側につなげるように
接続を行います。

相手側をデスクトップパソコンと考えた場合、
実際はパソコンではなく機器になるので、プログラムを作成して
動作させることができませんし、この機器を私は見たこともありません。
なので、USBメモリと同じ動作をするものを作ればいいのかと思って
「USBメモリのように使用した」という表現を使いました。
とはいえ、手元にこの機器が存在しないので、代替えとしてパソコンを使用します。

そして、このパソコンに先ほどの片側のUSBコネクタを接続します。
この時サーフェイスではなくてUSBメモリをつないだとしたら
デスクトップパソコンのほうではマイコンピュータか何かでフォルダ表示?を行うと
(一般名称名称はわかりませんが、フォルダーとか、ファイル名とかデバイスとか
ドライブとかネットワークの場所とか表示されるウィンドウのことで、
詳細とか、小さいアイコンととか大きいアイコンで表示ができるウィンドウです。)
ドライブが自動的にE:とかF:とかに割り当てられると思います。

このドライブをダブルクリックすると、その中身が表示されます。
これと同じことをサーフェイスで実行したいと思っています。
それができれば相手が機器であっても動作すると思ったのですが。


>具体的に書いてくださっていますが、問題は「相手側でUSBメモリに接続したのと同じ動作」が
>大雑把すぎて、いったいどういった動作を求めているのかが伝わらないのです。
>「送信したいものだけが相手に見える」というのも、少なくとも私にはわかりませんでした。
現在USBメモリ内に多数のファイルが存在し、その中から選択を行ってるため
間違って選択したりすることもしばしばあるそうです。
なので、あらかじめ、その中から条件を絞って1個または数個にしてデスクトップパソコン側で
表示できる量を少なくしたファイルだけを表示させてデータを取得できるようにしたいのです。

以上になりますが、おわかりいただけるでしょうか?


引用返信 編集キー/
■86062 / inTopicNo.4)  Re[3]: USBメモリ化の方法
□投稿者/ furu (151回)-(2017/12/15(Fri) 10:05:32)
No86060 (夜叉丸 さん) に返信

相手側がデスクトップパソコン(USBマスタ)なら
サーフェイスは、USBスレーブにならなくてはなりません。

サーフェイスにUSBスレーブは付いていないので
まず、USBスレーブのボードなり、機器を買って
付けるということですか?

それならば、作れると思います。

違っていたらごめんなさい。
引用返信 編集キー/
■86063 / inTopicNo.5)  Re[3]: USBメモリ化の方法
□投稿者/ 774RR (579回)-(2017/12/15(Fri) 10:12:34)
そもそも論として USB というのはホストとデバイスを接続する非対称ネットワークなので
パソコン(ホスト)とパソコン(ホスト)を直接接続するというのは物理的に無理。

パソコン2台を USB でくっつけたいのなら例えば
https://www.sanwa.co.jp/group_search/group_list.asp?code=KB-USB-LINK4
のような装置が必要

単に相手方のアイルが見えてコピーできれば良いのならばファイル共有なんかのほうが手っ取り早いよ。

引用返信 編集キー/
■86065 / inTopicNo.6)  Re[3]: USBメモリ化の方法
□投稿者/ kiku (22回)-(2017/12/15(Fri) 10:17:47)
No86060 (夜叉丸 さん) に返信

> 例えば、サーフェイスを使用したとします。
> 今回作成するプログラムが動作するのはこのサーフェイスということになります。

Surfaceを使ったことがないため
検索してみたところ
SurfaceとSurfaceProでは大きく違うようです。
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11115072261?__ysp=c3VyZmFjZeOBqOOBr%2BS9lQ%3D%3D

まずは、どちらなのか明確にした方が良いと思いました。
それによって、開発環境も変わってくるかもしれません。

> 実際はパソコンではなく機器になるので、プログラムを作成して
> 動作させることができませんし、この機器を私は見たこともありません。
> なので、USBメモリと同じ動作をするものを作ればいいのかと思って
> 「USBメモリのように使用した」という表現を使いました。

機器を見たこともないということですので
まずは、この機器の名称、型番などを明確にすべきと思います。
その上でUSB接続したときに、どんなインターフェースで
どんな情報をやり取りすることができる機器なのか明確にします。

そうでないと、今、仮にUSBメモリのような使い方を想定されいますが、
そのような機能を、この見たこともない機器に搭載されていない可能性があります。

引用返信 編集キー/
■86066 / inTopicNo.7)  Re[4]: USBメモリ化の方法
□投稿者/ 夜叉丸 (88回)-(2017/12/15(Fri) 11:11:28)
No86062 (furu さん) に返信
> 相手側がデスクトップパソコン(USBマスタ)なら
> サーフェイスは、USBスレーブにならなくてはなりません。
> サーフェイスにUSBスレーブは付いていないので
> まず、USBスレーブのボードなり、機器を買って
> 付けるということですか?

USBスレーブというのがよくわかりませんが

送信側(windowsで動作するPC)も
受信側(USBコネクタを持つ機器)にも
USBコネクタがあるのでそのままつなげればよいと思っていたのですが
それだけで不可能であれば必要なものはつけます。


引用返信 編集キー/
■86067 / inTopicNo.8)  Re[3]: USBメモリ化の方法
□投稿者/ 魔界の仮面弁士 (1505回)-(2017/12/15(Fri) 11:26:33)
No86060 (夜叉丸 さん) に返信
> >まず「Windowsパッド」とは何を指していますか?
> Windowsプログラムしか作ったことないので、
> Windowsでプログラムを作成できるタブレットPCのことです。

「プログラムを作成できるタブレットPC」ということは
タブレット PC 上で 開発作業を行いたいのでしょうか。

それともタブレット PC 向けアプリを Windows 環境で開発したいという意味でしょうか。

後者の意味(アプリの実行環境として使う)なら良いですが、
前者の意味(開発環境として使う)場合には、2-in-1 タイプの
タブレットをお奨めします。


> VisualStudioで作成できる c# .net のアプリケーションが
> 動作できるものです。

Windows タブレット向けのアプリケーションも
Android タブレット/Android スマートフォン向けのアプリケーションも
iPad / iPhone 向けのアプリケーションも
Windows 上の Visual Studio を使って C# で開発できます。

https://www.microsoft.com/ja-jp/dev/campaign/vs-xamarin.aspx
https://github.com/chomado/xamarin-dev-doc/tree/master/hands-on

ただし Windows 版 Visual Studio で iOS 向けアプリの実行・デバッグを
行う場合は、その PC に接続された macOS デバイスが必要です。
あるいは Visual Studio for Mac で開発するという手もあります。


> >「USBメモリのように」
> 例えば、サーフェイスを使用したとします。
もしこれが Microsoft Surface の事だとしたら、
公式のカタカナ表記は「サーフェイス」ではなく「サーフェス」です。
まぁ、公式サイトでカタカナ表記されることは稀ですが。


> 今回作成するプログラムが動作するのはこのサーフェイスということになります。
Microsoft Surface には、Windows 8/8.1/10 を搭載した Surface シリーズとは別に
Windows RT 8/8.1 を搭載した製品 (Surface RT) があります。

通常の Windows が x86/x64 系の CPU を搭載しているのに対し、
Windows RT は ARM を搭載しています。そのため、RT では、
x86/x64 向けのデスクトップアプリケーションは動作せず、
ARM 向けに開発されたアプリケーションが必要です。


> このサーフェイスにUSBケーブルの片側をつなげてもう片方を相手側につなげるように
> 接続を行います。

Wi-Fi / イーサネット接続では駄目なのでしょうか?

PC やタブレット側に装備されているのは A のメスなので、
通常のケーブル(Aオス - Bオス)では、そもそも繋ぎようがありません。

Aオス - Aオス タイプの特殊なケーブルも販売されていますが、これは
『USB リンクケーブル』などとよばれるものであり、パソコン同士を
USB 接続してデータ転送するなどの目的で使われます。

ただしリンクケーブルの場合、それが Windows 側から
どのように認識されるのかは、ケーブル製品のドライバーによって異なります。
(ネットワークデバイスとして認識されるものが多いとは思いますが)
引用返信 編集キー/
■86068 / inTopicNo.9)  Re[5]: USBメモリ化の方法
□投稿者/ furu (152回)-(2017/12/15(Fri) 12:19:38)
No86066 (夜叉丸 さん) に返信
> USBスレーブというのがよくわかりませんが

ハードウェアの通信には
大まかに親子と対等のものがあります。

イーサネットでしたら対等なので
クロスケーブルでPCとタブレットを直接接続し
通信できます。

USBは親子であり、親1に対し、子が複数ぶら下がります。
PCもタブレットもUSBは親(マスタ)なので
繋げられないし、通信不可能です。

親(マスタ)と子(スレーブ)では
コネクタの形状も違います。

引用返信 編集キー/
■86069 / inTopicNo.10)  Re[5]: USBメモリ化の方法
□投稿者/ 魔界の仮面弁士 (1506回)-(2017/12/15(Fri) 12:23:10)
2017/12/15(Fri) 12:50:35 編集(投稿者)

No86066 (夜叉丸 さん) に返信
> USBスレーブというのがよくわかりませんが

マスター/スレーブ(もしくは Host/Peripheral) というのは、要するに親子のことです。

そもそも USB というのは、1 台のマスター(たとえば PC)に
複数のスレーブ(たとえば USB-HDD や USB-Printer など)を繋ぐバス規格です。

ホスト(Host)となるマスターデバイス(PC)に対して
周辺機器(Peripheral)となる複数のスレーブデバイスが
接続されるツリー型の構成をとる仕様です。ホストは 1 台のみです。


> USBコネクタがあるのでそのままつなげればよいと思っていたのですが

USB ケーブルのうち、ホスト PC 側(マスター)に繋ぐための
長方形のコネクタが Type-A プラグと呼ばれており、
周辺機器側(スレーブ)のコネクタが Type-B プラグです。
USB の端子形状が、Standard / Mini / Micro のいずれでも
この本質は変わりません。


USB デバイスの接続では、通信の『向き』が重要となります。たとえば
 [PC] <-----> [USBハブ] <-----> [USB-HDD]
という接続で見た場合、上図でいうと、
『<』が上流(アップストリーム)となる Type-A の端子
『>』は下流(ダウンストリーム)となる Type-B の端子です。

そして一般的には
 PC:上流側なので、A 端子(メス)のみ
 USB ハブ:PC 側に繋ぐための B 端子(メス)が一つと、 機器側に繋ぐための複数の A 端子(メス)
 USB 機器:下流側なので、B 端子(メス)のみ
となります。なので、PC 同士を繋ぐような使い方はできません。

※ケーブルが直結されたタイプの周辺機器の場合、
 B 端子(メス)の代わりに、A端子(オス)なケーブルが生えています。


また、ホスト(上流側)にはホストコントローラーが必要であり、それをもたない
スマートフォンなどでは、プリンターを繋いだりすることができません。

ただし最近は、USB On-The-Go (OTG) という、PCを介さずに
デバイスと USB 機器を直接繋げられる規格も登場しています。
USB OTG 対応機器の場合、周辺機器側がホストになることができます。
OTG はたとえば、スマートフォンに USB メモリーを繋ぐ場合や
デジカメとプリンターを直接繋いで印刷する場合などで使われています。

OTG 対応デバイスの場合、Type-A オスと Type-B オスの両方いずれかのプラグを
させるポート形状(メス)になっており、これは「Mini-AB」「Micro-AB」などと呼ばれます。

あるいは、スマートフォン側のポートは Micro USB Type-B メスのままで、
そこに付属品として、USB OTG ケーブルが付属しているケースもあります。
この場合の変換ケーブルは、スマホ側が Micro USB Type-B オス、
デバイスが側がたとえば USB Standard Type-A メスとなっています。


なお、近年増えてきている USB Type-C の場合は、裏表が無いだけでなく、
これら「マスター/スレーブ」のような「向き」も無い、双方向通信が可能な規格です。
引用返信 編集キー/

このトピックをツリーで一括表示


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

このトピックに書きこむ