IoReset.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. using System.Xml;
  2. using Aitex.Core.RT.IOCore;
  3. using Aitex.Core.Util;
  4. namespace Aitex.Core.RT.Device.Unit
  5. {
  6. public class IoReset : BaseDevice, IDevice
  7. {
  8. private int _resetTime = 5000;
  9. private DOAccessor _doReset = null;
  10. private DeviceTimer _timer = new DeviceTimer();
  11. public IoReset(string module, XmlElement node, string ioModule = "")
  12. {
  13. base.Module = module;
  14. base.Name = node.GetAttribute("id");
  15. base.Display = node.GetAttribute("display");
  16. base.DeviceID = node.GetAttribute("schematicId");
  17. _doReset = ParseDoNode("doReset", node, ioModule);
  18. if (node.HasAttribute("resetTime"))
  19. {
  20. int.TryParse(node.GetAttribute("resetTime"), out _resetTime);
  21. }
  22. }
  23. public bool Initialize()
  24. {
  25. return true;
  26. }
  27. public void Terminate()
  28. {
  29. }
  30. public void Monitor()
  31. {
  32. if (_timer.IsTimeout())
  33. {
  34. _doReset.SetValue(false, out _);
  35. _timer.Stop();
  36. }
  37. }
  38. public void Reset()
  39. {
  40. if (_timer.IsIdle())
  41. {
  42. _timer.Start(_resetTime);
  43. _doReset.SetValue(true, out _);
  44. }
  45. }
  46. }
  47. }