GetDateTimeResponse.cs 1.3 KB

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