USB Hub zurück setzen

  • VB.NET
  • .NET 4.5

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von dive26.

    Niemand eine Idee?
    Habe nun versucht den USB mit Devcon restart neu zu starten. Dies wird aber erst wirksam wenn man den Rechner neu startet.

    Hintergrund:
    Steuere eine Telefoanlage (Agfeo) per PC. Desöfteren wird die Verbindung zwischen TK-Anlage und Computer getrennt. In der Vergangenheit habe ich den Rechner neu gestartet und die Verbindung war wieder aktiv. Auf der Suche nach der Lösung, habe ich festgestet, dass die Rücksetzung des Hubs im Gerätemanger ausreicht.
    Da ich mit meinem VB-Programm Anrufe vermitteln kann, ist die Verbindung zur Anlage notwendig.
    Mein Gedanke war nun: Prüfe vor Aufbau eines Telefonates die Verbindung zur TK-Anlage, falls nicht vorhanden, setze den Hub zurück.
    Gruß Markus
    Mein erster Gedanke dazu war WMI.
    Jedoch bin ich nach kurzer Suche darauf gestoßen:
    msdn.microsoft.com/en-us/library/aa394506(v=vs.85).aspx
    Dort ist zwar die Funktion Reset. jedoch steht da dabei, dass sie nicht von WMI implementiert ist.

    Ich vermute du wirst tiefer in der Windows API graben müssen, um das zu erreichen.
    Post-AGB:
    §1 Mit dem Lesen dieses Posts stimmst du den AGB unverzüglich zu
    §2 Ein Widerruf muss innerhalb von 3 Sekunden nach Lesen des Hauptbestandteil des ersten jemals gelesenen Posts erfolgen
    Abs.1 Die Signatur zählt nicht zum Hauptbestandteil des Posts
    §3 Ein erfolgreicher Widerruf zwingt zu einem Besuch bei einem Hypnotiseur oder Neurochirurg, sodass der gelesene Text aus den Erinnerungen entfernt werden kann
    Abs.1 Die Kosten und Risiken sind jeweils selbst zu tragen
    @Westerwälder Warum geht es mit Devcon nicht? Sollte aber.

    Ich stand vor dem Problem einen USB Smartcardreader softwaremäßig aus- und wieder anzustecken. Ich habe es so gemacht und es funktioniert:

    VB.NET-Quellcode

    1. Dim ZielDatei As String = Path.Combine( "c:", "Temp", "usbrestart.exe")
    2. If System.Environment.Is64BitOperatingSystem Then
    3. IO.File.WriteAllBytes(ZielDatei, My.Resources.devcon64) '64 Bit
    4. Else
    5. IO.File.WriteAllBytes(ZielDatei, My.Resources.devcon32) '32 Bit
    6. End If
    7. If File.Exists(ZielDatei) Then
    8. Process.Start(ZielDatei, "restart usb\class_0B")
    9. End If


    Zur Info: die 32 und 64 Bit Variante von devcon.exe habe ich mir in die Ressourcen abgelegt um diese bei Bedarf zu extrahieren.

    Du musst nur noch die richtige Geräteklasse für Deinen USB-Hub finden.
    Liebe Grüße
    Roland Berghöfer

    Bei der Entwicklung meiner Anwendung(en) steht nicht "Code nach .NET Lehrbuch" im Vordergrund, sondern eine stabile und brauchbare Anwendung die der Anwender ordentlich verwenden kann. Usability für den Kunden und Supportbarkeit beim Kunden stehen an oberster Stelle. Das spiegelt sich auch in meinen Fragen und Antworten wider. Bitte verzeiht, dass meine VB.NET Quellcodes etwas VB6-lastig sind aber das ist für das funktionierende Endergebnis nicht wirklich relevant.