public ConnectionSourceCfg Pack(ConnectionSourceAbstract connectionSource)
        {
            var src    = (TcpConnectionSource)connectionSource;
            var config = new ConnectionSourceCfg
            {
                Name        = src.Name,
                Description = src.Description,
                ClassName   = ClassName,
                Cfg         = JsonConvert.SerializeObject(new
                {
                    src.Host,
                    src.Port,
                }),
            };

            return(config);
        }
Example #2
0
        /// <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);
        }
Example #3
0
        public ConnectionSourceCfg Pack(ConnectionSourceAbstract connectionSource)
        {
            var src    = (SerialConnectionSource)connectionSource;
            var config = new ConnectionSourceCfg
            {
                Name        = src.Name,
                Description = src.Description,
                ClassName   = ClassName,
                Cfg         = JsonConvert.SerializeObject(new
                {
                    src.Port,
                    src.Baud,
                    src.Data,
                    src.Parity,
                    src.StopBits,
                }),
            };

            return(config);
        }