
COM ポート経由で通信し、USB ポートから電源が供給される機器があります。問題は、PC を再起動すると、電源は維持されますが、COM ポートとの通信が停止することです。再起動する唯一の方法は、USB ケーブルを取り外して挿入することです。
USB 電源をオフにする Delphi アプリケーションを開発しています。devcon を使用してこれを実行してみました。
devcon.exe disable *ID*
devcon.exe enable *ID*
devcon.exe restarts *ID*
ただし、COM ポートとの通信が停止されるだけです。USB 電源は維持されます。
USB ポートの電源をオフにして、機器の電源もオフにする方法はありますか?
どんなヒントでも非常に役立ちます。
答え1
ほとんどの PC では、ルート ポートの USB VBUS 電源には VBUS を制御するハイサイド ハードウェア スイッチがないため、ソフトウェアで VBUS をオン/オフする手段はありません。VBUS はシステムの PS、+5VSB (スタンバイ) レールにほぼ直接接続されているため、PC の電源がオフになっても VBUS はそのままです。このようにすることで、キーボードやマウスで PC を起動できます (ラップトップは多少異なります)。したがって、次の 3 つのオプションがあります。
(1) COM デバイスに接続するためのハイサイド スイッチを備えたポートを備えた、優れた (認定された高価な) ハブを使用します。PC を再起動すると、USB ハブの新しい列挙サイクルは USB_RESET 状態になり、ハイサイド スイッチがオフになってからオンになります。メーカーは通常、ハイサイド スイッチを使用する (コストが追加) か、組み立て時にリセット可能なポリヒューズでバイパスする (安価) かのいずれかのオプションを PCB に詰め込んでいるため、この種のハブを見つけるのは簡単ではないかもしれません。
(2)このような別の制御電源を使用するSPDT USB制御スイッチUSB ポートと機器の間。
(3)COMポート機器および/またはホストドライバを修正して、「リセット/初期化」プロトコルを実装します。