ReadRequest.cs 1.0 KB

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