Подтвердить что ты не робот

Ошибка "истекло время ожидания семафора" для USB-соединения

Я получаю эту ошибку...

Срок таймаута семафора истек.

В этой строке...

ThePorts.ActivePort1.Open();

... но я получаю его время от времени. Когда это происходит, это происходит снова и снова. Тогда проблема уходит, часами или днями, затем она возвращается.

Последовательный порт - это USB с подключенным BlueTooth.

Я думаю, что у этого парня была очень похожая проблема, но не на С#

Заморозить на SerialPort.Open/DeviceIoControl/GetcommState с помощью usbser.sys

Насколько я могу судить, я прочитал всю его проблему и полученные комментарии и ответ, но я действительно не могу понять, какой из них исправил его проблему, или если С# существенно отличается от того, что он испытывал.

Спасибо за любую помощь для невежественного. Это фактический код, где это происходит.

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
}
4b9b3361

Ответ 1

Эта ошибка также может появиться, если у вас возникли проблемы с задержкой в ​​сети или интернет или локальной сети. Могут быть также и мостовые соединения, у которых есть неудачный аналог.

Ответ 2

Хорошо, теперь я подключаюсь без проблемы с таймаутом семафора.

Если кто-либо читает, когда-либо сталкивается с тем же, я надеюсь, что эта процедура будет работать для вас; но не promises; эй, это окна.

В моем случае это была Windows 7

У меня есть небольшой намек от Эта страница на eHow; не уверен, что это может помочь кому-либо или нет.

Так или иначе, это была простая процедура с двадцатью тремя шагами, которая работала для меня

  • Нажмите кнопку запуска

  • Выберите панель управления

  • На панели управления выберите "Диспетчер устройств"

  • В диспетчере устройств выберите "Универсальные контроллеры последовательной шины"

  • От универсальных контроллеров последовательной шины щелкните маленький боковой треугольник

  • Я не могу предсказать, что вы увидите на своем компьютере, но на моем я получаю длинный раскрывающийся список

  • Начните расследование, чтобы выяснить, кто из этих членов этого списка является виновником...

    • В каждом члене раскрывающегося списка щелкните правой кнопкой мыши имя

    • Откроется список, выберите "Свойства"

    • Время выполнения: используя различные вкладки в верхней части окна, которое открывается, предположите, что это драйвер USB-адаптера, который удушает ваш материал таймаутами семафора

  • Как только вы сделали правильную догадку, закройте окно свойств USB-корневого узла (но не открывайте окно диспетчера устройств).

  • Физически отключите все и все от USB-концентратора.

  • Отключите его.

  • Верните указатель мыши на этот USB-корневой концентратор в списке, который вы определили ранее.

  • Щелкните правой кнопкой мыши еще раз

  • Выберите "Удалить"

  • Пусть Windows делает свое дело

  • Подождите немного

  • Выключите весь компьютер, если у вас есть время; некоторые говорят, что это необходимо. Думаю, мне это удалось.

  • Вставьте USB-концентратор обратно в разъем USB на ПК

  • Если список в диспетчере устройств мигает и выполняет несколько вспышек, все в порядке.

  • Подключите разъем BlueTooth к USB-концентратору

  • Позвольте окнам сделать что-то еще

  • В течение двух минут у меня снова был рабочий COM-порт, без тайм-аутов семафора.

Надеюсь, что это сработает для всех, у кого может возникнуть подобная проблема.

Ответ 3

У меня была эта проблема и на двух разных компьютерах Windows при общении с Ардуином Леонардо. Надежным решением было:

  • Найдите COM-порт в диспетчере устройств и откройте свойства устройства.
  • Откройте вкладку "Настройки порта" и нажмите кнопку "Дополнительно".
  • Снимите флажок "Использовать буферы FIFO (требуется 16550 совместимых UART) и нажмите OK.

К сожалению, я не знаю, что делает эта функция, или как она влияет на эту проблему. После нескольких перезапусков ПК и дюжины циклов подключения устройств это единственное, что надежно устраняет проблему.

Ответ 4

Эта проблема может иметь место, если сервер БД не работает

Ответ 5

Слишком много больших файлов за один раз. Windows Barfs. По сути, копирование заняло слишком много времени, потому что вы слишком много просили у компьютера, а блокировка файла была заблокирована слишком долго, и вы установили флаг, флаг является ошибкой семафора.

Компьютер наполнил себя и задохнулся. Я видел, как оперативная память здесь постепенно заполнялась кэш-памятью. Затем при заполнении подсистемы земля остановилась с ошибкой семафора.

У меня есть обходной путь; копировать или передавать меньше файлов, а не один огромный блок. Разбейте его на наборы блоков и отправляйте по файлам по одному, возможно, по нескольку за раз, но не всегда.

Рекомендации:

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

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