32

特定の USB ポートの USB ピンを制御する方法を知っている人はいますか? アセンブラでは間違いなく可能だと思いますが、C++ や C# ではどうでしょうか。

USBバッテリーをLEDなどの電源として使えるようにしたいです。そのため、プログラムは電源を入れてから電源を切り、点滅させます。

無意味に聞こえることはわかっていますが、何か素晴らしいことをする必要があります。

また、カスタム ドライバーが必要になる可能性があることもわかっています。

4

10 に答える 10

9

USB ポートのピンを単純に切り替えることはできません。限目。USB はシリアル プロトコルです。コネクタには

  1. 力。ホストは、過負荷の場合に電力を遮断できるため、電力線を制御できます。これは、PC のホスト アダプターのドライバーを意味する USB ホスト ドライバーによって行われます。これは、OS が既にドライバーを出荷しているデバイス クラスを使用しないハードウェアに必要なカスタム デバイス ドライバーを意味するものではありません。
  2. データ。データはシリアル プロトコル経由で送信されるため、USB を使用している場合、これらのピンを制御する方法はありません。

いくつかの IO ポートを取得したい場合は、さらにロジックが必要です。少なくとも、USB プロトコルに準拠するものが必要です。つまり、ある種のマイクロコントローラー (または、FTDI USB コントローラーのような特別な USB デバイス コントローラー。FT232 と FT245 は特に使いやすい) です。ローエンドのマイクロコントローラー ベースのソリューションでは、AVR コントローラー用の V-USB ドライバーが興味深いかもしれません。

PC のビットバンギング IO ピンを簡単にするには、パラレル ポートを使用します。USBは実際には作られておらず、それに適していません。

于 2009-12-17T23:35:41.553 に答える
7

http://www.gniibe.org/development/ac-power-control-by-USB-hub/indexによると

USB 2.0は、名目上、ポートごとの電源切り替えをサポートしています。

Hub Descriptor:
[...]
  wHubCharacteristic 0x0089
    Per-port power switching
[...]

悲しいことに、著者は、ハブのファームウェアがこれをサポートしていると主張しているかもしれないが、メーカーは回路基板の手抜きをしていると報告しています。

于 2012-02-08T13:17:18.333 に答える
6

USB は些細なことではないので、使用する際に問題 (誤用) があると思います。あなたは、標準のシリアルポートを使ったほうが/はるかに/ (IMHO) 良いでしょう. ターゲット マシンでシリアル ポートを使用できない場合は、USB->シリアル インターフェイス ケーブルを使用できます。

そうは言っても、おそらく @: http://sourceforge.net/projects/libusbdotnet/を見てみたいと思うでしょう。

LP、デジャン

于 2009-12-17T23:18:33.000 に答える
3

USB 電源のオンとオフを切り替えようとするのは、あまり良い方法ではないと思います。USB コントローラがこれを実行できる可能性はありますが、それは「通常の」ことではありません。

おそらく最も簡単な方法は、FTDI FT245 USB-> パラレル チップのようなものを使用することです。点滅するライトを点滅させようとしているだけなら、外に出て、標準の USB -> パラレル プリンタ ケーブルとそのインターフェイスを購入することもできます。非常に簡単なソフトウェア制御で 8 ビットの出力が得られます。少しの作業でさらに。

または、USB 内蔵のマイクロコントローラーを手に入れることもできます。可能性は無限大です。

于 2009-12-17T23:23:33.780 に答える
3

少なくとも PC チップセットでは、USB ポートの電源ピンとグランド ピンをソフトウェアで制御することはできません。これは、USB コントローラーによってハードウェアで処理されます。TTL 電圧をソフトウェアで制御したい場合は、USB パラレル ポート アダプターの入手を検討してください。

于 2009-12-17T23:14:33.617 に答える
1

必要なのは、プログラム可能な I/O ピン (別名PIO ) または UART (RS232) を備えた開発ボードです。

最も簡単な方法は、LED を Clear To Send (CTS) とグラウンドまたは VCC のいずれかに接続することです。CTS ラインの出力は、もう一方の端がグランドに接続されているかどうかに応じて、LED をオンまたはオフにします。通常の I/O ピンを使用できますが、これらは UART でのシリアル データ送信用です。UART は通常、これらのピンから 8 ビット文字を構築します。ただし、RTS (Request To Send) および CTS 値は直接渡します。

PIO を使用する場合、変数にビットを設定し、その変数を PIO セットのアドレスに書き込むだけです。また、ビットをラッチする必要がある場合もあります。次の値が書き込まれる (ラッチされる) まで値を記憶する PIO ピンもあれば、書き出される限り値を記憶する PIO ピンもあります。

于 2009-12-18T00:29:31.533 に答える
1

あなたはUSBデバイスを探していると思います。レギュレーターを配置またはブーストして5Vを高くするか、レギュレーターをより低い充電電圧に駆動することにより、単純な充電器を作成できます。オンまたはオフにするには、USB デバイスが必要です。

于 2009-12-17T23:12:33.837 に答える
0

実際の電源ピンと接地ピンに対してそれを行う方法はありません。また、ウィキペディアの USB 記事のこの部分を読む必要があります。

于 2009-12-17T23:22:23.827 に答える
-1

問題は、USBのアンペア数を制御することです。ほとんどの回答は、USBのmAの多様性と、それがボルトに与える影響を考慮に入れていませんでした。

一般的なUSB1.0および2.0出力は500mAまたは0.5Aに相当します。500mA×5ボルトは2.5ワットの電力に相当します。

1 Aで完全な5ワットが得られ、ASUS AiChargerでUSB2.0を操作して1.2Aまたは1200mAを出力し、6ワットの出力を得ることができます。

于 2012-06-20T19:08:20.873 に答える