USB连接的"信号量超时时间已过期"错误

Use*_*r.1 31 c# usb semaphore serial-port usbserial

我收到这个错误......

信号量超时期限已过期.

在这条线上......

ThePorts.ActivePort1.Open();

......但我不时会得到它.当它发生时,它会一次又一次地发生.然后问题消失了几个小时或几天,然后又回来了.

串口是连接蓝牙的USB.

我认为这个人有一个非常相似的问题,但不是在C#

使用usbser.sys冻结SerialPort.Open/DeviceIoControl/GetcommState

我可以估计,我已经阅读了他的整个问题,以及由此产生的评论和答案,但我真的无法弄清楚哪一个解决了他的问题,或者C#是否与他的体验有很大不同.

感谢您对无能为力的任何帮助.这是它发生的实际代码.

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
}
Run Code Online (Sandbox Code Playgroud)

Rud*_*osa 6

如果您遇到网络延迟或Internet或本地网络问题,也可能出现此错误.具有失败对应物的桥接连接也可能是罪魁祸首.


Use*_*r.1 5

好的,我现在正在连接而没有信号量超时问题.

如果有人读过相同的东西,我希望这个程序适合你; 但没有承诺; 嘿,这是窗户.

就我而言,这是Windows 7

我在eHow的这个页面上得到了一点提示; 不确定这是否可以帮助任何人.

所以无论如何,这是一个简单的二十三步程序,对我有用

  • 单击开始按钮

  • 选择控制面板

  • 从控制面板中,选择设备管理器

  • 从设备管理器中,选择通用串行总线控制器

  • 从通用串行总线控制器中,单击小侧面三角形

  • 我无法预测你在计算机上会看到什么,但在我的计算机上,我得到一个很长的下拉列表

  • 开始调查,找出这个名单中的哪一个成员是罪魁祸首......

    • 在下拉列表的每个成员上,右键单击名称

    • 将打开一个列表,选择"属性"

    • 猜测工作时间:使用打开的结果窗口顶部附近的各个选项卡,猜猜这是否是使用信号量超时阻塞你的东西的USB适配器驱动程序

  • 一旦你做出正确的猜测,然后关闭USB根集线器属性窗口(但保留在设备管理器窗口中打开).

  • 从USB集线器物理上断开任何东西和一切.

  • 拔掉它.

  • 将鼠标指针返回到先前确定的列表中的USB Root Hub.

  • 再次右键单击

  • 选择卸载

  • 让Windows做它的事

  • 等一会儿

  • 如果你有时间,请关闭整台电脑; 有人说这是必需的.我想我没有它就逃之夭夭.

  • 将USB集线器插回PC上的USB接口

  • 如果设备管理器中的列表闪烁并且执行了一些闪存灯泡,则可以.

  • 将蓝牙连接器插回USB集线器

  • 让windows做更多事情

  • 在两分钟内,我再次有一个工作的COM端口,没有信号量超时.

希望它适用于任何可能遇到类似问题的人.

  • 我断开了我的鼠标,我无法继续做你提到的最后一点?:) (3认同)