72 lines
1.7 KiB
C#
72 lines
1.7 KiB
C#
namespace Modbus.Serial
|
|
{
|
|
using System;
|
|
using System.Diagnostics;
|
|
using System.IO.Ports;
|
|
using global::Modbus.IO;
|
|
|
|
/// <summary>
|
|
/// Concrete Implementor - http://en.wikipedia.org/wiki/Bridge_Pattern
|
|
/// </summary>
|
|
public class SerialPortAdapter : IStreamResource
|
|
{
|
|
private const string NewLine = "\r\n";
|
|
private SerialPort _serialPort;
|
|
|
|
public SerialPortAdapter(SerialPort serialPort)
|
|
{
|
|
Debug.Assert(serialPort != null, "Argument serialPort cannot be null.");
|
|
|
|
_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 offset, int count)
|
|
{
|
|
_serialPort.Write(buffer, offset, count);
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
Dispose(true);
|
|
GC.SuppressFinalize(this);
|
|
}
|
|
|
|
protected virtual void Dispose(bool disposing)
|
|
{
|
|
if (disposing)
|
|
{
|
|
_serialPort?.Dispose();
|
|
_serialPort = null;
|
|
}
|
|
}
|
|
}
|
|
}
|