SzlRequest.cs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. using Core.Communication.Transport;
  2. using PLC.Siemens.Protocol.Common;
  3. using PLC.Siemens.Protocol.Header;
  4. using PLC.Siemens.O;
  5. namespace PLC.Siemens.Protocol.Szl
  6. {
  7. public class SzlRequest:IBuildRequest
  8. {
  9. public HeaderPacket Header { get; set; }
  10. public ParamsRequest Params { get; set; }
  11. public SzlDataRequest Data { get; set; }
  12. public bool First = true;
  13. public byte Seq = 0x00;
  14. public ushort ID { get; set; }
  15. public ushort Index = 0x0000;
  16. public SzlRequest()
  17. {
  18. Header = new HeaderPacket();
  19. Params = new ParamsRequest();
  20. Data = new SzlDataRequest();
  21. }
  22. public void Build()
  23. {
  24. Params.Build(First, Seq, GrType.GrSzl, PduFuncType.SFunReadSzl);
  25. Data.Build(First, ID, Index);
  26. Header.Build(PduType.Userdata, Params.PacketLength, Data.PacketLength);
  27. }
  28. public ByteBuffer GetBuffer()
  29. {
  30. ByteBuffer buffer = ByteBuffer.Allocate();
  31. Header.GetByteBuffer(buffer);
  32. Params.GetByteBuffer(buffer);
  33. Data.GetByteBuffer(buffer);
  34. return buffer;
  35. }
  36. }
  37. }