2012-12-22 23 views
8

Ho un dispositivo USB basato su chip FTDI. A volte, il suo autista rimane bloccato.Come effettuare la riconnessione del dispositivo USB in Windows

Sotto Linux, non c'è problema - Dispositivo di ottenere automaticamente scollegata, e ricollegato dal kernel di default, e unico problema è il nome del dispositivo è cambiato - che può essere risolto dalle regole udev.

sotto Windows, quando si è bloccato, filo di applicazione che fa read() o write() in quel momento sono completamente blocca. Non può essere ucciso né da TerminateThread, né da KillProcess.

L'unico modo per uccidere l'app è disconnettere fisicamente il dispositivo USB.

Un modo per rilasciare la riconnessione del dispositivo a livello di codice, che rimuoverà il deadlock del driver e consentirà di riaprire la porta e continuare a lavorare dopo?

L'applicazione per i diritti di amministrazione può avere, se necessario.

+0

"restart devcon.exe * * ftdi" "devcon.exe disable * * ftdi" sono fallisce, mentre in stato bloccato – datacompboy

+0

La cattiva notizia è che i dispositivi FTDI-based sono i più affidabili sul mercato! - i dispositivi basati sul PL2303 (e/oi relativi driver del fornitore del chipset) sono gravemente danneggiati. – marko

+0

Hai provato un nuovo driver da [ftdichip.com] (http://ftdichip.com)? –

risposta

5

Ti suggerirei di spostare il tuo pensiero su un gradino. Stai tentando di riavviare il dispositivo USB direttamente, perché non provare l'hub?

ho avuto un problema simile, e facendo:

devcon remove *ROOT_HUB* && devcon rescan 

nuovamente attaccato il dispositivo USB al mozzo quando era appeso.

Nota: questo rimuoverà TUTTI i dispositivi USB dal gestore dispositivi e li aggiungerà nuovamente. È possibile utilizzare expect o like allo devcon findall *ROOT_HUB* e rimuovere ROOT_HUB20 o ROOT_HUB30 secondo necessità.

+1

sembra che non riesca per me per spegnere hub, come il dispositivo stesso ...:/ – datacompboy

+0

Sembra che il tuo problema potrebbe non essere con il dispositivo, ma il tuo hub USB. Hai un altro computer o hub USB su cui puoi provarlo? –

+0

è hub usb mb onboard, controllerò con hub usb passivo e attivo esterno, grazie per il suggerimento! questa sembra essere la vera soluzione – datacompboy