Wie Sie die USB-Geräteverbindung unter Windows wiederherstellen können

8

Ich habe ein USB-Gerät basierend auf FTDI-Chip. Manchmal bleibt der Fahrer stecken.

Unter Linux gibt es kein Problem - das Gerät wird automatisch getrennt und vom Standard-Kernel wieder verbunden, und nur das Problem ist der Gerätename geändert - das kann durch die udev-Regeln behoben werden.

Unter Windows bleibt der Anwendungs-Thread, der in diesem Moment read() oder write() enthält, vollständig hängen. Es kann weder von TerminateThread , noch von KillProcess gelöscht werden.

Die einzige Möglichkeit, die App zu beenden, ist das physische Trennen des USB-Geräts.

Gibt es eine Möglichkeit, programmatisch die Wiederverbindung von Geräten zu beenden, die den Deadlock des Treibers entfernt und es ihm ermöglicht, den Port wieder zu öffnen und weiter zu arbeiten?

Administrative Rechte Anwendung kann, wenn dies erforderlich ist.

    
datacompboy 22.12.2012, 06:25
quelle

1 Antwort

5

Ich würde vorschlagen, dass Sie Ihr Denken einen Schritt weiterbringen. Sie versuchen, das USB-Gerät direkt neu zu starten, warum nicht den Hub versuchen?

Ich hatte ein ähnliches Problem und tat:

%Vor%

Das USB-Gerät wurde erneut an den Hub angeschlossen, als es aufgehängt wurde.

Hinweis : Dadurch werden ALLE USB-Geräte aus dem Gerätemanager entfernt und erneut hinzugefügt. Sie können expect oder so ähnlich wie devcon findall *ROOT_HUB* verwenden und entweder ROOT_HUB20 oder ROOT_HUB30 nach Bedarf entfernen.

    
Mike Mackintosh 03.01.2013, 16:54
quelle

Tags und Links