GetDateTimeResponse.cs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. using Core.Communication.Transport;
  2. using PLC.Siemens.Protocol.Header;
  3. using PLC.Siemens.O;
  4. namespace PLC.Siemens.Protocol.DateTime
  5. {
  6. public class GetDateTimeResponse :IBuildResponse
  7. {
  8. public HeaderPacket Header { get; set; }
  9. public ParamsResponse Params { get; set; }
  10. public DateTimeData Data { get; set; }
  11. public GetDateTimeResponse()
  12. {
  13. Header = new HeaderPacket();
  14. Params = new ParamsResponse();
  15. Data = new DateTimeData();
  16. }
  17. public void Build(ByteBuffer buffer)
  18. {
  19. Header.Build(buffer);
  20. Params.Build(buffer);
  21. Data.Build(buffer);
  22. }
  23. private int BcDtoByte(byte B)
  24. {
  25. return ((B >> 4) * 10) + (B & 0x0F);
  26. }
  27. public System.DateTime GetDateTime()
  28. {
  29. var year = BcDtoByte(Data.Time[0]);
  30. if (year < 90)
  31. year = year + 2000;
  32. var mon = BcDtoByte(Data.Time[1]);
  33. var day = BcDtoByte(Data.Time[2]);
  34. var hour = BcDtoByte(Data.Time[3]);
  35. var min = BcDtoByte(Data.Time[4]);
  36. var sec = BcDtoByte(Data.Time[5]);
  37. var wday = (Data.Time[7] & 0x0F);
  38. System.DateTime dt = new System.DateTime(year, mon, day, hour, min, sec, wday);
  39. return dt;
  40. }
  41. }
  42. }