c# microsoft - Controllare la potenza della porta USB?




winusb driver (9)

Qualcuno sa come controllare i pin USB su una determinata porta USB? Penso che sia sicuramente possibile in assembler, ma che dire di C ++ o C #?

Voglio essere in grado di utilizzare la batteria USB come un alimentatore per un LED o qualcosa del genere. Quindi un programma lo accenderebbe e lo spegnerebbe facendolo lampeggiare.

So che sembra inutile ma ho bisogno di farlo per qualcosa di fantastico.

So anche che potrebbe richiedere un driver personalizzato.


Answers

Quello di cui hai bisogno è una scheda di sviluppo con pin I / O programmabili (aka PIO ) o UART (RS232).

Il metodo più semplice è collegare il LED al Clear To Send (CTS) e a Ground o VCC. L'uscita sulla linea CTS accenderà o spegnerà il LED a seconda che l'altra estremità sia collegata a terra o meno. I normali pin I / O potrebbero essere usati, ma sono per la trasmissione seriale dei dati nella UART. L'UART di solito crea un carattere a 8 bit da questi pin; ma passa direttamente i valori RTS (Request To Send) e CTS.

Quando si utilizza un PIO, tutto ciò che si deve fare è impostare un bit in una variabile e scrivere tale variabile sull'indirizzo del set PIO. Potrebbe anche essere necessario bloccare i bit. Alcuni pin PIO ricorderanno il valore finché non verrà scritto il valore successivo (chiamato latched), altri ricorderanno il valore fintanto che viene scritto.


Non c'è modo di farlo per i pin effettivi di potenza e di messa a terra. E probabilmente dovresti leggere this parte dell'articolo di Wikipedia su Wikipedia.


La domanda è controllare l'amperaggio della maggior parte delle risposte USB non è riuscito a mettere in conto la varietà di mA di USB e il suo effetto su volt.

L'uscita USB 1.0 e 2.0 comune equivale a 500 mA o 0,5 A. 500 mA volte 5 volt equivalgono a 2,5 watt di potenza.

1 A ti darà i 5 Watt completi e USB 2.0 può essere manipolata dal caricabatterie ASUS Ai per produrre 1,2 A o 1200 mA per darti una potenza di 6 watt.


Non puoi semplicemente commutare i pin su una porta USB. Periodo. USB è un protocollo seriale. Il connettore contiene

  1. Energia. L'host può controllare le linee elettriche in quanto può ridurre la potenza in caso di sovraccarico. Questo è qualcosa fatto dal driver host USB, il che significa che il driver dell'adattatore host nel PC. Questo non significa alcun driver di dispositivo personalizzato che potrebbe essere necessario per l'hardware che non utilizza nessuna delle classi di dispositivi che il sistema operativo già invia i driver.
  2. Dati. I dati vengono inviati tramite un protocollo seriale, quindi non è possibile controllare questi pin se si utilizza l'USB.

Se vuoi ottenere alcune porte IO hai bisogno di più logica. È necessario almeno qualcosa che segue il protocollo USB, il che significa una sorta di microcontrollore (o uno speciale controller di dispositivo USB come i controller USB FTDI : l'FT232 e l'FT245 sono particolarmente piacevoli da utilizzare). Per una soluzione basata su microcontroller di fascia bassa, il driver V-USB per i controller AVR potrebbe essere interessante.

Per semplici pin IO-bang sul PC, utilizzare la porta parallela. L'USB non è davvero fatto né adatto per questo.


L'USB non è banale, quindi suppongo che avrai qualche problema (errato) nell'usarlo. Saresti / molto / migliore (IMHO) con le porte seriali standard, che sono state utilizzate per cose del genere per anni, con un sacco di esempi disponibili. Se non si dispone di una porta seriale disponibile sul computer di destinazione, è possibile utilizzare USB-> Cavo di interfaccia seriale.

Detto questo, probabilmente vorrai dare un'occhiata @: http://sourceforge.net/projects/libusbdotnet/

LP, Dejan


Penso che provare ad accendere e spegnere l'USB non sia un ottimo modo per farlo: è possibile che il tuo controller USB sia in grado di farlo, ma non sarebbe una cosa "normale" da fare.

Probabilmente il modo più semplice è usare qualcosa come un FTDI5 FT245 USB-> chip parallelo. Se stai solo provando a far lampeggiare alcune luci lampeggianti, forse esci e comprati un cavo USB standard -> cavo parallelo per stampante e un'interfaccia ... otterrai 8 bit di output con un controllo software molto semplice, e molto di più con solo un po 'di lavoro.

Oppure vai su tutto e ottieni un microcontroller con USB integrato ... le possibilità sono infinite!


Potrebbe essere possibile accendere e spegnere il dispositivo facendo qualsiasi cosa accada quando si "rimuove in modo sicuro l'hardware" da un dispositivo USB, ma non sono sicuro al 100% che questo si spenga, potrebbe semplicemente inviare un segnale al dispositivo dispositivo dire che è disconnesso, che lo fa spegnere se stesso.

La soluzione migliore per ciò che stai cercando di fare è costruire un dispositivo USB che comunichi effettivamente con il computer (possibilmente tramite un driver personalizzato, ma probabilmente puoi anche usare un driver standard come un dispositivo HID). Il tuo computer dovrebbe inviare "on" o "off" (o qualsiasi altra cosa tu possa immaginare) al tuo dispositivo, che interpreterebbe i segnali come meglio credi (probabilmente accendendo e spegnendo il LED di cui stavi parlando). Non è così difficile come sembra. È possibile acquistare microcontrollori con interfacce USB a bordo, come Arduino o alcuni dei PIC high-end. Molti produttori di questo tipo di microcontrollori dispongono di documenti che spiegano come interfacciare USB con loro.


Non esiste un controllo software sui pin di alimentazione e di messa a terra di una porta USB, almeno sui chipset PC. Questo viene gestito dall'hardware tramite il controller USB. Cerca di ottenere un adattatore USB per porta parallela se desideri un controllo software sulle tensioni TTL.


Dipende dal motivo per cui il costruttore è stato reso privato in primo luogo (dovresti chiedere a chiunque abbia scritto la classe che stai modificando). A volte un costruttore può essere reso privato per non consentire la costruzione della copia (pur consentendo la costruzione attraverso qualche altro costruttore). Altre volte un costruttore può essere reso privato da non consentire la creazione della classe ad eccezione degli "amici" della classe (questo è comunemente fatto se la classe è un "helper" che dovrebbe essere usato solo dalle classi per le quali la classe helper è stata creata). Un costruttore può anche essere reso privato per forzare l'uso di una funzione di creazione (solitamente statica).







c# c++ usb drivers