getMultipleWriteRequest method

ModbusWriteRequest getMultipleWriteRequest(
  1. Uint8List bytes, {
  2. int? unitId,
  3. Duration? responseTimeout,
  4. ModbusEndianness? endianness,
})

Gets a write request from multiple register elements.

Implementation

ModbusWriteRequest getMultipleWriteRequest(Uint8List bytes,
    {int? unitId, Duration? responseTimeout, ModbusEndianness? endianness}) {
  if (type.writeMultipleFunction == null) {
    throw ModbusException(
        context: "ModbusBitElement",
        msg: "$type element does not support multiple write request!");
  }
  // Build the request object
  var pdu = Uint8List(6 + bytes.length);
  pdu.setAll(
      6, endianness == null ? bytes : endianness.getEndianBytes(bytes));
  ByteData.view(pdu.buffer)
    ..setUint8(0, type.writeMultipleFunction!.code)
    ..setUint16(1, address)
    ..setUint16(3, bytes.length ~/ 2) // value register count
    ..setUint8(5, bytes.length); // value byte count
  return ModbusWriteRequest(this, pdu, type.writeMultipleFunction!,
      unitId: unitId,
      responseTimeout: responseTimeout,
      endianness: endianness ?? this.endianness);
}