IoPlcDateTime.cs 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. using System;
  2. using System.Xml;
  3. using Aitex.Core.RT.IOCore;
  4. namespace Aitex.Core.RT.Device.Unit
  5. {
  6. public class IoPlcDateTime : BaseDevice, IDevice
  7. {
  8. private AIAccessor _aiYear;
  9. private AIAccessor _aiMonth;
  10. private AIAccessor _aiDay;
  11. private AIAccessor _aiHour;
  12. private AIAccessor _aiMinute;
  13. private AIAccessor _aiSecond;
  14. public const int YEAR_OFFSET = 2000;
  15. public DateTime CurrentDateTime
  16. {
  17. get
  18. {
  19. if (Year == 0 && Month == 0 && Day == 0 && Hour == 0 && Minute == 0 && Second == 0)
  20. return DateTime.Now;
  21. return new DateTime(Year, Month, Day, Hour, Minute, Second);
  22. }
  23. }
  24. public bool IsValid
  25. {
  26. get
  27. {
  28. return !(Year == -1 || Month == -1 || -1 == Day || -1 == Hour || -1 == Minute || -1 == Second);
  29. }
  30. }
  31. public int Year
  32. {
  33. get
  34. {
  35. int res = -1;
  36. if (_aiYear != null)
  37. {
  38. float a = (_aiYear.Value > 0 && _aiYear.Value < 100) ? (_aiYear.Value + YEAR_OFFSET) : _aiYear.Value;
  39. res = (int)a;
  40. }
  41. return res;
  42. }
  43. }
  44. public int Month => _aiMonth == null ? -1 : (int)_aiMonth.Value;
  45. public int Day => _aiDay == null ? -1 : (int)_aiDay.Value;
  46. public int Hour => _aiHour == null ? -1 : (int)_aiHour.Value;
  47. public int Minute => _aiMinute == null ? -1 : (int)_aiMinute.Value;
  48. public int Second => _aiSecond == null ? -1 : (int)_aiSecond.Value;
  49. public IoPlcDateTime(string module, XmlElement node)
  50. {
  51. base.Module = module;
  52. base.Name = node.GetAttribute("id");
  53. base.Display = node.GetAttribute("display");
  54. base.DeviceID = node.GetAttribute("schematicId");
  55. _aiYear = ParseAiNode("aiYear", node);
  56. _aiMonth = ParseAiNode("aiMonth", node);
  57. _aiDay = ParseAiNode("aiDay", node);
  58. _aiHour = ParseAiNode("aiHour", node);
  59. _aiMinute = ParseAiNode("aiMinute", node);
  60. _aiSecond = ParseAiNode("aiSecond", node);
  61. }
  62. public bool Initialize() { return true;}
  63. public void Terminate() { }
  64. public void Monitor() { }
  65. public void Reset() { }
  66. }
  67. }