我正在围绕SerialPort创建包装器静态类。 我担心的是,我将有一个静态初始化方法 这将打开港口。
然后不同的线程可以开始读取和写入此端口 - 我将在此包装类的自定义读取和写入方法中使用锁。
然后会有一个静态的deinitialize方法关闭端口。
我的问题是:这种设计有问题吗?例如这样保持端口开放是不好的做法吗? (很长一段时间?)
答案 0 :(得分:0)
我不明白你为什么要为此使用静态类。 使用对象实例,可能是单例实例。 这样,您就不需要静态初始化程序,您可以使用IDisposable接口关闭端口。毕竟,在C#中并没有真正的静态去初始化器,并且一如既往地引入静态将使得很难将客户解耦。
保持串口长时间打开不应该成为问题。
答案 1 :(得分:0)
为什么不打开端口并检查端口是否打开?如果打开 - >使用它/先关闭它然后再打开。并在任何函数使用端口之前测试结果。
/// <summary>
/// Check open port
/// </summary>
/// <param name="ser">Serial port</param>
/// <param name="br">Baudrate</param>
public bool CheckOpenPort(SerialPort ser, int br)
{
try
{
if (ser.IsOpen) { ser.Close(); }
ser.Open();
ser.BaudRate = br;
Thread.Sleep(Op.WaitTimeOut);
}
catch (Exception e)
{
return false;
}
return true;
}