| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 | using Aitex.Core.RT.DataCenter;using Aitex.Core.RT.Device;using Aitex.Core.RT.IOCore;using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Xml;namespace FurnaceRT.Devices{    public class IoDoor : BaseDevice, IDevice    {        #region Filed        private DIAccessor _diOpen;        private DIAccessor _diClose;        private DOAccessor _doOpen;        private DOAccessor _doClose;        #endregion        #region Property        public DeviceStatus OpenCloseStatus        {            get            {                if (_diOpen != null && _diClose != null && _diOpen.Value && !_diClose.Value)                    return DeviceStatus.Open;                if (_diOpen != null && _diClose != null && !_diOpen.Value && _diClose.Value)                    return DeviceStatus.Close;                return DeviceStatus.Unknown;            }        }        #endregion        public IoDoor(string module, XmlElement node, string ioModule = "")        {            base.Module = string.IsNullOrEmpty(node.GetAttribute("module")) ? module : node.GetAttribute("module");            base.Name = node.GetAttribute("id");            base.Display = node.GetAttribute("display");            base.DeviceID = node.GetAttribute("schematicId");            _diOpen = ParseDiNode("diOpen", node, ioModule);            _diClose = ParseDiNode("diClose", node, ioModule);            _doOpen = ParseDoNode("doOpen", node, ioModule);            _doClose = ParseDoNode("doClose", node, ioModule);        }        public bool Initialize()        {            DATA.Subscribe($"{Module}.{Name}.OpenCloseStatus", () => OpenCloseStatus.ToString());            //OP.Subscribe($"{Module}.{Name}.SetRetract", (string cmd, object[] param) =>            //{            //    SetRetract(out string reason);            //    return true;            //});            return true;        }        public void Monitor()        {        }        public void Reset()        {        }        public void Terminate()        {        }        public void Open()        {            _doClose.Value = false;            _doOpen.Value = true;        }        public void Close()        {            _doOpen.Value = false;            _doClose.Value = true;        }    }}
 |