Ejemplo n.º 1
0
        public static IModbusMaster CreateIpMaster(this IModbusFactory factory, IpSettings ipSettings)
        {
            switch (ipSettings.ModbusType)
            {
            case ModbusType.Tcp:
                return(factory.CreateMaster(
                           new TcpClient(ipSettings.Hostname, ipSettings.Port)));

            case ModbusType.Udp:
                return(factory.CreateMaster(
                           new UdpClient(ipSettings.Hostname, ipSettings.Port)));

            case ModbusType.RtuOverTcp:
                return(factory.CreateRtuMaster(
                           new TcpClientAdapter(
                               new TcpClient(ipSettings.Hostname, ipSettings.Port))));

            case ModbusType.RtuOverUdp:
                return(factory.CreateRtuMaster(
                           new UdpClientAdapter(
                               new UdpClient(ipSettings.Hostname, ipSettings.Port))));

            default:
                throw new ArgumentException(
                          "Ip settings must be of type Tcp, Udp, RtuOverTcp, or RtuOverUdp.");
            }
        }
Ejemplo n.º 2
0
        private void CreateIpModbusMaster(IpSettings ipSettings)
        {
            var    master   = _modbusFactory.CreateIpMaster(ipSettings);
            string masterId = ipSettings.Hostname;

            AddMaster(masterId, master);
            _ea.GetEvent <NewModbusMasterEvent>().Publish(masterId);
        }
Ejemplo n.º 3
0
        private void HandleConnectionRequest(ModbusType modbusType)
        {
            if (!IsAnIpType(modbusType))
            {
                return;
            }

            var ipSettings = new IpSettings()
            {
                ModbusType = modbusType,
                Hostname   = Hostname,
                Port       = Port
            };

            _eventAggregator.GetEvent <ConnectionRequestEvent>().Publish(ipSettings);
        }
Ejemplo n.º 4
0
        private static ChordNode initChord(ILogger logger)
        {
            // retrieve the node's IP address and port from the local IP configuration
            var local = new IPEndPoint(IpSettings.GetChordIpv4Address(), IpSettings.GetChordPort());

            logger.LogInformation($"Initializing: endpoint={ local.Address }:{ local.Port }, " +
                                  $"node id={ HexString.Deserialize(HashingHelper.GetSha1Hash(local)) }");

            var netId     = IpSettings.GetIpv4NetworkId();
            var broadcast = IpSettings.GetIpv4Broadcast();

            // connect the chord node to the chord network
            var node = new ChordNode(local, logger);

            node.FindBootstrapNode(netId, broadcast)
            .ContinueWith(x => node.JoinNetwork(x.Result)).Wait();

            // write initialization success message to console
            logger.LogInformation($"Initializing: successful! Going into idle state ...");

            return(node);
        }