85 lines
2.8 KiB
C#
85 lines
2.8 KiB
C#
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.IO.Ports;
|
|||
|
using System.Linq;
|
|||
|
using System.Text;
|
|||
|
using System.Threading.Tasks;
|
|||
|
using MECF.Framework.Common.Communications;
|
|||
|
using MECF.Framework.Common.Communications.Tcp.Socket.Framing;
|
|||
|
|
|||
|
namespace MECF.Framework.Simulator.Core.Driver
|
|||
|
{
|
|||
|
public class SerialPortDeviceSimulator : DeviceSimulator
|
|||
|
{
|
|||
|
public override bool IsEnabled
|
|||
|
{
|
|||
|
get { return _serialPort!=null && _serialPort.IsOpen(); }
|
|||
|
}
|
|||
|
|
|||
|
public override bool IsConnected
|
|||
|
{
|
|||
|
get { return IsEnabled; }
|
|||
|
}
|
|||
|
|
|||
|
public string PortName
|
|||
|
{
|
|||
|
get { return _serialPort.PortName; }
|
|||
|
set { _serialPort.PortName = value; }
|
|||
|
}
|
|||
|
|
|||
|
private AsyncSerialPort _serialPort;
|
|||
|
|
|||
|
|
|||
|
public string RemoteConnection { get; set; }
|
|||
|
|
|||
|
public SerialPortDeviceSimulator(string port, int commandIndex, string lineDelimiter, char msgDelimiter, bool isAscii=true)
|
|||
|
:base(commandIndex, lineDelimiter, msgDelimiter)
|
|||
|
{
|
|||
|
_serialPort = new AsyncSerialPort(port, 9600, 8, Parity.None, StopBits.One, lineDelimiter, isAscii);
|
|||
|
_serialPort.OnDataChanged += OnReadMessage;
|
|||
|
_serialPort.OnBinaryDataChanged += OnReadMessage;
|
|||
|
_serialPort.OnErrorHappened += OnErrorMessage;
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
public SerialPortDeviceSimulator(string port, int commandIndex, string lineDelimiter, char msgDelimiter, bool isAscii, int dataBits)
|
|||
|
: base(commandIndex, lineDelimiter, msgDelimiter)
|
|||
|
{
|
|||
|
_serialPort = new AsyncSerialPort(port, 19200, dataBits, Parity.Even, StopBits.One, lineDelimiter, isAscii);
|
|||
|
_serialPort.OnDataChanged += OnReadMessage;
|
|||
|
_serialPort.OnBinaryDataChanged += OnReadMessage;
|
|||
|
_serialPort.OnErrorHappened += OnErrorMessage;
|
|||
|
}
|
|||
|
public SerialPortDeviceSimulator(string port, int commandIndex, string lineDelimiter, char msgDelimiter, bool isAscii,string parity)
|
|||
|
: base(commandIndex, lineDelimiter, msgDelimiter)
|
|||
|
{
|
|||
|
_serialPort = new AsyncSerialPort(port, 9600, 8, Parity.Even, StopBits.One, lineDelimiter, isAscii);
|
|||
|
_serialPort.OnDataChanged += OnReadMessage;
|
|||
|
_serialPort.OnBinaryDataChanged += OnReadMessage;
|
|||
|
_serialPort.OnErrorHappened += OnErrorMessage;
|
|||
|
}
|
|||
|
|
|||
|
public void Enable()
|
|||
|
{
|
|||
|
_serialPort.Open();
|
|||
|
}
|
|||
|
|
|||
|
public void Disable()
|
|||
|
{
|
|||
|
_serialPort.Close();
|
|||
|
}
|
|||
|
|
|||
|
protected override void ProcessWriteMessage(string msg)
|
|||
|
{
|
|||
|
_serialPort.Write(msg);
|
|||
|
}
|
|||
|
protected override void ProcessWriteMessage(byte[] msg)
|
|||
|
{
|
|||
|
_serialPort.Write(msg);
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
|