sendPdu method

  1. @override
Future<Uint8List> sendPdu(
  1. int slaveId,
  2. Uint8List pduRequest
)
override

Send PDU request to the remote server

Implementation

@override
Future<Uint8List> sendPdu(int slaveId, Uint8List pduRequest) async {
  if (pduRequest.length < pduMinSize || pduRequest.length > pduMaxSize) {
    throw ArgumentError(
        'modbus: pdu size \'${pduRequest.length}\' must be between \'$pduMinSize\' and \'$pduMaxSize\'');
  }

  _transactionId = (_transactionId + 1) & 0xFFFF;

  final request = ProtocolDataUnit(pduRequest[0], pduRequest.sublist(1));
  final (head, adu) = _encodeTCPFrame(_transactionId, slaveId, request);
  final aduResponse = await sendRawFrame(adu);
  final (rspHead, pdu) = _decodeTCPFrame(aduResponse);
  final response = ProtocolDataUnit(pdu[0], pdu.sublist(1));

  _verifyTCPFrame(head, rspHead, request, response);
  return pdu;
}