Ejemplo n.º 1
0
 public ModbusMasterTcpConnection(TcpClient client, IModbusSlaveNetwork slaveNetwork, IModbusLogger logger)
     : base(new ModbusIpTransport(new TcpClientAdapter(client), logger))
 {
     Logger              = logger ?? throw new ArgumentNullException(nameof(logger));
     _client             = client ?? throw new ArgumentNullException(nameof(client));
     _endPoint           = client.Client.RemoteEndPoint.ToString();
     _stream             = client.GetStream();
     _slaveNetwork       = slaveNetwork ?? throw new ArgumentNullException(nameof(slaveNetwork));
     _requestHandlerTask = Task.Run((Func <Task>)HandleRequestAsync);
 }
Ejemplo n.º 2
0
 public ModbusMasterRtuOverTcpConnection(TcpClient client, IModbusSlaveNetwork slaveNetwork, IModbusFactory modbusFactory)
     : base(new ModbusRtuTransport(new TcpClientAdapter(client), modbusFactory))
 {
     //Logger = logger ?? throw new ArgumentNullException(nameof(logger));
     TcpClient           = client ?? throw new ArgumentNullException(nameof(client));
     EndPoint            = client.Client.RemoteEndPoint.ToString();
     Stream              = client.GetStream();
     _slaveNetwork       = slaveNetwork ?? throw new ArgumentNullException(nameof(slaveNetwork));
     _modbusFactory      = modbusFactory ?? throw new ArgumentNullException(nameof(modbusFactory));
     _requestHandlerTask = Task.Run((Func <Task>)HandleRequestAsync);
 }
Ejemplo n.º 3
0
        //使用.net core 3.1架構開發 - https://docs.microsoft.com/zh-tw/dotnet/core/introduction
        //使用NModbus開源程式碼實作Modbus通訊 - https://github.com/NModbus/NModbus
        static void Main(string[] args)
        {
            ModbusFactory       modbusFactory      = new ModbusFactory();
            TcpListener         tcpListener        = new TcpListener(new IPEndPoint(IPAddress.Any, 502));
            IModbusSlaveNetwork modbusSlaveNetwork = modbusFactory.CreateSlaveNetwork(tcpListener);
            IModbusSlave        modbusSlave        = modbusFactory.CreateSlave(1);

            modbusSlaveNetwork.AddSlave(modbusSlave);
            modbusSlaveNetwork.ListenAsync();
            Process.GetCurrentProcess().WaitForExit();
        }
Ejemplo n.º 4
0
        private void Start()
        {
            try
            {
                CompileTags(richTextBoxVar.Text);

                tagsView1.Load(tags);

                state = SvrState.Starting;

                cts = new CancellationTokenSource();
                slaveTcpListener = new TcpListener(address, port);
                slaveTcpListener.Start();
                network = factory.CreateSlaveNetwork(slaveTcpListener);

                var slave1 = factory.CreateSlave(slaveId, store);

                network.AddSlave(slave1);

                networkListenerTask = network.ListenAsync(cts.Token);

                scriptLoopTask = scriptLoop(cts.Token);

                state = SvrState.Runing;
            }
            catch (Exception ex)
            {
                jsConsole.error(ex);
                state = SvrState.Stopped;
                cts?.Cancel();
                network.Dispose();
                slaveTcpListener?.Stop();
                scriptLoopTask.Wait(100);
                scriptLoopTask.Dispose();
            }
        }