当我尝试使用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);
}
}
答案 0 :(得分:2)
这种长时间延迟只能由端口的设备驱动程序引起。现在可以模拟串口并通过USB或蓝牙实际发出信号。或者肯定,加密狗意味着执行许可协议,这是你问题中唯一的提示。
您需要转向设备制造商寻求支持。在低赔率的情况下,你会听到任何回复,这种不幸事故总是强烈不信任设备质量的好理由。所以扔掉它,从另一个制造商那里拿另一个来阻止它浪费你的时间。