write method

  1. @override
void write(
  1. int function,
  2. Uint8List data
)
override

Write function with data over connector. Will be called from the ModbusClientImpl

Implementation

@override
void write(int function, Uint8List data) {
  _tid++;

  Uint8List tcpHeader = Uint8List(7); // Modbus Application Header
  ByteData.view(tcpHeader.buffer)
    ..setUint16(0, _tid, Endian.big)
    ..setUint16(4, 1 /*unitId*/ + 1 /*fn*/ + data.length, Endian.big)
    ..setUint8(6, _unitId);

  Uint8List fn = Uint8List(1); // Modbus Application Header
  ByteData.view(fn.buffer).setUint8(0, function);

  Uint8List tcpData = Uint8List.fromList(tcpHeader + fn + data);

  log.finest('SEND: ' + dumpHexToString(tcpData));

  if (_mode == ModbusMode.ascii) tcpData = AsciiConverter.toAscii(tcpData);

  _socket!.add(tcpData);
}