SzlDataRequest.cs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. using PlcSiemens.O;
  2. using PlcSiemens.Protocol.Common;
  3. namespace PlcSiemens.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. }