c# - USB 连接 "The semaphore timeout period has expired"错误

标签 c# serial-port usb semaphore usbserial

我收到这个错误...

The semaphore timeout period has expired.

在这条线上...

ThePorts.ActivePort1.Open();

...但我只是偶尔得到它。当它发生时,它会一遍又一遍地发生。然后问题消失了,持续数小时或数天,然后它又回来了。

串口是一个连接了蓝牙的USB。

我认为这个人遇到了非常相似的问题,但不是在 C# 中

Freeze on SerialPort.Open / DeviceIoControl / GetcommState with usbser.sys

据我所知,我已经阅读了他的整个问题,以及由此产生的评论和答案,但我真的无法弄清楚哪一个解决了他的问题,或者 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
}

最佳答案

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

如果任何阅读者遇到同样的事情,我希望这个过程对你有用;但没有 promise ;嘿,这是 window 。

在我的例子中,这是 Windows 7

我从 This page 得到一点提示关于eHow;不确定这是否对任何人有帮助。

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

  • 点击开始按钮

  • 选择控制面板

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

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

  • 在通用串行总线 Controller 中,单击侧面的小三角形

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

  • 开始调查,查明此列表中的哪一个成员是罪魁祸首...

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

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

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

  • 做出正确的猜测后,关闭 USB Root Hub 属性窗口(但让设备管理器窗口保持打开状态)。

  • 物理断开 USB 集线器上的任何东西。

  • 拔掉它。

  • 将鼠标指针返回到您之前确定的列表中的那个 USB Root Hub。

  • 再次右击

  • 选择卸载

  • 让 Windows 做它的事情

  • 稍等一下

  • 如果有时间,请关闭整个计算机;有人说这是必需的。我想我没有它就走了。

  • 将 USB 集线器重新插入 PC 上的 USB 连接器

  • 如果设备管理器中的列表闪烁并闪烁一些闪光灯,则没有关系。

  • 将蓝牙连接器重新插入 USB 集线器

  • 让 Windows 做更多事情

  • 在两分钟内,我的 COM 端口再次可用,没有信号量超时。

希望它对其他可能遇到类似问题的人有用。

关于c# - USB 连接 "The semaphore timeout period has expired"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13999439/

相关文章:

c# - Web浏览器对话框弹出 block

c# - 有没有办法强制 DeflateStream 完全刷新?

android - 如何在 flutter 应用程序中使用外部 USB 摄像头?

android - ioctl 返回 ENOENT 尝试将 URB 请求发布到 Isoc 设备端点(从 android 的 JNI 访问)

c# - 对象与单元测试中引用的(深度)比较 (C#)

c# - C# 和 VB.Net 之间对象装箱/比较引用的差异

当我通过 USB 集线器连接串行设备时,Linux 进程进入 D 状态

serial-port - 有什么好的、免费的用于逆向工程的串行端口监视器?

linux - 为什么在 Linux 上使用 RS-232 时 CTRL+C 不起作用?

c++ - 我的设备通过 USB 连接后触发 exe