ReadRequest.cs 1006 B

12345678910111213141516171819202122232425262728293031323334353637
  1. using System.Collections.Generic;
  2. using Core.Communication.Transport;
  3. using PLC.Siemens.Protocol.Common;
  4. using PLC.Siemens.Protocol.Header;
  5. using PLC.Siemens.O;
  6. namespace PLC.Siemens.Protocol.ReadData
  7. {
  8. public class ReadRequest:IBuildRequest
  9. {
  10. public HeaderPacket Header { get; set; }
  11. public ReadParamsRequest Params { get; set; }
  12. public List<DataItem> ListItems { get; set; }
  13. public ReadRequest()
  14. {
  15. Header = new HeaderPacket();
  16. Params = new ReadParamsRequest();
  17. }
  18. public void Build()
  19. {
  20. Params.Build(ListItems);
  21. //因为包的长度不定 所以需要等参数构建好后才能构建Header
  22. Header.Build(PduType.Request, Params.PacketLength, 0x0000);
  23. }
  24. public ByteBuffer GetBuffer()
  25. {
  26. ByteBuffer buffer = ByteBuffer.Allocate();
  27. Header.GetByteBuffer(buffer);
  28. Params.GetByteBuffer(buffer);
  29. return buffer;
  30. }
  31. }
  32. }