我尝试使用蓝牙串口2天,需要等待20分钟到1小时才能让串口真正打开...
serialPort.Open()
由于此异常而失败(端口存在):
抛出异常:System.IO.Ports.dll 中的“System.IO.IOException” Element introuvable。 :'COM5'
我意识到,如果我等这么久,它就可以工作,因为我在午餐时在计算机上设置了断点,然后继续执行。 我尝试使用不同的库,但结果总是相同。 我尝试过不同的波特率等参数...... 当然,设备(HC-05)已正确配对和连接,我已经用 Android 应用程序尝试过,它可以工作。当端口最终接受打开时它也会起作用。 我传递的端口名称是好的,该端口实际上是在设备配对和连接时创建的(它会在设备管理器中弹出) 我的 Windows 安装是全新的,所以没有幽灵串行端口。 代码非常简单:
_serialPort = new SerialPort
{
BaudRate = 115200
PortName = BluetoothPortName;
};
while (!_serialPort.IsOpen) // because I want it to finally succeed!
{
try
{
_serialPort.Open();
}
catch (Exception ex)
{
_serialPort.Close();
Logger.Error(ToString(), $"Failed to open SerialPort : {ex.Message}");
Thread.Sleep(500);
}
}
这是 SerialPort.Open() 挂起时没有“异常”的解决方案。
private bool _Connect(SerialPort sp)
{
try
{
Task.Run(() => sp.Open()).Wait(2000);
if (!sp.IsOpen)
{
throw new TimeoutException("Port.Open Timeout");
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
sp.Close();
return (sp.IsOpen);
}
finally
{
}
return (sp.IsOpen);
}