c# - ¿Controlar el poder del puerto USB?
c++ drivers (10)
Creo que estás buscando un dispositivo USB. Se podría hacer un cargador simple, poniendo o elevando el regulador para aumentar el voltaje de 5v o el regulador para conducir a un voltaje de carga más bajo. Encenderlo o apagarlo requeriría un dispositivo USB.
¿Alguien sabe cómo controlar los pines USB en un determinado puerto USB? Creo que es definitivamente posible en ensamblador pero ¿qué pasa con C ++ o C #?
Quiero poder usar la batería USB como fuente de alimentación para un LED o algo así. Entonces, un programa lo enciende y lo apaga haciendo que parpadee.
Sé que suena inútil, pero necesito hacerlo por algo increíble.
También sé que podría requerir un controlador personalizado.
Creo que tratar de encender y apagar la alimentación USB no es una buena manera de hacerlo: es posible que su controlador USB pueda hacer esto, pero no sería algo "normal".
Probablemente la forma más fácil es usar algo como un chip paralelo FTDI FT245 USB->. Si solo está intentando encender algunas luces parpadeantes, tal vez salga y compre un cable de impresora paralelo - USB estándar para eso ... obtendría 8 bits de salida con un control de software muy fácil, y bastante Más con solo un poco de trabajo.
O ve a todo el mundo y consigue un microcontrolador con USB incorporado ... ¡las posibilidades son infinitas!
De acuerdo con http://www.gniibe.org/development/ac-power-control-by-USB-hub/index
USB 2.0 nominalmente soporta conmutación de energía por puerto:
Hub Descriptor:
[...]
wHubCharacteristic 0x0089
Per-port power switching
[...]
Lamentablemente, el autor informa que, si bien las afirmaciones de firmware de los hubs pueden admitir esto, los fabricantes han reducido los ángulos de la placa de circuito.
El USB no es trivial, así que supongo que tendrá algunos problemas (mal) al usarlo. Estaría / mucho / mejor (IMHO) con los puertos serie estándar, que se han utilizado para cosas así durante mucho tiempo, con muchos ejemplos disponibles. Si no tiene un puerto serie disponible en su máquina de destino, puede usar el cable de interfaz USB -> Serie.
Dicho esto, probablemente querrá echar un vistazo a @: http://sourceforge.net/projects/libusbdotnet/
LP, Dejan
La pregunta es controlar el amperaje de USB que la mayoría de las respuestas no pudieron tener en cuenta la variedad de mA de USB y su efecto en voltios.
Las salidas comunes de USB 1.0 y 2.0 equivalen a 500 mA o 0.5 A. 500 mA por 5 voltios equivalen a 2.5 vatios de potencia.
1 A le proporcionará los 5 vatios completos y el ASUS Ai Charger podrá manipular el USB 2.0 para que emita 1.2 A o 1200 mA y le dé una salida de 6 vatios.
Lo que necesita es una placa de desarrollo con pines de E / S programables (también conocido como PIO ) o un UART (RS232).
El método más sencillo es conectar el LED al Borrar para enviar (CTS) y a tierra o VCC. La salida en la línea CTS encenderá o apagará el LED dependiendo de si el otro extremo está conectado a tierra o no. Se podrían usar los pines de E / S normales, pero son para la transmisión de datos en serie en el UART. El UART generalmente construye un carácter de 8 bits a partir de estos pines; pero pasa los valores RTS (solicitud de envío) y CTS directamente a través de.
Cuando usa un PIO, todo lo que tiene que hacer es establecer un bit en una variable y escribir esa variable en la dirección del conjunto de PIO. También es posible que tenga que enclavarse en los bits. Algunos pines PIO recordarán el valor hasta que se escriba el siguiente valor (lo que se llama enganchado), otros recordarán el valor siempre que se escriba.
No hay manera de hacerlo para la potencia real y los pines de tierra. Y probablemente deberías leer this parte del artículo de Wikipedia sobre USB.
No hay ningún control de software sobre las clavijas de alimentación y conexión a tierra de un puerto USB, al menos en los chips de PC. Eso es manejado en hardware por el controlador USB. Considere obtener un adaptador de puerto paralelo USB si desea que el software controle los voltajes TTL.
No puedes simplemente cambiar los pines en un puerto USB. Período. USB es un protocolo serial. El conector contiene
- Poder. El Host puede controlar las líneas eléctricas, ya que puede cortar la energía en caso de sobrecarga. Esto es algo que hace el controlador de host USB, que significa el controlador del adaptador de host en la PC. Esto no significa que ningún controlador de dispositivo personalizado que pueda necesitar para hardware que no use ninguna de las clases de dispositivos que el sistema operativo ya incluye.
- Datos. Los datos se envían a través de un protocolo en serie, por lo que no hay forma de controlar esos pines si está usando USB.
Si desea obtener algunos puertos IO necesita más lógica. Necesita al menos algo que siga el protocolo USB, lo que significa algún tipo de microcontrolador (o un controlador de dispositivo USB especial como los controladores USB FTDI . El FT232 y el FT245 son especialmente agradables para trabajar con ellos). Para una solución basada en un microcontrolador de gama baja, el controlador V-USB para controladores AVR puede ser interesante.
Para que los pines IO en la PC sean fáciles de golpear, use el puerto paralelo. USB realmente no está hecho ni adecuado para eso.
Puede ser posible encender y apagar la alimentación del dispositivo haciendo lo que ocurra cuando "quita con seguridad el hardware" de un dispositivo USB, pero no estoy 100% seguro de que esto apague la alimentación, simplemente puede enviar una señal al El dispositivo dice que está desconectado, lo que hace que se apague solo.
La mejor opción para lo que está tratando de hacer es construir un dispositivo USB que realmente se comunique con la computadora (posiblemente a través de un controlador personalizado, pero probablemente también pueda usar un controlador estándar como un dispositivo HID). Le pediría a la computadora enviar "on" o "off" (o cualquier otra cosa que pueda soñar) a su dispositivo, lo que interpretaría las señales como mejor le parezca (probablemente encendiendo y apagando el LED del que hablaba). Esto no es tan difícil como parece. Puede comprar microcontroladores con interfaces USB a bordo, como el Arduino, o algunos de los PIC de gama alta. Muchos de los fabricantes de este tipo de microcontroladores tienen documentos disponibles que explican cómo hacer una interfaz USB con ellos.