32 votes

Contrôler l'alimentation du port USB?

alt text

Quelqu'un sait comment contrôler les broches USB sur un port USB? Je pense qu'il est certainement possible en assembleur mais qu'en C++ ou C#?

Je veux être en mesure d'utiliser l'USB de la batterie comme source d'alimentation pour LED ou quelque chose comme ça. Alors un programme serait l'allumer et l'éteindre en le rendant flash.

Je sais que cela semble inutile, mais j'ai besoin de le faire pour quelque chose de génial.

Je sais aussi que cela peut nécessiter un pilote personnalisé.

9voto

bluebrother Points 4224

Vous ne pouvez pas simplement basculer broches sur un port USB. Période. L'USB est un protocole série. Le connecteur contient

  1. De la puissance. L'Hôte peut contrôler la puissance des lignes, car il peut couper l'alimentation en cas de surcharge. C'est quelque chose fait par l'USB pilote de l'hôte, ce qui signifie que le pilote de l'adaptateur à l'hôte dans le PC. Cela ne signifie pas coutume pilote de périphérique que vous pourriez avoir besoin pour un matériel qui n'utilise pas du tout de l'appareil classes de l'OS déjà envoyé des pilotes.
  2. Les données. Les données sont envoyées via un protocole série, il n'existe aucun moyen pour contrôler ces broches si vous êtes en utilisant le câble USB.

Si vous souhaitez obtenir certains ports e / s vous avez besoin de plus logique. Vous devez avoir au moins quelque chose qui suit le protocole USB, ce qui signifie une sorte de microcontrôleur (ou un périphérique USB contrôleur comme le FTDI USB contrôleurs. Le FT232 et FT245 sont particulièrement agréable à travailler). Pour un bas de gamme de microcontrôleurs solution basée sur le V-pilote USB pour AVR contrôleurs pourrait être intéressant.

Pour faciliter la bit-banging IO broches sur le PC, utiliser le port parallèle. USB n'est vraiment pas faite, ni adapté pour cela.

7voto

android.weasel Points 701

Selon http://www.gniibe.org/development/ac-power-control-by-USB-hub/index

L'USB 2.0 prend nominalement en charge la commutation d'alimentation par port:

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

Malheureusement, l'auteur signale que même si le micrologiciel des hubs prétend soutenir cela, les fabricants ont coupé les coins du circuit imprimé.

6voto

Dejan Stanič Points 615

L'USB n'est pas trivial, donc je suppose que vous allez avoir quelques problèmes (mis)à l'utiliser. Vous serait /bien/ mieux (à mon humble avis) avec des ports série standards, qui ont été utilisés pour des trucs comme ça depuis des lustres, avec beaucoup d'exemples disponibles. Si vous n'avez pas de port série disponible sur votre machine cible, vous pouvez utiliser USB->câble d'interface Série.

Cela étant dit, vous aurez probablement envie de prendre un coup d'oeil @: http://sourceforge.net/projects/libusbdotnet/

LP, Dejan

3voto

Andy Ross Points 7024

Il n'y a aucun contrôle logiciel sur les broches d'alimentation et de masse d'un port USB, au moins sur les chipsets PC. Cela est géré dans le matériel par le contrôleur USB. Essayez d'obtenir un adaptateur de port parallèle USB si vous souhaitez contrôler par logiciel les tensions TTL.

2voto

NickZoic Points 2406

Je pense essayer de l'interrupteur d'alimentation USB sur et en dehors n'est pas une excellente façon de le faire: il est possible que votre contrôleur USB est capable de faire cela, mais il ne serait pas "normal" de la chose à faire.

Probablement la façon la plus simple est d'utiliser quelque chose comme un FTDI FT245 USB->parallèle à puce. Si vous êtes juste essayer de flasher un peu des lumières clignotantes, peut-être sortir et d'acheter une clé USB standard -> câble d'imprimante parallèle et de l'interface pour que ... vous obtiendrez 8 bits de sortie avec logiciel très facile de contrôle, et beaucoup plus avec juste un peu de travail.

Ou aller jusqu'au bout et obtenir un microcontrôleur avec un port USB ... les possibilités sont infinies!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X