コード例 #1
0
        public async Task RunAsync(CancellationToken cancellationToken)
        {
            //Create the network
            var network = await CreateNetworkAsync();

            //Create a datastore
            DataStore = new SlaveDataStore();

            //Log the operations for debugging purposes.
            DataStore.HoldingRegisters.BeforeRead += (sender, args) => LogReadAction("HoldingRegister(s)", args);
            DataStore.InputRegisters.BeforeRead   += (sender, args) => LogReadAction("InputRegister(s)", args);
            DataStore.CoilDiscretes.BeforeRead    += (sender, args) => LogReadAction("CoilDiscrete(s)", args);
            DataStore.CoilInputs.BeforeRead       += (sender, args) => LogReadAction("CoilInput(s)", args);

            DataStore.HoldingRegisters.BeforeWrite += (sender, args) => LogWriteAction("HoldingRegister(s)", args);
            DataStore.CoilDiscretes.BeforeWrite    += (sender, args) => LogWriteAction("CoilInput(s)", args);

            Logger.LogInformation("Adding device with unit id: {UnitId}", Configuration.UnitId);

            Device = Factory.CreateSlave(Configuration.UnitId, DataStore);

            //Add the device to the network
            network.AddSlave(Device);

            using (_source.Subscribe(OnResponse))
            {
                //Listen
                await network.ListenAsync(cancellationToken);
            }
        }
コード例 #2
0
        public async Task RunAsync(CancellationToken cancellationToken)
        {
            //Create the network
            var network = await CreateNetworkAsync();

            //Create a datastore
            var dataStore = new SlaveDataStore();

            //Log the operations for debugging purposes.
            dataStore.HoldingRegisters.BeforeRead += (sender, args) => LogReadAction("HoldingRegister(s)", args);
            dataStore.InputRegisters.BeforeRead   += (sender, args) => LogReadAction("InputRegister(s)", args);
            dataStore.CoilDiscretes.BeforeRead    += (sender, args) => LogReadAction("CoilDiscrete(s)", args);
            dataStore.CoilInputs.BeforeRead       += (sender, args) => LogReadAction("CoilInput(s)", args);

            dataStore.HoldingRegisters.BeforeWrite += (sender, args) => LogWriteAction("HoldingRegister(s)", args);
            dataStore.CoilDiscretes.BeforeWrite    += (sender, args) => LogWriteAction("CoilInput(s)", args);

            var unitIds = GetUnitIds();

            foreach (var unitId in unitIds)
            {
                Logger.LogInformation("Adding device with unit id: {UnitId}", unitId);

                var device = Factory.CreateSlave(unitId, dataStore);

                //Add the device to the network
                network.AddSlave(device);
            }

            //Listen
            await network.ListenAsync(cancellationToken);
        }