/// <summary> /// Creates an RTU slave network. /// </summary> /// <param name="factory"></param> /// <param name="streamResource"></param> /// <returns></returns> public static IModbusSlaveNetwork CreateRtuSlaveNetwork(this IModbusFactory factory, IStreamResource streamResource) { IModbusRtuTransport transport = factory.CreateRtuTransport(streamResource); return(factory.CreateSlaveNetwork(transport)); }
private IModbusRtuTransport CreateTransport() { IStreamResource streamResource = CreateStreamResource(); IModbusRtuTransport transport = ModbusFactory.CreateRtuTransport(streamResource); transport.ReadTimeout = _readTimeout; transport.WriteTimeout = _writeTimeout; transport.Retries = 0; return(transport); }
/// <summary> /// Gets modbus master object from cache or create new one. /// </summary> /// <param name="factory"></param> /// <param name="frameType"></param> /// <param name="connectionSource"></param> /// <returns></returns> public IModbusMaster Get(IModbusFactory factory, FrameType frameType, ConnectionSourceAbstract connectionSource) { if (factory == default) { throw new ArgumentException("argument 'factory' is mandatory"); } if (connectionSource == default) { throw new ArgumentException("argument 'connectionSource' is mandatory"); } if ((connectionSource == _connectionSource) && (_connectionSource.IsOpen) && (modbusMaster != default) && (modbusMaster?.Transport?.StreamResource?.IsOpen ?? false)) { return(modbusMaster); } _connectionSource = connectionSource; var streamResource = _connectionSource.Get(); if (frameType == FrameType.Ip) { modbusMaster = factory.CreateIpMaster(streamResource); } if (frameType == FrameType.Rtu) { var t = factory.CreateRtuTransport(streamResource); modbusMaster = factory.CreateMaster(t); } if (frameType == FrameType.Ascii) { var t = factory.CreateAsciiTransport(streamResource); modbusMaster = factory.CreateMaster(t); } return(modbusMaster); }
public static IModbusRtuTransport CreateRtuTransport(this IModbusFactory factory, SerialPort serialPort) { var adapter = new SerialPortAdapter(serialPort); return(factory.CreateRtuTransport(adapter)); }
/// <summary> /// Creates an RTU master. /// </summary> /// <param name="factory"></param> /// <param name="streamResource"></param> /// <returns></returns> public static IModbusSerialMaster CreateRtuMaster(this IModbusFactory factory, IStreamResource streamResource) { IModbusRtuTransport transport = factory.CreateRtuTransport(streamResource); return(new ModbusSerialMaster(transport)); }