using Aitex.Core.RT.DataCenter; using Aitex.Core.RT.Device; using Aitex.Core.RT.OperationCenter; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Xml; namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.MfcCalculation { public class MfcManager : BaseDevice, IDevice { public List NameList = new List() { "Ar", "H2", "C2H4", "SiH4", "HCL", "N2", "TCS", "TMA" }; public List DataFlowList = new List(); private readonly object locker = new object(); //public static double H2 { get; private set; } //public static double ArFlow { get; private set; } public static double HCL_Run { get; private set; } public static double TMA_Run { get; private set; } public static double TCS_Run { get; private set; } public static double PN2_Run { get; private set; } //public static double HCL_Vent { get; private set; } //public static double TMA_Vent { get; private set; } //public static double TCS_Vent { get; private set; } //public static double PN2_Vent { get; private set; } public MfcManager(string module, XmlElement node, string ioModule = "") { var attrModule = node.GetAttribute("module"); base.Module = string.IsNullOrEmpty(attrModule) ? module : attrModule; base.Name = node.GetAttribute("id"); base.Display = node.GetAttribute("display"); base.DeviceID = node.GetAttribute("schematicId"); } public bool Initialize() { DATA.Subscribe($"{Module}.MfcManager.DataFlow", () => GetDataFlowJsonString()); OP.Subscribe($"{Module}.FlowName.Query", (string cmd, object[] args) => Query(args[0].ToString()) ); return true; } protected override void HandleMonitor() { //H2 = Convert.ToDouble(DATA.Poll($"{Module}.H2_Join.FeedBack")); //ArFlow = Convert.ToDouble(DATA.Poll($"{Module}.ArFlow_Join.FeedBack")); HCL_Run = Convert.ToDouble(DATA.Poll($"{Module}.HCL_Run.FeedBack")); TMA_Run = Convert.ToDouble(DATA.Poll($"{Module}.TMA_Run.FeedBack")); TCS_Run = Convert.ToDouble(DATA.Poll($"{Module}.TCS_Run.FeedBack")); PN2_Run = Convert.ToDouble(DATA.Poll($"{Module}.PN2_Run.FeedBack")); //HCL_Vent = Convert.ToDouble(DATA.Poll($"{Module}.HCL_Vent.FeedBack")); //TMA_Vent = Convert.ToDouble(DATA.Poll($"{Module}.TMA_Vent.FeedBack")); //TCS_Vent = Convert.ToDouble(DATA.Poll($"{Module}.TCS_Vent.FeedBack")); //PN2_Vent = Convert.ToDouble(DATA.Poll($"{Module}.PN2_Vent.FeedBack")); } public void Terminate() { } public void Reset() { } private string GetDataFlowJsonString() { lock (locker) { string str = JsonConvert.SerializeObject(FactorDataFlow()); return str; } } private List FactorDataFlow() { List flows = new List(); foreach (var item in NameList) { flows.Add(new DataFlow() { Name= item, RunFeedBack= Convert.ToDouble(DATA.Poll($"{Module}.{item}_Run.FeedBack")), VentFeedBack = Convert.ToDouble(DATA.Poll($"{Module}.{item}_Vent.FeedBack")), }); } return DataFlowList = flows; } private bool Query(string flowName) { MfcSqlHelp.Query(Module, "Flow" ,flowName); return true; } } }