/// <summary> /// Modbus RTU slave factory method. /// </summary> public static ModbusPromiscuousSerialSlave CreateRtu(IStreamResource streamResource) { if (streamResource == null) throw new ArgumentNullException("streamResource"); return new ModbusPromiscuousSerialSlave(new ModbusRtuTransport(streamResource)); }
/// <summary> /// Modbus ASCII master factory method. /// </summary> public static ModbusSerialMaster CreateAscii(IStreamResource streamResource) { if (streamResource == null) throw new ArgumentNullException("streamResource"); return new ModbusSerialMaster(new ModbusAsciiTransport(streamResource)); }
/// <summary> /// Modbus ASCII slave factory method. /// </summary> public static ModbusSerialSlave CreateAscii(byte unitId, IStreamResource streamResource) { if (streamResource == null) throw new ArgumentNullException("streamResource"); return new ModbusSerialSlave(unitId, new ModbusAsciiTransport(streamResource)); }
public PromiscuousListener(IStreamResource streamResource) { if (streamResource == null) throw new ArgumentNullException(nameof(streamResource)); _streamResource = streamResource; }
/// <summary> /// Modbus ASCII master factory method. /// </summary> public static ModbusSerialMaster CreateAscii(IStreamResource streamResource) { if (streamResource == null) throw new ArgumentNullException("streamResource"); StreamResourceUtility.InitializeDefaultTimeouts(streamResource); return new ModbusSerialMaster(new ModbusAsciiTransport(streamResource)); }
/// <summary> /// Modbus RTU slave factory method. /// </summary> public static ModbusSerialSlave CreateRtu(byte unitId, IStreamResource streamResource) { if (streamResource == null) throw new ArgumentNullException("streamResource"); StreamResourceUtility.InitializeDefaultTimeouts(streamResource); return new ModbusSerialSlave(unitId, new ModbusRtuTransport(streamResource)); }
public SlaveSimulatorHost(IMasterContext masterContext, IEnumerable<ISlave> slaves, double characterTimeout, double messageTimeout) { if (masterContext == null) throw new ArgumentNullException(nameof(masterContext)); if (slaves == null) throw new ArgumentNullException(nameof(slaves)); _masterContext = masterContext; _characterTimeout = characterTimeout; _messageTimeout = messageTimeout; foreach (var slave in slaves) { _slaves.Add(slave.SlaveId, slave); } var task = new Task(() => { try { using (var master = _masterContext) { _port = master.Master.Transport.GetStreamResource(); _listener = new PromiscuousListener(_port); _listener.Sample += OnSample; _listener.Listen(); } } catch (Exception ex) { //This will exception out when the port is killed Console.WriteLine(ex.ToString()); } finally { _listener.Sample -= OnSample; _listener = null; } }); //Create the timer _timer = new System.Timers.Timer { AutoReset = false }; _timer.Elapsed += TimerElapsed; task.Start(); }
internal static string ReadLine(IStreamResource stream) { var result = new StringBuilder(); var singleByteBuffer = new byte[1]; do { stream.Read(singleByteBuffer, 0, 1); result.Append(Encoding.ASCII.GetChars(singleByteBuffer).First()); } while (!result.ToString().EndsWith(Modbus.NewLine)); return result.ToString().Substring(0, result.Length - Modbus.NewLine.Length); }
private static void ExpectReadLine(IStreamResource stream, byte[] frame) { byte lastByte = 0; foreach (var b in frame) { byte tempByte = b; Expect.Call(stream.Read(new byte[] { lastByte }, 0, 1)).Do(((Func<byte[], int, int, int>) delegate(byte[] buf, int offset, int count) { Array.Copy(new byte[] { tempByte }, buf, 1); return 1; })); lastByte = tempByte; } }
internal ModbusAsciiTransport(IStreamResource streamResource, IModbusFactory modbusFactory, IModbusLogger logger) : base(streamResource, modbusFactory, logger) { Debug.Assert(streamResource != null, "Argument streamResource cannot be null."); }
internal ModbusTransport(IStreamResource streamResource) { Debug.Assert(streamResource != null, "Argument streamResource cannot be null."); _streamResource = streamResource; }
public IModbusAsciiTransport CreateAsciiTransport(IStreamResource streamResource) { return(new ModbusAsciiTransport(streamResource, this, Logger)); }
internal ModbusAsciiTransport(IStreamResource streamResource) : base(streamResource) { Debug.Assert(streamResource != null, "Argument streamResource cannot be null."); }
/// <summary> /// Creates an ASCII master. /// </summary> /// <param name="factory"></param> /// <param name="streamResource"></param> /// <returns></returns> public static IModbusSerialMaster CreateAsciiMaster(this IModbusFactory factory, IStreamResource streamResource) { IModbusAsciiTransport transport = factory.CreateAsciiTransport(streamResource); return(new ModbusSerialMaster(transport)); }
public Stream(IStreamResource streamResource) { _streamResource = streamResource; }
/// <summary> /// Initializes stream read write timeouts to default value if they have not been overridden already. /// </summary> internal static void InitializeDefaultTimeouts(IStreamResource streamResource) { streamResource.WriteTimeout = streamResource.WriteTimeout == streamResource.InfiniteTimeout ? Modbus.DefaultTimeout : streamResource.WriteTimeout; streamResource.ReadTimeout = streamResource.ReadTimeout == streamResource.InfiniteTimeout ? Modbus.DefaultTimeout : streamResource.ReadTimeout; }
public TestMaster(IStreamResource sr, IModbusMaster modbusMaster) { _sr = sr; _modbusMaster = modbusMaster; }