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); } }
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); }