open()需要很长时间才能执行

本文关键字:长时间 执行 open | 更新日期: 2023-09-27 18:18:41

当我试图使用SerialPort.Open()函数时,我遇到了麻烦。有时5秒钟就能打开,有时需要几分钟。

这是我的代码:

public void InvokeSerialPortdetectedEvent(string s)
{
    SerialPortDetectEvent.Invoke(this, s); // the invoked funktion is called PortHandeler_SerialPortDetectEvent()
}

void PortHandeler_SerialPortDetectEvent(object sender, string name)
{
    OpenSerialPort(name);
    AddDongleToDeviceList();
}

private void OpenSerialPort(string Name)
{
    if (serialPort1.IsOpen)
    {
        return;
    }
    serialPort1.PortName = Name;
    try
    {
        serialPort1.Open();
        if (serialPort1.IsOpen)
        {
            Console.Write("Open Serialport: " + Name);
        }
    }
    catch (Exception e)
    {
        Console.Write(e.Message);
        Console.Write(e.StackTrace);
    }
}

open()需要很长时间才能执行

这样长的延迟只能由端口的设备驱动程序引起。现在,一个模拟串行端口,实际上是通过USB或蓝牙信号。当然,一个加密狗意味着执行许可协议,这是你问题中唯一的暗示。

你需要向设备制造商寻求支持。由于你收到回复的几率很低,这种事故总是一个很好的理由,让你强烈怀疑手机的质量。因此,扔掉它,从其他制造商那里购买另一个,以防止它浪费你的时间。