public ModbusTcpAdu(ushort transactionID, byte unitID, ModbusMessage message) { this.message = message; adu = new byte[7 + message.Length]; BitHelper.WriteBuffer(adu, transactionID, TransactionIDOffset); BitHelper.WriteBuffer(adu, message.Length, LengthOffset); adu[UnitIDOffset] = unitID; Buffer.BlockCopy(message.PDU, 0, adu, 7, message.Length); }
/// <summary></summary> /// <param name="isRequest">Indentify wether modbus message is request type</param> public ModbusTcpAdu(byte[] buffer, bool isRequest) { adu = buffer; if (ProtocolID != 0) { throw new IntegrityViolationException(); } if (Length != (buffer.Length - 6)) { throw new IntegrityViolationException(); } byte[] pduSegment = new byte[buffer.Length - 7]; Buffer.BlockCopy(buffer, 7, pduSegment, 0, pduSegment.Length); if (isRequest) { message = ModbusRequest.ParseBuffer(pduSegment); } else { message = ModbusResponse.ParseBuffer(pduSegment); } }
public ModbusTcpAdu(ModbusMessage message) : this(0x0000, 0xff, message) { }
public ModbusTcpAdu(ushort transactionID, ModbusMessage message) : this(transactionID, 0xff, message) { }