c# serial-port usb semaphore usbserial

c# - Error "El tiempo de espera del semáforo ha expirado" para la conexión USB



serial-port semaphore (3)

Estoy recibiendo este error ...

El tiempo de espera del semáforo ha expirado.

En esta línea ...

ThePorts.ActivePort1.Open ();

... pero solo lo consigo de vez en cuando. Cuando sucede, pasa una y otra vez. Luego el problema desaparece, por horas o días, y luego vuelve.

El puerto serie es un USB con un BlueTooth conectado.

Creo que este tipo tenía un problema muy similar, pero no en C #

Congelar en SerialPort.Open / DeviceIoControl / GetcommState con usbser.sys

Lo mejor que puedo estimar, he leído todo su problema, y ​​los comentarios resultantes, y la respuesta, pero realmente no puedo averiguar cuál solucionó su problema o si C # es significativamente diferente de lo que estaba experimentando.

Gracias por cualquier ayuda para los despistados. Este es el código real donde está sucediendo.

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 }


Bien, ahora me estoy conectando sin el problema del tiempo de espera del semáforo.

Si alguien que lee alguna vez se encuentra con lo mismo, espero que este procedimiento funcione para usted; pero no hay promesas; oye, son ventanas.

En mi caso este fue Windows 7.

Recibí una pequeña pista de Esta página en eHow; No estoy seguro si eso podría ayudar a alguien o no.

De todos modos, este fue el sencillo procedimiento de veintitrés pasos que funcionó para mí.

  • Haga clic en el botón de inicio

  • Elija Panel de Control

  • Desde el Panel de control, seleccione Administrador de dispositivos

  • Desde el Administrador de dispositivos, elija Controladores de bus serie universal

  • En Controladores de bus serie universal, haga clic en el pequeño triángulo lateral

  • No puedo predecir lo que verá en su computadora, pero en la mía recibo una larga lista desplegable

  • Comience la investigación para averiguar cuál de estos miembros de esta lista es el culpable ...

    • En cada miembro de la lista desplegable, haga clic derecho en el nombre

    • Se abrirá una lista, seleccione Propiedades.

    • Tiempo de adivinanzas: usando las distintas pestañas cerca de la parte superior de la ventana resultante que se abre, haz una suposición si este es el controlador del adaptador USB que está ahogando tus cosas con los tiempos de espera del semáforo

  • Una vez que haya realizado la conjetura adecuada, cierre la ventana de propiedades del concentrador de raíz USB (pero deje la ventana del Administrador de dispositivos abierta).

  • Desconecte físicamente cualquier cosa y todo de ese concentrador USB.

  • Desenchúfelo.

  • Devuelva el puntero del mouse a ese concentrador de raíz USB en la lista que identificó anteriormente.

  • Clic derecho de nuevo

  • Elija Desinstalar

  • Deja que Windows haga lo suyo

  • Espera un rato

  • Apaga toda la computadora si tienes tiempo; algunos dicen que esto es necesario. Creo que me escapé sin él.

  • Vuelva a conectar el concentrador USB a un conector USB en la PC

  • Si la lista en el administrador de dispositivos parpadea y hace algunos flashes, está bien.

  • Enchufe nuevamente el conector BlueTooth en el concentrador USB

  • Deja que las ventanas hagan su trabajo un poco más.

  • En dos minutos, tuve un puerto COM de nuevo, sin tiempos de espera de semáforo.

Espero que funcione para cualquier otra persona que pueda tener un problema similar.


Este error también puede aparecer si tiene problemas de latencia de red o de internet o de red local. Las conexiones puenteadas que tienen una contraparte defectuosa también pueden ser las culpables.


También tuve este problema en dos computadoras Windows diferentes cuando me comuniqué con un Arduino Leonardo. La solución confiable fue:

  • Busque el puerto COM en el administrador de dispositivos y abra las propiedades del dispositivo.
  • Abra la pestaña "Configuración del puerto" y haga clic en el botón avanzado.
  • Allí, desmarque la casilla "Usar buffers FIFO (requiere UART compatible con 16550), y presione OK.

Desafortunadamente, no sé qué hace esta función o cómo afecta este problema. Después de varios reinicios de PC y una docena de ciclos de conexión de dispositivo, esto es lo único que solucionó el problema de forma confiable.