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."); } }
private void CreateIpModbusMaster(IpSettings ipSettings) { var master = _modbusFactory.CreateIpMaster(ipSettings); string masterId = ipSettings.Hostname; AddMaster(masterId, master); _ea.GetEvent <NewModbusMasterEvent>().Publish(masterId); }
private void HandleConnectionRequest(ModbusType modbusType) { if (!IsAnIpType(modbusType)) { return; } var ipSettings = new IpSettings() { ModbusType = modbusType, Hostname = Hostname, Port = Port }; _eventAggregator.GetEvent <ConnectionRequestEvent>().Publish(ipSettings); }
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); }