SzlDataRequest.cs 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. using Core.Communication.Transport;
  2. using PLC.Siemens.Protocol.Common;
  3. namespace PLC.Siemens.Protocol.Szl
  4. {
  5. public class SzlDataRequest
  6. {
  7. public static ushort Len = 0x08;
  8. public byte Ret { get; set; } // 0xFF for request
  9. public byte Ts { get; set; } // 0x09 Transport size
  10. public ushort DLen { get; set; } // Data len 0x04
  11. public ushort ID { get; set; } // First ÐèÒªµÄ²ÎÊý
  12. public ushort Index { get; set; }// First ÐèÒªµÄ²ÎÊý
  13. public bool First = true;
  14. public ushort PacketLength
  15. {
  16. get
  17. {
  18. return First ? (ushort)0x08 : (ushort)0x04;
  19. }
  20. }
  21. public void GetByteBuffer(ByteBuffer buffer)
  22. {
  23. buffer.Push(Ret);
  24. buffer.Push(Ts);
  25. buffer.Push(DLen);
  26. if (!First) return;
  27. buffer.Push(ID);
  28. buffer.Push(Index);
  29. }
  30. public void Build(bool first,ushort id,ushort index)
  31. {
  32. First = first;
  33. if (First)
  34. {
  35. Ret = 0xFF;
  36. Ts = (byte) TsType.TsResOctet;
  37. DLen = 0x04;
  38. ID = id;
  39. Index = index;
  40. }
  41. else
  42. {
  43. Ret = 0x0A;
  44. Ts = 0x00;
  45. DLen = 0x0000;
  46. ID = 0x0000;
  47. Index = 0x0000;
  48. }
  49. }
  50. }
  51. }