it-swarm.com.de

"Die Semaphor-Timeout-Zeit ist abgelaufen" Fehler bei USB-Verbindung

Ich erhalte diesen Fehler ...

Das Semaphor-Timeout ist abgelaufen.

Auf dieser Linie ...

ThePorts.ActivePort1.Open ();

... aber ich bekomme es nur ab und zu. Wenn es passiert, passiert es immer und immer wieder. Dann verschwindet das Problem für Stunden oder Tage und kommt dann wieder.

Die serielle Schnittstelle ist ein USB-Anschluss mit angeschlossenem BlueTooth.

Ich denke, dieser Typ hatte ein sehr ähnliches Problem, aber nicht in C #

Einfrieren auf SerialPort.Open/DeviceIoControl/GetcommState mit usbser.sys

Soweit ich das beurteilen kann, habe ich sein gesamtes Problem und die daraus resultierenden Kommentare sowie die Antwort gelesen, aber ich kann wirklich nicht herausfinden, welches sein Problem behoben hat oder ob C # sich erheblich von dem unterscheidet, was er erlebt hat.

Vielen Dank für jede Hilfe für die ahnungslosen. Dies ist der eigentliche Code, in dem es passiert.

public static void Open_ActivePortWeWillUse(String Drone_StringNameFromUser)
{
    SerialPort TempSerialPort = new SerialPort(Drone_StringNameFromUser, (int) SerialPortSpeed);

    ThePorts.ActivePort1 = TempSerialPort;

    ThePorts.ActivePort1.DataBits = 8;
    ThePorts.ActivePort1.Parity = Parity.None;
    ThePorts.ActivePort1.StopBits = StopBits.One;

    ThePorts.ActivePort1.DataReceived += new SerialDataReceivedEventHandler(OurBackGroundSerialPortReceiver);

    ThePorts.ActivePort1.Open();  // "Sometimes" Error hits here
}
31
User.1

Dieser Fehler kann auch auftreten, wenn Probleme mit der Netzwerklatenz, dem Internet oder dem lokalen Netzwerk auftreten. Möglicherweise sind auch überbrückte Verbindungen, bei denen ein Gegenstück ausfällt, der Schuldige.

6
Rudy Hinojosa

Okay, ich verbinde mich jetzt ohne das Semaphor-Timeout-Problem.

Wenn jemand, der liest, jemals auf dasselbe stößt, hoffe ich, dass dieses Verfahren für Sie funktioniert. aber keine Versprechungen; Hey, es sind Fenster.

In meinem Fall war dies Windows 7

Ich habe einen kleinen Hinweis von Diese Seite auf eHow; Ich bin mir nicht sicher, ob das jemandem helfen könnte oder nicht.

Das war das einfache Verfahren in dreiundzwanzig Schritten, das bei mir funktioniert hat

  • Klicken Sie auf die Schaltfläche Start

  • Wählen Sie Systemsteuerung

  • Wählen Sie in der Systemsteuerung die Option Geräte-Manager

  • Wählen Sie im Geräte-Manager die Option Universal Serial Bus Controller

  • Klicken Sie unter Universal Serial Bus Controller auf das kleine seitliche Dreieck

  • Ich kann nicht vorhersagen, was auf Ihrem Computer angezeigt wird, aber auf meinem wird eine lange Dropdown-Liste angezeigt

  • Beginnen Sie die Untersuchung, um herauszufinden, welches dieser Mitglieder der Liste der Täter ist ...

    • Klicken Sie mit der rechten Maustaste auf jedes Mitglied der Dropdown-Liste auf den Namen

    • Eine Liste wird geöffnet, wählen Sie Eigenschaften

    • Ratezeit: Verwenden Sie die verschiedenen Registerkarten am oberen Rand des sich öffnenden Fensters, um zu erraten, ob dies der USB-Adaptertreiber ist, der Ihre Daten mit Semaphor-Timeouts verschluckt

  • Wenn Sie die richtigen Vermutungen angestellt haben, schließen Sie das Fenster Eigenschaften von USB-Root-Hub (lassen Sie jedoch das Fenster Geräte-Manager geöffnet).

  • Trennen Sie physisch alles und jeden von diesem USB-Hub.

  • Steck es aus.

  • Stellen Sie den Mauszeiger auf den USB-Root-Hub in der Liste, den Sie zuvor identifiziert haben.

  • Klicken Sie erneut mit der rechten Maustaste

  • Wählen Sie Deinstallieren

  • Lassen Sie Windows sein Ding machen

  • Warte eine Weile

  • Schalten Sie den gesamten Computer aus, wenn Sie Zeit haben. Einige sagen, dass dies erforderlich ist. Ich glaube, ich bin ohne davongekommen.

  • Stecken Sie den USB-Hub wieder in einen USB-Anschluss am PC

  • Wenn die Liste im Gerätemanager blinkt und ein paar Blinklichter anzeigt, ist dies in Ordnung.

  • Stecken Sie den BlueTooth-Stecker wieder in den USB-Hub

  • Lassen Sie die Fenster noch etwas mehr tun

  • Innerhalb von zwei Minuten hatte ich wieder einen funktionierenden COM-Port, keine Semaphor-Timeouts.

Hoffe, es funktioniert für alle anderen, die möglicherweise ein ähnliches Problem haben.

5
User.1

Ich hatte dieses Problem auch auf zwei verschiedenen Windows-Computern, als ich mit einem Arduino Leonardo kommunizierte. Die zuverlässige Lösung war:

  • Suchen Sie den COM-Anschluss im Geräte-Manager und öffnen Sie die Geräteeigenschaften.
  • Öffnen Sie die Registerkarte "Anschlusseinstellungen" und klicken Sie auf die Schaltfläche "Erweitert".
  • Deaktivieren Sie dort das Kontrollkästchen "Use FIFO puffers (required 16550 compatible UART)" und drücken Sie OK.

Leider weiß ich nicht, was diese Funktion bewirkt oder wie sich dies auf dieses Problem auswirkt. Nach mehreren PC-Neustarts und einem Dutzend Geräteverbindungszyklen ist dies das einzige, was das Problem zuverlässig behebt.

2
Marcus10110

Zu viele große Dateien auf einmal. Windows barfs. Im Wesentlichen hat das Kopieren zu lange gedauert, weil Sie zu viel vom Computer verlangt haben und die Dateisperrung zu lange gesperrt war und ein Flag deaktiviert wurde. Das Flag ist ein Semaphorfehler.

Der Computer stopfte sich und verschluckte sich daran. Ich habe gesehen, wie der RAM Speicher hier nach und nach mit einem Cache im RAM gefüllt wurde. Dann kam das Subsystem beim Füllen mit einem Semaphorfehler zum Stillstand.

Ich habe eine Problemumgehung; Kopieren oder übertragen Sie weniger Dateien, nicht einen riesigen Block. Teilen Sie es in Gruppen von Blöcken auf und senden Sie sie nacheinander, möglicherweise nacheinander, aber nicht immer.

Verweise:

https://appuals.com/how-to-fix-the-semaphore-timeout-period-has-expired-0x80070079/

https://www-01.ibm.com/support/docview.wss?uid=swg210946

0
Paul Chapman