/// <summary> /// Helper function reading discrete inputs. /// </summary> /// <param name="console"></param> /// <param name="client"></param> /// <param name="slave"></param> /// <param name="number"></param> /// <param name="offset"></param> /// <param name="header"></param> public static void ReadingDiscreteInputs(IConsole console, IModbusClient client, byte slave, ushort number, ushort offset, bool header = true) { if (number == 1) { if (header) { console.Out.WriteLine($"Reading a single discrete input[{offset}]"); } bool[] values = client.ReadCoils(slave, offset, number); console.Out.WriteLine($"Value of discrete input[{offset}] = {values[0]}"); } else { if (header) { console.Out.WriteLine($"Reading {number} discrete inputs starting at {offset}"); } bool[] values = client.ReadCoils(slave, offset, number); for (int index = 0; index < values.Length; ++index) { console.Out.WriteLine($"Value of discrete input[{offset + index}] = {values[index]}"); } } }
private void ProcessRegisterGroup(IModbusClient client, Register register) { var dumpRepository = _unitOfWork.DumpsRepository; switch (register.Type) { case RegisterType.Coil: dumpRepository.AddRegisterResult(register, client.ReadCoils(register.Offset, register.Count)); break; case RegisterType.DiscreteInput: dumpRepository.AddRegisterResult(register, client.ReadInputRegisters(register.Offset, register.Count)); break; case RegisterType.HoldingRegister: dumpRepository.AddRegisterResult(register, client.ReadHoldingRegisters(register.Offset, register.Count)); break; case RegisterType.Input: dumpRepository.AddRegisterResult(register, client.ReadInputs(register.Offset, register.Count)); break; } //_logger.LogInformation("{date} - Register {num} processed", DateTimeOffset.Now, register.Id); }