我收到了这个错误...
信号量超时期限已过期。
在这一行......
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
}
答案 0 :(得分:6)
如果您遇到网络延迟或互联网或本地网络问题,也可能出现此错误。具有失败对应物的桥接连接也可能是罪魁祸首。
答案 1 :(得分:5)
好的,我现在正在连接而没有信号量超时问题。
如果有人读过同样的东西,我希望这个程序适合你;但没有承诺;嘿,它的窗户。
在我的情况下,这是Windows 7
我在eHow上从This page得到了一点提示;不确定这是否可以帮助任何人。
所以,无论如何,这是对我有用的简单的二十三步程序
点击开始按钮
选择“控制面板”
从“控制面板”中,选择“设备管理器”
从“设备管理器”中,选择“通用串行总线控制器”
从通用串行总线控制器中,单击小侧面三角形
我无法预测您在计算机上会看到什么,但在我的计算机上,我会得到一个很长的下拉列表
开始调查,找出这个名单中哪一位成员是罪魁祸首......
在下拉列表的每个成员上,右键单击名称
将打开一个列表,选择“属性”
猜测工作时间:使用打开的结果窗口顶部附近的各个选项卡,猜猜这是否是使用信号量超时阻塞你的东西的USB适配器驱动程序
一旦做出正确猜测,然后关闭USB Root Hub Properties窗口(但保持设备管理器窗口打开)。
从USB集线器中物理断开任何事物和所有内容。
拔掉它。
将鼠标指针返回到您之前确定的列表中的USB Root Hub。
再次右键单击
选择卸载
让Windows做自己的事
等一会儿
如果你有时间,请关闭整台电脑;有人说这是必需的。我想我没有它就离开了。
将USB集线器插回PC上的USB接口
如果设备管理器中的列表闪烁并闪烁一些闪光灯,那就没关系。
将蓝牙连接器插回USB集线器
让Windows再做一件事
在两分钟内,我再次使用了一个有效的COM端口,没有信号量超时。
希望它适用于任何可能遇到类似问题的人。
答案 2 :(得分:2)
在与Arduino Leonardo通信时,我在两台不同的Windows计算机上遇到了这个问题。可靠的解决方案是:
不幸的是,我不知道这个功能的作用,或者它如何影响这个问题。经过几次PC重启和十几个设备连接周期后,这是唯一能够可靠地解决问题的方法。
答案 3 :(得分:0)
一次只能存储太多大文件。 Windows Barfs。从本质上讲,复制花费的时间太长,因为您要求使用过多的计算机,并且文件锁定被锁定的时间太长,并且将标志设置为关闭,因此该标志是信号灯错误。
计算机塞满并被塞住。我看到这里的RAM内存逐渐被RAM中的缓存填充。然后,在将子系统接地填充为停止时,出现信号量错误。
我有一个解决方法;复制或传输更少的文件而不是一个巨大的块。将其分解为几组块,然后一次发送一个文件,一次发送几个,但不是很多。
参考文献:
https://appuals.com/how-to-fix-the-semaphore-timeout-period-has-expired-0x80070079/
答案 4 :(得分:0)
我遇到了类似的问题,可以通过更改端口驱动程序(位于设备管理器中的端口中)中的端口设置以适合我使用的设备来解决。
对我来说,是错误的每秒比特数设置。