IoDoor.cs 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. using Aitex.Core.RT.DataCenter;
  2. using Aitex.Core.RT.Device;
  3. using Aitex.Core.RT.IOCore;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Xml;
  10. namespace FurnaceRT.Devices
  11. {
  12. public class IoDoor : BaseDevice, IDevice
  13. {
  14. #region Filed
  15. private DIAccessor _diOpen;
  16. private DIAccessor _diClose;
  17. private DOAccessor _doOpen;
  18. private DOAccessor _doClose;
  19. #endregion
  20. #region Property
  21. public DeviceStatus OpenCloseStatus
  22. {
  23. get
  24. {
  25. if (_diOpen != null && _diClose != null && _diOpen.Value && !_diClose.Value)
  26. return DeviceStatus.Open;
  27. if (_diOpen != null && _diClose != null && !_diOpen.Value && _diClose.Value)
  28. return DeviceStatus.Close;
  29. return DeviceStatus.Unknown;
  30. }
  31. }
  32. #endregion
  33. public IoDoor(string module, XmlElement node, string ioModule = "")
  34. {
  35. base.Module = string.IsNullOrEmpty(node.GetAttribute("module")) ? module : node.GetAttribute("module");
  36. base.Name = node.GetAttribute("id");
  37. base.Display = node.GetAttribute("display");
  38. base.DeviceID = node.GetAttribute("schematicId");
  39. _diOpen = ParseDiNode("diOpen", node, ioModule);
  40. _diClose = ParseDiNode("diClose", node, ioModule);
  41. _doOpen = ParseDoNode("doOpen", node, ioModule);
  42. _doClose = ParseDoNode("doClose", node, ioModule);
  43. }
  44. public bool Initialize()
  45. {
  46. DATA.Subscribe($"{Module}.{Name}.OpenCloseStatus", () => OpenCloseStatus.ToString());
  47. //OP.Subscribe($"{Module}.{Name}.SetRetract", (string cmd, object[] param) =>
  48. //{
  49. // SetRetract(out string reason);
  50. // return true;
  51. //});
  52. return true;
  53. }
  54. public void Monitor()
  55. {
  56. }
  57. public void Reset()
  58. {
  59. }
  60. public void Terminate()
  61. {
  62. }
  63. public void Open()
  64. {
  65. _doClose.Value = false;
  66. _doOpen.Value = true;
  67. }
  68. public void Close()
  69. {
  70. _doOpen.Value = false;
  71. _doClose.Value = true;
  72. }
  73. }
  74. }