设计串口类

时间:2016-02-02 08:22:41

标签: c# serial-port

我正在围绕SerialPort创建包装器静态类。 我担心的是,我将有一个静态初始化方法 这将打开港口。

然后不同的线程可以开始读取和写入此端口 - 我将在此包装类的自定义读取和写入方法中使用锁。

然后会有一个静态的deinitialize方法关闭端口。

我的问题是:这种设计有问题吗?例如这样保持端口开放是不好的做法吗? (很长一段时间?)

2 个答案:

答案 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;
        }
相关问题