读或写时SerialPort错误时该怎么办

问题描述

我通过4Modbus dll创建了通讯RTU。接下来,我创建此类的对象:

 public class SerialPortAdapter : IStreamResource
{
    private const string NewLine = "\r\n";
    private SerialPort _serialPort;

    public SerialPortAdapter(SerialPort serialPort)
    {
        _serialPort = serialPort;
        _serialPort.NewLine = NewLine;
    }

    public int InfiniteTimeout
    {
        get { return SerialPort.InfiniteTimeout; }
    }

    public int ReadTimeout
    {
        get { return _serialPort.ReadTimeout; }
        set { _serialPort.ReadTimeout = value; }
    }

    public int WriteTimeout
    {
        get { return _serialPort.WriteTimeout; }
        set { _serialPort.WriteTimeout = value; }
    }

    public void discardInBuffer()
    {
        _serialPort.discardInBuffer();
    }

    public int Read(byte[] buffer,int offset,int count)
    {
        return _serialPort.Read(buffer,offset,count);
    }

    public void Write(byte[] buffer,int count)
    {
        _serialPort.Write(buffer,count);
    }

    public void dispose()
    {
        dispose(true);
        GC.SuppressFinalize(this);
    }

    protected virtual void dispose(bool disposing)
    {
        if (disposing)
        {
            _serialPort?.dispose();
            _serialPort = null;
        }
    }
}

并创建连接Rtu

 var adapter = new SerialPortAdapter(serialPort);
 adapter.ReadTimeout = ReadTimeout;
 adapter.WriteTimeout = WriteTimeout;
 Master = ModbusSerialMaster.CreateRtu(adapter);

在读取和写入方法中发生错误。由于端口关闭或已超过时间。并且它关闭程序,但是当我添加try catch时。它不会完成工作,并且会无限期崩溃这些错误。发生错误时如何中断读写操作?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)