read method

Future read(
  1. ModbusClient client,
  2. String name
)

Read a single register value.

Parameters:

  • client: Modbus client
  • name: Register name

Returns: Decoded value

Implementation

Future<dynamic> read(ModbusClient client, String name) async {
  final reg = registers.firstWhere((r) => r.name == name,
      orElse: () => throw ArgumentError('Register "$name" not found'));

  Uint8List bytes;

  switch (reg.type) {
    case RegisterType.coil:
      bytes = await client.readCoils(slaveId, reg.address, reg.registerCount);
      break;
    case RegisterType.discreteInput:
      bytes = await client.readDiscreteInputs(slaveId, reg.address, reg.registerCount);
      break;
    case RegisterType.inputRegister:
      bytes = await client.readInputRegistersBytes(slaveId, reg.address, reg.registerCount);
      break;
    case RegisterType.holdingRegister:
      bytes = await client.readHoldingRegistersBytes(slaveId, reg.address, reg.registerCount);
      break;
  }

  return reg.decode(bytes);
}