read method
Read a single register value.
Parameters:
client: Modbus clientname: 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);
}