SerialPort.Open()需要很长时间才能执行

时间:2014-08-18 12:15:27

标签: c# user-interface

当我尝试使用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);
    }
}

1 个答案:

答案 0 :(得分:2)

这种长时间延迟只能由端口的设备驱动程序引起。现在可以模拟串口并通过USB或蓝牙实际发出信号。或者肯定,加密狗意味着执行许可协议,这是你问题中唯一的提示。

您需要转向设备制造商寻求支持。在低赔率的情况下,你会听到任何回复,这种不幸事故总是强烈不信任设备质量的好理由。所以扔掉它,从另一个制造商那里拿另一个来阻止它浪费你的时间。