| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811 | using Aitex.Core.Common.DeviceData;using MECF.Framework.Common.DataCenter;using MECF.Framework.Common.OperationCenter;using Prism.Commands;using Prism.Mvvm;using System;using System.Collections.Generic;using System.Windows;using System.Windows.Threading;using Venus_Core;using Venus_MainPages.Views;using System.Linq;using System.Threading.Tasks;using System.IO;using Venus_Themes.CustomControls;using Venus_MainPages.Unity;using MECF.Framework.Common.CommonData.DeviceData;using Path = System.IO.Path;using System.Windows.Controls;namespace Venus_MainPages.ViewModels{    internal class OverKepler2200AViewModel : BindableBase    {        #region 私有字段        private double m_TurboN2FlowSetPoint;        private List<string> m_CurrentModuleRecipes=new List<string>();        private bool m_PVN21ValveIsOpen;        private bool m_PVN22ValveIsOpen;        private bool m_N2ValveIsOpen;        private bool m_PV11ValveIsOpen;        private bool m_PV12ValveIsOpen;        private bool m_PV21ValveIsOpen;        private bool m_PV22ValveIsOpen;        private bool m_PV31ValveIsOpen;        private bool m_PV32ValveIsOpen;        private bool m_PV41ValveIsOpen;        private bool m_PV42ValveIsOpen;        private bool m_MFC1ValveIsOpen;        private bool m_MFC2ValveIsOpen;        private bool m_MFC3ValveIsOpen;        private bool m_MFC4ValveIsOpen;        private bool m_MFC5ValveIsOpen;        private bool m_MFC6ValveIsOpen;        private bool m_MFC7ValveIsOpen;        private bool m_MFC8ValveIsOpen;        private bool m_GasFinalValveIsOpen;        private bool m_SoftPumpValveIsOpen;        private bool m_FastPumpValveIsOpen;        private bool m_PVHe1ValveIsOpen;        private bool m_PVHe2ValveIsOpen;        private bool m_TurboPumpPumpingValveIsOpen;        private bool m_TurboPumpPurgeValveIsOpen;        private bool m_GuageValveIsOpen;        private bool m_PendulumValveIsOpen;        private bool m_PurgeValveIsOpen;        private double m_HeGasSetpoint;        private int m_HePressureSetpoint;        private float m_SRFFwdPowerSetpoint;        private float m_BRFFwdPowerSetpoint;        private float m_SRFMatchC1;        private float m_SRFMatchC2;        private float m_BRFMatchC1;        private float m_BRFMatchC2;        private double m_MFC1SetPoint;        private double m_MFC2SetPoint;        private double m_MFC3SetPoint;        private double m_MFC4SetPoint;        private double m_MFC5SetPoint;        private double m_MFC6SetPoint;        private double m_MFC7SetPoint;        private double m_MFC8SetPoint;        private double m_N2SetPoint;        private AITMfcData m_MFC1Data;        private AITMfcData m_MFC2Data;        private AITMfcData m_MFC3Data;        private AITMfcData m_MFC4Data;        private AITMfcData m_MFC5Data;        private AITMfcData m_MFC6Data;        private AITMfcData m_MFC7Data;        private AITMfcData m_MFC8Data;        private AITMfcData m_MFCHeData;        private AITMfcData m_MFCN2Data;        private AITHeaterData m_PendulumHeaterData;        private AITRfData m_SRFData;        private AITRfData m_BRFData;        private AITPendulumValveData m_PendulumValveData;        //private AITHVData m_ESCHVData;        private PMState m_PMCurrentState;        private bool m_SourceRFMatchInterlock;        private bool m_IsWLK;        private bool m_IsWaterFlowOk;        private bool m_IsTurboPumpInterlock;        private bool m_IsCDAOK;        private bool m_SensorGasBoxDoor;        private bool m_SensorGasBoxPressure;        private bool m_PumpIsOpen;        private bool m_TurboIsOpen;        private bool m_IsATM;        private bool m_IsVAC;        private List<string> m_RtDataKeys;        private Dictionary<string, object> m_RtDataValues;        private int m_PositionValue;        private bool m_IsPositionMode;        private int m_ESCVoltage;        private bool m_GasIsFlowing;        private bool m_IsProcessing;        private bool m_IsAutoMode;        private string m_SelectedRecipe;        private float m_ChillerTempSetpoint;        private float m_WallTempSetpoint;        private bool m_HeIsPressureMode=true;        private bool m_ChillerIsOn;        private float m_ProcessHighPressure;        private float m_ProcessLowPressure;        private float m_ForelinePressurePressure;        private float m_ESCHePressure;        ButterflyValveView butterflyValveMessageBox;        HeaterView heaterView;        private int m_TurboPumpRotationalSpeed;        private bool m_LiftPinIsUp;        private bool m_IsSlitDoorClosed;        private bool m_IsLidClosed;        private float m_ChillerTemperature;        //private float m_HVTemperature;        private int m_ESCHVOutputVoltage;        //private float m_SRfReflectPower;        //private float m_SRfForwardPowerFeedBack;        //private float m_BRfReflectPower;        //private float m_BRfForwardPowerFeedBack;        //private int m_MatchWorkMode;        //private int m_BiasMatchWorkMode;        private float m_MatchC1;        private float m_MatchC2;        private string m_MatchWorkMode;        private float m_BiasMatchC1;        private float m_BiasMatchC2;        private float m_PendulumValvePosition;        private bool m_IsTurboPumpAtSpeed;         private bool m_TurboPumpWaterFlowSwitch;        private bool m_IsHasWafer;        private Recipe m_CurrentRecipe=new Recipe ();        private RecipeResult m_CurrentRecipeResult=new RecipeResult ();        private RecipeStep   m_CurrentRecipeStep = new RecipeStep();        private double m_ChamberPressureFeedBack;        private string m_WaferID;        private string m_ModuleName;        private int? currentRecipeNumber;        private AITHighTemperatureHeaterData m_HighTemperatureHeaterData;        private ComboBoxItem m_SelectedPosition;        private int m_HighTemperatureHeaterTemperatureSetpoint;        #endregion        #region  属性        public double TurboN2FlowSetPoint        {            get { return m_TurboN2FlowSetPoint; }            set            {                if (value != m_TurboN2FlowSetPoint)                {                    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.MfcN2.SetPoint", value);                }                SetProperty(ref m_TurboN2FlowSetPoint, value);            }        }        public List<string> CurrentModuleRecipes        {            get { return m_CurrentModuleRecipes; }            set { SetProperty(ref m_CurrentModuleRecipes, value); }        }        public Recipe CurrentRecipe        {            get { return m_CurrentRecipe; }            set { SetProperty(ref m_CurrentRecipe, value); }        }        public RecipeResult CurrentRecipeResult        {            get { return m_CurrentRecipeResult; }            set { SetProperty(ref m_CurrentRecipeResult, value); }        }        public RecipeStep CurrentRecipeStep        {            get { return m_CurrentRecipeStep; }            set { SetProperty(ref m_CurrentRecipeStep, value); }        }        public bool IsHasWafer        {            get { return m_IsHasWafer; }            set { SetProperty(ref m_IsHasWafer, value); }        }        public bool IsTurboPumpAtSpeed        {            get { return m_IsTurboPumpAtSpeed; }            set { SetProperty(ref m_IsTurboPumpAtSpeed, value); }        }        public bool TurboPumpWaterFlowSwitch        {            get { return m_TurboPumpWaterFlowSwitch; }            set { SetProperty(ref m_TurboPumpWaterFlowSwitch, value); }        }        public float PendulumValvePosition        {            get { return m_PendulumValvePosition; }            set{SetProperty(ref m_PendulumValvePosition, value);}        }        public float BiasMatchC1        {            get { return m_BiasMatchC1; }            set            {                SetProperty(ref m_BiasMatchC1, value);            }        }        public float BiasMatchC2        {            get { return m_BiasMatchC2; }            set            {                SetProperty(ref m_BiasMatchC2, value);            }        }        public float MatchC1        {            get { return m_MatchC1; }            set            {                SetProperty(ref m_MatchC1, value);            }        }        public float MatchC2        {            get { return m_MatchC2; }            set            {                SetProperty(ref m_MatchC2, value);            }        }        public AITPendulumValveData PendulumValveData        {            get { return m_PendulumValveData; }            set            {                SetProperty(ref m_PendulumValveData, value);            }        }        //public AITHVData ESCHVData        //{        //    get { return m_ESCHVData; }        //    set        //    {        //        SetProperty(ref m_ESCHVData, value);        //    }        //}        public int ESCHVOutputVoltage        {            get { return m_ESCHVOutputVoltage; }            set            {                SetProperty(ref m_ESCHVOutputVoltage, value);            }        }        public float ChillerTemperature        {            get { return m_ChillerTemperature; }            set            {                SetProperty(ref m_ChillerTemperature, value);            }        }        //public float HVTemperature        //{        //    get { return m_HVTemperature; }        //    set        //    {        //        SetProperty(ref m_HVTemperature, value);        //    }        //}        public bool IsLidClosed        {            get { return m_IsLidClosed; }            set            {                SetProperty(ref m_IsLidClosed, value);            }        }        public bool IsSlitDoorClosed        {            get { return m_IsSlitDoorClosed; }            set            {                SetProperty(ref m_IsSlitDoorClosed, value);            }        }        public bool LiftPinIsUp        {            get { return m_LiftPinIsUp; }            set            {                SetProperty(ref m_LiftPinIsUp, value);            }        }        public int TurboPumpRotationalSpeed        {            get { return m_TurboPumpRotationalSpeed; }            set            {                SetProperty(ref m_TurboPumpRotationalSpeed, value);            }        }        public float ESCHePressure        {            get { return m_ESCHePressure; }            set            {                SetProperty(ref m_ESCHePressure, value);            }        }        public float ProcessHighPressure        {            get { return m_ProcessHighPressure; }            set            {                SetProperty(ref m_ProcessHighPressure, value);            }        }        public float ProcessLowPressure        {            get { return m_ProcessLowPressure; }            set            {                SetProperty(ref m_ProcessLowPressure, value);            }        }        public float ForelinePressure        {            get { return m_ForelinePressurePressure; }            set            {                SetProperty(ref m_ForelinePressurePressure, value);            }        }        public bool SourceRFMatchInterlock        {            get { return m_SourceRFMatchInterlock; }            set            {                SetProperty(ref m_SourceRFMatchInterlock, value);            }        }        public bool IsWLK        {            get { return m_IsWLK; }            set            {                SetProperty(ref m_IsWLK, value);            }        }        public bool IsWaterFlowOk        {            get { return m_IsWaterFlowOk; }            set            {                SetProperty(ref m_IsWaterFlowOk, value);            }        }        public bool IsCDAOK        {            get { return m_IsCDAOK; }            set            {                SetProperty(ref m_IsCDAOK, value);            }        }        public bool SensorGasBoxDoor        {            get { return m_SensorGasBoxDoor; }            set            {                SetProperty(ref m_SensorGasBoxDoor, value);            }        }        public bool SensorGasBoxPressure        {            get { return m_SensorGasBoxPressure; }            set            {                SetProperty(ref m_SensorGasBoxPressure, value);            }        }        public bool IsTurboPumpInterlock        {            get { return m_IsTurboPumpInterlock; }            set            {                SetProperty(ref m_IsTurboPumpInterlock, value);            }        }        public string ModuleName         {            get { return m_ModuleName; }            set            {                SetProperty(ref m_ModuleName, value);            }        }        public double MFC1SetPoint        {            get { return m_MFC1SetPoint; }            set { SetProperty(ref m_MFC1SetPoint, value); }        }        public double MFC2SetPoint        {            get { return m_MFC2SetPoint; }            set { SetProperty(ref m_MFC2SetPoint, value); }        }        public double MFC3SetPoint        {            get { return m_MFC3SetPoint; }            set { SetProperty(ref m_MFC3SetPoint, value); }        }        public double MFC4SetPoint        {            get { return m_MFC4SetPoint; }            set { SetProperty(ref m_MFC4SetPoint, value); }        }        public double MFC5SetPoint        {            get { return m_MFC5SetPoint; }            set { SetProperty(ref m_MFC5SetPoint, value); }        }        public double MFC6SetPoint        {            get { return m_MFC6SetPoint; }            set { SetProperty(ref m_MFC6SetPoint, value); }        }        public double MFC7SetPoint        {            get { return m_MFC7SetPoint; }            set { SetProperty(ref m_MFC7SetPoint, value); }        }        public double MFC8SetPoint        {            get { return m_MFC8SetPoint; }            set { SetProperty(ref m_MFC8SetPoint, value); }        }        public double N2SetPoint        {            get { return m_N2SetPoint; }            set { SetProperty(ref m_N2SetPoint, value); }        }        public AITMfcData MFC1Data        {            get { return m_MFC1Data; }            set { SetProperty(ref m_MFC1Data, value); }        }        public AITMfcData MFC2Data        {            get { return m_MFC2Data; }            set { SetProperty(ref m_MFC2Data, value); }        }        public AITMfcData MFC3Data        {            get { return m_MFC3Data; }            set { SetProperty(ref m_MFC3Data, value); }        }        public AITMfcData MFC4Data        {            get { return m_MFC4Data; }            set { SetProperty(ref m_MFC4Data, value); }        }        public AITMfcData MFC5Data        {            get { return m_MFC5Data; }            set { SetProperty(ref m_MFC5Data, value); }        }        public AITMfcData MFC6Data        {            get { return m_MFC6Data; }            set { SetProperty(ref m_MFC6Data, value); }        }        public AITMfcData MFC7Data        {            get { return m_MFC7Data; }            set { SetProperty(ref m_MFC7Data, value); }        }        public AITMfcData MFC8Data        {            get { return m_MFC8Data; }            set { SetProperty(ref m_MFC8Data, value); }        }        public AITMfcData MFCHeData        {            get { return m_MFCHeData; }            set { SetProperty(ref m_MFCHeData, value); }        }        public AITMfcData MFCN2Data        {            get { return m_MFCN2Data; }            set { SetProperty(ref m_MFCN2Data, value); }        }        //public AITHeaterData ValveHeaterData        //{        //    get { return m_ValveHeaterData; }        //    set { SetProperty(ref m_ValveHeaterData, value); }        //}        //public AITHeaterData ForelineHeaterData        //{        //    get { return m_ForelineHeaterData; }        //    set { SetProperty(ref m_ForelineHeaterData, value); }        //}        //public AITHeaterData WallHeaterData        //{        //    get { return m_WallHeaterData; }        //    set { SetProperty(ref m_WallHeaterData, value); }        //}        public AITRfData SRFData        {            get { return m_SRFData; }            set { SetProperty(ref m_SRFData, value); }        }        public AITRfData BRFData        {            get { return m_BRFData; }            set { SetProperty(ref m_BRFData, value); }        }        public PMState PMCurrentState        {            get { return m_PMCurrentState; }            set { SetProperty(ref m_PMCurrentState, value); }        }        #region 阀        public bool GasFinalValveIsOpen        {            get { return m_GasFinalValveIsOpen; }            set { SetProperty(ref m_GasFinalValveIsOpen, value); }        }        public bool PVN21ValveIsOpen        {            get { return m_PVN21ValveIsOpen; }            set { SetProperty(ref m_PVN21ValveIsOpen, value); }        }        public bool PVN22ValveIsOpen        {            get { return m_PVN22ValveIsOpen; }            set { SetProperty(ref m_PVN22ValveIsOpen, value); }        }        public bool N2ValveIsOpen        {            get { return m_N2ValveIsOpen; }            set { SetProperty(ref m_N2ValveIsOpen, value); }        }        public bool PV11ValveIsOpen        {            get { return m_PV11ValveIsOpen; }            set { SetProperty(ref m_PV11ValveIsOpen, value); }        }        public bool PV12ValveIsOpen        {            get { return m_PV12ValveIsOpen; }            set { SetProperty(ref m_PV12ValveIsOpen, value); }        }        public bool MFC1ValveIsOpen        {            get { return m_MFC1ValveIsOpen; }            set { SetProperty(ref m_MFC1ValveIsOpen, value); }        }        public bool PV21ValveIsOpen        {            get { return m_PV21ValveIsOpen; }            set { SetProperty(ref m_PV21ValveIsOpen, value); }        }        public bool PV22ValveIsOpen        {            get { return m_PV22ValveIsOpen; }            set { SetProperty(ref m_PV22ValveIsOpen, value); }        }        public bool MFC2ValveIsOpen        {            get { return m_MFC2ValveIsOpen; }            set { SetProperty(ref m_MFC2ValveIsOpen, value); }        }        public bool PV31ValveIsOpen        {            get { return m_PV31ValveIsOpen; }            set { SetProperty(ref m_PV31ValveIsOpen, value); }        }        public bool PV32ValveIsOpen        {            get { return m_PV32ValveIsOpen; }            set { SetProperty(ref m_PV32ValveIsOpen, value); }        }        public bool MFC3ValveIsOpen        {            get { return m_MFC3ValveIsOpen; }            set { SetProperty(ref m_MFC3ValveIsOpen, value); }        }        public bool PV41ValveIsOpen        {            get { return m_PV41ValveIsOpen; }            set { SetProperty(ref m_PV41ValveIsOpen, value); }        }        public bool PV42ValveIsOpen        {            get { return m_PV42ValveIsOpen; }            set { SetProperty(ref m_PV42ValveIsOpen, value); }        }        public bool MFC4ValveIsOpen        {            get { return m_MFC4ValveIsOpen; }            set { SetProperty(ref m_MFC4ValveIsOpen, value); }        }        public bool MFC5ValveIsOpen        {            get { return m_MFC5ValveIsOpen; }            set { SetProperty(ref m_MFC5ValveIsOpen, value); }        }        public bool MFC6ValveIsOpen        {            get { return m_MFC6ValveIsOpen; }            set { SetProperty(ref m_MFC6ValveIsOpen, value); }        }        public bool MFC7ValveIsOpen        {            get { return m_MFC7ValveIsOpen; }            set { SetProperty(ref m_MFC7ValveIsOpen, value); }        }        public bool MFC8ValveIsOpen        {            get { return m_MFC8ValveIsOpen; }            set { SetProperty(ref m_MFC8ValveIsOpen, value); }        }        public bool PVHe1ValveIsOpen        {            get { return m_PVHe1ValveIsOpen; }            set { SetProperty(ref m_PVHe1ValveIsOpen, value); }        }        public bool PVHe2ValveIsOpen        {            get { return m_PVHe2ValveIsOpen; }            set { SetProperty(ref m_PVHe2ValveIsOpen, value); }        }        public bool TurboPumpPumpingValveIsOpen        {            get { return m_TurboPumpPumpingValveIsOpen; }            set { SetProperty(ref m_TurboPumpPumpingValveIsOpen, value); }        }        public bool TurboPumpPurgeValveIsOpen        {            get { return m_TurboPumpPurgeValveIsOpen; }            set { SetProperty(ref m_TurboPumpPurgeValveIsOpen, value); }        }        public bool SoftPumpValveIsOpen        {            get { return m_SoftPumpValveIsOpen; }            set { SetProperty(ref m_SoftPumpValveIsOpen, value); }        }        public bool FastPumpValveIsOpen        {            get { return m_FastPumpValveIsOpen; }            set { SetProperty(ref m_FastPumpValveIsOpen, value); }        }        public bool GuageValveIsOpen        {            get { return m_GuageValveIsOpen; }            set { SetProperty(ref m_GuageValveIsOpen, value); }        }        #endregion        public Dictionary<string, object> RtDataValues        {            get { return m_RtDataValues; }            set { SetProperty(ref m_RtDataValues, value); }        }                       public bool PumpIsOpen        {            get { return m_PumpIsOpen; }            set { SetProperty(ref m_PumpIsOpen, value); }        }        public bool PendulumValveIsOpen        {            get { return m_PendulumValveIsOpen; }            set { SetProperty(ref m_PendulumValveIsOpen, value); }        }        public bool PurgeValveIsOpen        {            get { return m_PurgeValveIsOpen; }            set { SetProperty(ref m_PurgeValveIsOpen, value); }        }        public bool TurboIsOpen        {            get { return m_TurboIsOpen; }            set { SetProperty(ref m_TurboIsOpen, value); }        }        public bool IsATM        {            get { return m_IsATM; }            set { SetProperty(ref m_IsATM, value); }        }        public bool IsVAC        {            get { return m_IsVAC; }            set { SetProperty(ref m_IsVAC, value); }        }               //public bool BRFIsOn        //{        //    get { return m_BRFIsOn; }        //    set { SetProperty(ref m_BRFIsOn, value); }        //}        //public bool SRFIsOn        //{        //    get { return m_SRFIsOn; }        //    set { SetProperty(ref m_SRFIsOn, value); }        //}        public int PositionValue        {            get { return m_PositionValue; }            set { SetProperty(ref m_PositionValue, value); }        }        public bool IsPositionMode        {            get { return m_IsPositionMode; }            set { SetProperty(ref m_IsPositionMode, value); }        }                public double HeGasSetpoint        {            get { return m_HeGasSetpoint; }            set             {                SetProperty(ref m_HeGasSetpoint, value);             }        }        public int HePressureSetpoint        {            get { return m_HePressureSetpoint; }            set             {                SetProperty(ref m_HePressureSetpoint, value);             }        }        public float SRFFwdPowerSetpoint        {            get { return m_SRFFwdPowerSetpoint; }            set { SetProperty(ref m_SRFFwdPowerSetpoint, value); }        }        public float BRFFwdPowerSetpoint        {            get { return m_BRFFwdPowerSetpoint; }            set { SetProperty(ref m_BRFFwdPowerSetpoint, value); }        }        public int ESCVoltage        {            get { return m_ESCVoltage; }            set { SetProperty(ref m_ESCVoltage, value); }        }        public float SRFMatchC1        {            get { return m_SRFMatchC1; }            set { SetProperty(ref m_SRFMatchC1, value); }        }        public float SRFMatchC2        {            get { return m_SRFMatchC2; }            set { SetProperty(ref m_SRFMatchC2, value); }        }        public string MatchWorkMode        {            get { return m_MatchWorkMode; }            set            {                SetProperty(ref m_MatchWorkMode, value);            }        }        public float BRFMatchC1        {            get { return m_BRFMatchC1; }            set { SetProperty(ref m_BRFMatchC1, value); }        }        public float BRFMatchC2        {            get { return m_BRFMatchC2; }            set { SetProperty(ref m_BRFMatchC2, value); }        }        public bool GasIsFlowing        {            get { return m_GasIsFlowing; }            set { SetProperty(ref m_GasIsFlowing, value); }        }        public bool IsProcessing        {            get { return m_IsProcessing; }            set { SetProperty(ref m_IsProcessing, value); }        }        public bool IsAutoMode        {            get { return m_IsAutoMode; }            set { SetProperty(ref m_IsAutoMode, value); }        }        public string SelectedRecipe        {            get { return m_SelectedRecipe; }            set { SetProperty(ref m_SelectedRecipe, value); }        }        public float ChillerTempSetpoint        {            get { return m_ChillerTempSetpoint; }            set { SetProperty(ref m_ChillerTempSetpoint, value); }        }        public float WallTempSetpoint        {            get { return m_WallTempSetpoint; }            set { SetProperty(ref m_WallTempSetpoint, value); }        }        public bool HeIsPressureMode        {            get { return m_HeIsPressureMode; }            set { SetProperty(ref m_HeIsPressureMode, value); }        }        public bool ChillerIsOn        {            get { return m_ChillerIsOn; }            set { SetProperty(ref m_ChillerIsOn, value); }        }        public double ChamberPressureFeedBack        {            get { return m_ChamberPressureFeedBack; }            set { SetProperty(ref m_ChamberPressureFeedBack, value); }        }        public string WaferID        {            get { return m_WaferID; }            set { SetProperty(ref m_WaferID, value); }        }        public AITHighTemperatureHeaterData HighTemperatureHeaterData        {            get { return m_HighTemperatureHeaterData; }            set { SetProperty(ref m_HighTemperatureHeaterData, value); }        }        public ComboBoxItem SelectedPosition        {            get { return m_SelectedPosition; }            set { SetProperty(ref m_SelectedPosition, value); }        }        public int HighTemperatureHeaterTemperatureSetpoint        {            get { return m_HighTemperatureHeaterTemperatureSetpoint; }            set { SetProperty(ref m_HighTemperatureHeaterTemperatureSetpoint, value); }        }        public AITHeaterData PendulumHeaterData        {            get { return m_PendulumHeaterData; }            set { SetProperty(ref m_PendulumHeaterData, value); }        }        #endregion        #region 命令        private DelegateCommand _PMInitCommnad;        public DelegateCommand PMInitCommnad =>            _PMInitCommnad ?? (_PMInitCommnad = new DelegateCommand(OnPMInit));        private DelegateCommand _PMAbortCommnad;        public DelegateCommand PMAbortCommnad =>            _PMAbortCommnad ?? (_PMAbortCommnad = new DelegateCommand(OnPMAbort));        private DelegateCommand _GasCommand;        public DelegateCommand GasCommand =>            _GasCommand ?? (_GasCommand = new DelegateCommand(OnGas));        private DelegateCommand _HeCommand;        public DelegateCommand HeCommand =>            _HeCommand ?? (_HeCommand = new DelegateCommand(OnHe));        private DelegateCommand _RfCommand;        public DelegateCommand RfCommand =>            _RfCommand ?? (_RfCommand = new DelegateCommand(OnRf));        private DelegateCommand _PurgeCommand;        public DelegateCommand PurgeCommand =>            _PurgeCommand ?? (_PurgeCommand = new DelegateCommand(OnPurge));        private DelegateCommand _VentCommand;        public DelegateCommand VentCommand =>            _VentCommand ?? (_VentCommand = new DelegateCommand(OnVent));        private DelegateCommand _PumpCommand;        public DelegateCommand PumpCommand =>            _PumpCommand ?? (_PumpCommand = new DelegateCommand(OnPump));        private DelegateCommand _OpenPumpCommand;        public DelegateCommand OpenPumpCommand =>            _OpenPumpCommand ?? (_OpenPumpCommand = new DelegateCommand(OnOpenPump));        private DelegateCommand _ClosePumpCommand;        public DelegateCommand ClosePumpCommand =>            _ClosePumpCommand ?? (_ClosePumpCommand = new DelegateCommand(OnClosePump));        private DelegateCommand _OpenTurboPumpCommand;        public DelegateCommand OpenTurboPumpCommand =>            _OpenTurboPumpCommand ?? (_OpenTurboPumpCommand = new DelegateCommand(OnOpenTurboPump));        private DelegateCommand _CloseTurboPumpCommand;        public DelegateCommand CloseTurboPumpCommand =>            _CloseTurboPumpCommand ?? (_CloseTurboPumpCommand = new DelegateCommand(OnCloseTurboPump));        private DelegateCommand _OpenPendulumValveCommand;        public DelegateCommand OpenPendulumValveCommand =>            _OpenPendulumValveCommand ?? (_OpenPendulumValveCommand = new DelegateCommand(OnOpenPendulumValve));        private DelegateCommand _ClosePendulumValveCommand;        public DelegateCommand ClosePendulumValveCommand =>            _ClosePendulumValveCommand ?? (_ClosePendulumValveCommand = new DelegateCommand(OnClosePendulumValve));        private DelegateCommand<object> _PinUpDownCommand;        public DelegateCommand<object> PinUpDownCommand =>            _PinUpDownCommand ?? (_PinUpDownCommand = new DelegateCommand<object>(OnPinUpDown));        private DelegateCommand<object> _LidUpDownCommand;        public DelegateCommand<object> LidUpDownCommand =>            _LidUpDownCommand ?? (_LidUpDownCommand = new DelegateCommand<object>(OnLidUpDown));        private DelegateCommand _SetSRfCommand;        public DelegateCommand SetSRfCommand =>            _SetSRfCommand ?? (_SetSRfCommand = new DelegateCommand(OnSetSRf));        private DelegateCommand _SetBRfCommand;        public DelegateCommand SetBRfCommand =>            _SetBRfCommand ?? (_SetBRfCommand = new DelegateCommand(OnSetBRf));        private DelegateCommand _OpenButterflyValveViewCommand;        public DelegateCommand OpenButterflyValveViewCommand =>            _OpenButterflyValveViewCommand ?? (_OpenButterflyValveViewCommand = new DelegateCommand(OnOpenButterflyValveView));        //private DelegateCommand _HVCommand;        //public DelegateCommand HVCommand =>        //    _HVCommand ?? (_HVCommand = new DelegateCommand(OnHV));        private DelegateCommand _HVSetCommand;        public DelegateCommand HVSetCommand =>            _HVSetCommand ?? (_HVSetCommand = new DelegateCommand(OnHVSet));        private DelegateCommand _LoadRecipeCommand;        public DelegateCommand LoadRecipeCommand =>            _LoadRecipeCommand ?? (_LoadRecipeCommand = new DelegateCommand(OnLoadRecipe));        private DelegateCommand<object> _ControlValveCommand;        public DelegateCommand<object> ControlValveCommand =>            _ControlValveCommand ?? (_ControlValveCommand = new DelegateCommand<object>(OnControlValve));        private DelegateCommand<object> _RunRecipeCommand;        public DelegateCommand<object> RunRecipeCommand =>            _RunRecipeCommand ?? (_RunRecipeCommand = new DelegateCommand<object>(OnRunRecipe));        private DelegateCommand _SetChillerTempCommand;        public DelegateCommand SetChillerTempCommand =>            _SetChillerTempCommand ?? (_SetChillerTempCommand = new DelegateCommand(OnSetChillerTemp));        private DelegateCommand _OnOffChillerCommand;        public DelegateCommand OnOffChillerCommand =>            _OnOffChillerCommand ?? (_OnOffChillerCommand = new DelegateCommand(OnOffChiller));        private DelegateCommand<object> _HeaterCommand;        public DelegateCommand<object> HeaterCommand =>            _HeaterCommand ?? (_HeaterCommand = new DelegateCommand<object>(OnHeater));        private DelegateCommand _EndStepCommand;        public DelegateCommand EndStepCommand =>            _EndStepCommand ?? (_EndStepCommand = new DelegateCommand(OnEndStep));        private DelegateCommand _GotoPositionCommand;        public DelegateCommand GotoPositionCommand =>            _GotoPositionCommand ?? (_GotoPositionCommand = new DelegateCommand(OnGotoPosition));        private DelegateCommand _SwitchHighTemperatureHeaterCommand;        public DelegateCommand SwitchHighTemperatureHeaterCommand =>            _SwitchHighTemperatureHeaterCommand ?? (_SwitchHighTemperatureHeaterCommand = new DelegateCommand(OnSwitchHighTemperatureHeater));        private DelegateCommand<object> _AbortRecipeCommnad;        public DelegateCommand<object> AbortRecipeCommnad =>            _AbortRecipeCommnad ?? (_AbortRecipeCommnad = new DelegateCommand<object>(OnAbortRecipe));        #endregion        #region 构造函数        public OverKepler2200AViewModel()        {            m_RtDataKeys = new List<string>();            m_IsATM = true;            ModuleName = "PMA";                        //CurrentModuleRecipes = GetFilesNames(Path.Combine(QueryDataClient.Instance.Service.GetData("GetRTPath").ToString(), "Recipes", ModuleName)).ToList();            DispatcherTimer timer = new DispatcherTimer();            timer.Interval = TimeSpan.FromSeconds(0.1);            timer.Tick += timer_Tick;            timer.Start();        }        #endregion        #region 命令方法        private void OnControlValve(object obj)        {            CommonValveControl commonValveControl = (CommonValveControl)obj;            if (commonValveControl.IsCanEdit == true)            {             InvokeClient.Instance.Service.DoOperation($"{ModuleName}.ControlValve",Convert.ToInt32( commonValveControl.Tag.ToString()), !commonValveControl.Status);            }        }        private void OnPMInit()        {            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Home");        }        private async void OnGas()        {            await Task.Run(async () =>             {                    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.MfcGas1.SetPoint", MFC1SetPoint);                    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.MfcGas2.SetPoint", MFC2SetPoint);                    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.MfcGas3.SetPoint", MFC3SetPoint);                    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.MfcGas4.SetPoint", MFC4SetPoint);                    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.MfcGas5.SetPoint", MFC5SetPoint);                    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.MfcGas6.SetPoint", MFC6SetPoint);                    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.MfcGas7.SetPoint", MFC7SetPoint);                    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.MfcGas8.SetPoint", MFC8SetPoint);                    await Task.Delay(1000);                    object[] mfc = new object[8];                    string[] mfcSetPoint = new string[8];                    mfc[0] = MFC1Data.SetPoint;                    mfc[1] = MFC2Data.SetPoint;                    mfc[2] = MFC3Data.SetPoint;                    mfc[3] = MFC4Data.SetPoint;                    mfc[4] = MFC5Data.SetPoint;                    mfc[5] = MFC6Data.SetPoint;                    mfc[6] = MFC7Data.SetPoint;                    mfc[7] = MFC8Data.SetPoint;                   InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.GasFlow}", mfc);                            });                              }        private void OnHe()        {            if (PVHe1ValveIsOpen == true)            {                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.SetBacksideHeFlow", 0.0d);                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.SetBacksideHePressure", 0);            }            else            {                if (HeIsPressureMode)                {                    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.SetBacksideHePressure", HeGasSetpoint);                }                else                {                 InvokeClient.Instance.Service.DoOperation($"{ModuleName}.SetBacksideHeFlow", HeGasSetpoint);                }            }        }        private void OnRf()        {            if (PMCurrentState == PMState.RfPowering)            {                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.Abort}");            }            else            {                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.RfPower}");            }        }        private void OnPurge()        {            //if (RtDataValues[$"{ModuleName}.FsmState"].ToString() ==PMState.Purge.ToString())            //if (PMCurrentState == PMState.Purging || N2SetPoint<=0)            //{            //    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.MfcN2.SetPoint", 0);            //    await Task.Delay(1000);            //    //InvokeClient.Instance.Service.DoOperation($"{ModuleName}.StopPurge");            //    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.Abort}");            //}            //else            //{            //    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.MfcN2.SetPoint", N2SetPoint);            //    await Task.Delay(1000);            //    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Purge");            //}            if (PMCurrentState == PMState.Purging)            {                //InvokeClient.Instance.Service.DoOperation($"{ModuleName}.MfcN2.SetPoint", 0);                //await Task.Delay(1000);                ////InvokeClient.Instance.Service.DoOperation($"{ModuleName}.StopPurge");                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.Abort}");            }            else            {                //InvokeClient.Instance.Service.DoOperation($"{ModuleName}.MfcN2.SetPoint", N2SetPoint);                //await Task.Delay(1000);                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Purge");            }        }        private void OnVent()        {            //if (RtDataValues[$"{ModuleName}.FsmState"].ToString()==PMState.Venting.ToString())            if (PMCurrentState == PMState.Venting)            {                //InvokeClient.Instance.Service.DoOperation($"{ModuleName}.StopVent");                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.Abort}");            }            else            {                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Vent");            }        }        private void OnPump()        {            //if (RtDataValues[$"{ModuleName}.FsmState"].ToString() == PMState.Pumping.ToString())            if (PMCurrentState==PMState.Pumping)            {                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.Abort}");                return;            }            //if (PMCurrentState == PMState.pum)            //{            //    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.StopPump");            //    return;            //}            //string BasePressureSetPoint= RtConfigValues[$"{ModuleName}.Pump.PumpBasePressure"].ToString(); ;            //{            //    get { return RtConfigValues[$"{ModuleName}.Pump.PumpBasePressure"].ToString(); }            //}            //string PumpLimitSetPoint= RtConfigValues[$"{ModuleName}.Pump.PumpTimeLimit"].ToString();            //{            //    get { return RtConfigValues[$"{ModuleName}.Pump.PumpTimeLimit"].ToString(); }            //}            string BasePressureSetPoint = QueryDataClient.Instance.Service.GetConfig($"{ModuleName}.Pump.PumpBasePressure").ToString();            string PumpLimitSetPoint= QueryDataClient.Instance.Service.GetConfig($"{ModuleName}.Pump.PumpTimeLimit").ToString();            // 设置底压            double basePressure = string.IsNullOrEmpty(BasePressureSetPoint) ? 0 : Convert.ToDouble(BasePressureSetPoint);            if (basePressure <= 0.01 || basePressure >= 1000)            {                MessageBox.Show($"基准压力设定值 {basePressure} 无效,应该在0到1000毫托之间");                return;            }            double pumpLimit = string.IsNullOrEmpty(PumpLimitSetPoint) ? 0 : Convert.ToDouble(PumpLimitSetPoint);            if (pumpLimit <= 0.01 || pumpLimit >= 1200)            {                MessageBox.Show($"抽气时间应该在0到1200之间,当前设定值{pumpLimit}");                return;            }            InvokeClient.Instance.Service.DoOperation("System.SetConfig", $"{ModuleName}.Pump.PumpBasePressure", basePressure.ToString());            InvokeClient.Instance.Service.DoOperation("System.SetConfig", $"{ModuleName}.Pump.PumpTimeLimit", pumpLimit.ToString());            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Pump");        }        private void OnOpenPump()        {            //if (RtDataValues[$"{ModuleName}.FsmState"].ToString() == "LaunchingPump")            if (PMCurrentState==PMState.LaunchingPump)            {                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.Abort}");                return;            }            //if (PumpIsOpen == true)            //{            //    return;            //}            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.StartPump");        }        private void OnClosePump()        {            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.ClosePump");        }        private void OnOpenTurboPump()        {            //TurboIsOpen = true;            //if (RtDataValues[$"{ModuleName}.FsmState"].ToString() == "LaunchingTurbo")            if (PMCurrentState == PMState.LaunchingTurboPump)            {                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.Abort}");                return;            }            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.StartTurboPump");        }        private void OnCloseTurboPump()        {            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.CloseTurboPump");        }        private void OnOpenPendulumValve()        {            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.TurnPendulumValve",true);        }        private void OnClosePendulumValve()        {            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.TurnPendulumValve",false);        }        private void OnPinUpDown(object upDown)        {            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.SetLiftPin", Convert.ToBoolean(upDown));        }        private void OnLidUpDown(object upDown)        {            //var value = (bool)upDown;            if (upDown.ToString()== "Up")            {                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{VenusDevice.Lid}.{AITCylinderOperation.Open}");            }            else            {                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{VenusDevice.Lid}.{AITCylinderOperation.Close}");            }        }        private  void OnSetSRf()        {               if (SRFData.IsRfOn == true)            {                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.SetSRf", SRFFwdPowerSetpoint, false);            }            else            {                if (GasIsFlowing == true)                {                    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{VenusDevice.Match}.{AITRfOperation.SetMatchPosition}", SRFMatchC1, SRFMatchC2);                                        InvokeClient.Instance.Service.DoOperation($"{ModuleName}.SetSRf", SRFFwdPowerSetpoint, true);                    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{VenusDevice.Match}.{AITRfOperation.SetMatchProcessMode}", "Auto");                }            }        }        private  void OnSetBRf()        {            if (BRFData.IsRfOn == true)            {                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.SetBRf", BRFFwdPowerSetpoint, false);            }            else            {                if (GasIsFlowing == true)                {                    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{VenusDevice.BiasMatch}.{AITRfOperation.SetMatchPosition}", BRFMatchC1, BRFMatchC2);                                      InvokeClient.Instance.Service.DoOperation($"{ModuleName}.SetBRf", BRFFwdPowerSetpoint, true);                    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{VenusDevice.BiasMatch}.{AITRfOperation.SetMatchProcessMode}", "Auto");                }            }                  }        private void OnPMAbort()        {            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Abort");        }        private void OnOpenButterflyValveView()        {            //if (butterflyValveMessageBox == null)            //{                var _mainWindow = Application.Current.Windows.Cast<Window>().FirstOrDefault(window => window is Window) as Window;                butterflyValveMessageBox = new ButterflyValveView(ModuleName.ToString());                butterflyValveMessageBox.WindowStartupLocation = WindowStartupLocation.Manual;                butterflyValveMessageBox.Left = 700;                butterflyValveMessageBox.Top = 600;                butterflyValveMessageBox.Show();                butterflyValveMessageBox.Owner = _mainWindow;            //}                   }        private void OnLoadRecipe()        {            CurrentModuleRecipes = GetFilesNames(Path.Combine(QueryDataClient.Instance.Service.GetData("GetRTPath").ToString(), "Recipes", ModuleName, "Process")).ToList();        }        //private async void OnHV()        //{        //    if (ESCHVData.IsOn == true)        //    {        //        InvokeClient.Instance.Service.DoOperation($"{ModuleName}.SetESCHVIsOn", false);        //    }        //    else        //    {        //        await Task.Run(async () =>        //        {        //            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.SetESCHVIsOn", true);        //            await Task.Delay(1000);        //            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.SetESCHV", ESCVoltage);        //        });        //    }                               //}        private void OnHVSet()        {             InvokeClient.Instance.Service.DoOperation($"{ModuleName}.SetESCHV", ESCVoltage);        }        private void OnRunRecipe(object obj)        {            string recipeName = SelectedRecipe;            if (recipeName == null)            {                return;            }            ClearData();            var recipePath = Path.Combine(QueryDataClient.Instance.Service.GetData("GetRTPath").ToString(), "Recipes", ModuleName, "Process", recipeName + ".rcp");            CurrentRecipe = Recipe.Load(File.ReadAllText(recipePath));            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.RunRecipe}",recipeName, ModuleManager.ModuleInfos[ModuleName].WaferManager.Wafers[0].WaferID, "Process");        }               private void OnOffChiller()        {            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.OnOffChiller", ChillerType.Chiller.ToString(),!ChillerIsOn);        }        private void OnHeater(object obj)        {            if (IsAutoMode == true)            {                return;            }            AITHeaterData heaterData = obj as AITHeaterData;            var _mainWindow = Application.Current.Windows.Cast<Window>().FirstOrDefault(window => window is Window) as Window;            heaterView = new HeaterView(heaterData, ModuleName);            heaterView.WindowStartupLocation = WindowStartupLocation.CenterScreen;            heaterView.Owner = _mainWindow;            heaterView.Show();        }        private void OnOnline()        {            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.PmOnline}");        }        private void OnOffline()        {            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.PmOffline}");        }        private void OnEndStep()        {            if (CurrentRecipeResult?.RecipeStepNumber != null && CurrentRecipeResult?.RecipeStepNumber != CurrentRecipeResult?.RecipeStepCount)            {                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.ManualEndStep");            }            else if (CurrentRecipeResult?.RecipeStepNumber != null && CurrentRecipeResult?.RecipeStepNumber == CurrentRecipeResult?.RecipeStepCount)            {                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Abort");            }        }        private void OnGotoPosition()        {            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.HighTemperatureHeater.GotoPosition", SelectedPosition.Content);        }        private void OnSwitchHighTemperatureHeater()        {            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.HighTemperatureHeater.SwitchHighTemperatureHeater", !HighTemperatureHeaterData.HighTemperatureHeaterIson);        }        private void OnSetChillerTemp()        {            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.HighTemperatureHeater.SetHighTemperatureHeaterTemperature", HighTemperatureHeaterTemperatureSetpoint);        }        private DelegateCommand _OnlineCommand;        public DelegateCommand OnlineCommand =>            _OnlineCommand ?? (_OnlineCommand = new DelegateCommand(OnOnline));        private DelegateCommand _OfflineCommand;        public DelegateCommand OfflineCommand =>            _OfflineCommand ?? (_OfflineCommand = new DelegateCommand(OnOffline));        private async void OnAbortRecipe(object obj)        {            if (PMCurrentState != PMState.Processing)            {                return;            }            switch (obj.ToString())            {                case "0":                    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Abort");                    break;                case "1":                    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Abort");                    //if (ESCHVData.IsOn == true)                    //{                    //    await Task.Delay(3000);                    //    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.SetESCHVIsOn", false);                    //}                    break;                case "2":                    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Abort");                    await Task.Delay(3000);                    InvokeClient.Instance.Service.DoOperation("ReturnWafer", ModuleName, 0);                    break;            }        }        #endregion        #region 私有方法        private void ClearData()        {            ESCVoltage = 0;            SRFFwdPowerSetpoint = 0;            SRFMatchC1 = 0;            SRFMatchC2 = 0;            BRFFwdPowerSetpoint = 0;            BRFMatchC1 = 0;            BRFMatchC2 = 0;            HeGasSetpoint = 0;            MFC1SetPoint = 0;            MFC2SetPoint = 0;            MFC3SetPoint = 0;            MFC4SetPoint = 0;            MFC5SetPoint = 0;            MFC6SetPoint = 0;            MFC7SetPoint = 0;            MFC8SetPoint = 0;        }        private  IEnumerable<string> GetFilesNames(string path)        {            if (Directory.Exists(path))            {                return Directory.GetFiles(path, "*.rcp")?          .Select(Path.GetFileNameWithoutExtension);            }            else            {                return new List<string>();            }        }        void timer_Tick(object sender, EventArgs e)        {            RtDataValues = QueryDataClient.Instance.Service.PollData(m_RtDataKeys);            if (RtDataValues==null)            {                return;            }            //var N2SetPoint =Convert.ToInt32( QueryDataClient.Instance.Service.GetConfig("System.TurboN2FlowSetPoint"));            //InvokeClient.Instance.Service.DoOperation($"{ModuleName}.MfcN2.SetPoint", N2SetPoint);            TurboN2FlowSetPoint = Convert.ToInt32(QueryDataClient.Instance.Service.GetConfig($"{ModuleName}.TurboN2FlowSetPoint"));            PVN21ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValvePVN21.IsOpen");            GasFinalValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValveGasFinal.IsOpen");            PV11ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValvePV11.IsOpen");             PV12ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValvePV12.IsOpen");            PV21ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValvePV21.IsOpen");             PV22ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValvePV22.IsOpen");            PV31ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValvePV31.IsOpen");            PV32ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValvePV32.IsOpen");            PV41ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValvePV41.IsOpen");            PV42ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValvePV42.IsOpen");            MFC1ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValveMfc1.IsOpen");             MFC2ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValveMfc2.IsOpen");            MFC3ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValveMfc3.IsOpen");            MFC4ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValveMfc4.IsOpen");            MFC5ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValveMfc5.IsOpen");            MFC6ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValveMfc6.IsOpen");            MFC7ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValveMfc7.IsOpen");            MFC8ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValveMfc8.IsOpen");            N2ValveIsOpen =   CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValveN2.IsOpen");             SoftPumpValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValveSoftPump.IsOpen");            FastPumpValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValveFastPump.IsOpen");             GuageValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValveGuage.IsOpen");             PVHe1ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValvePVHe1.IsOpen");             PVHe2ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValvePVHe2.IsOpen");            PVN21ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValvePVN21.IsOpen");            PVN22ValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValvePVN22.IsOpen");                    TurboPumpPumpingValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValveTurboPumpPumping.IsOpen");            TurboPumpPurgeValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValveTurboPumpPurge.IsOpen");            PurgeValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.ValvePurge.IsOpen");            PumpIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.PumpIsRunning");            TurboIsOpen = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.TurboPumpIsRunning");            LiftPinIsUp= CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.LiftPinIsUp");            IsSlitDoorClosed = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.IsSlitDoorClosed");            IsLidClosed = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.IsLidClosed");            PendulumValvePosition = CommonFunction.GetValue<float>(RtDataValues,$"{ModuleName}.GetPVPosition");            TurboPumpRotationalSpeed = Convert.ToInt32( RtDataValues[$"{ModuleName}.TurboPumpRotationalSpeed"].ToString());            PositionValue = -((int)((PendulumValvePosition) * 0.09));            PMCurrentState = (PMState)Enum.Parse(typeof(PMState), RtDataValues[$"{ModuleName}.FsmState"].ToString());              GasIsFlowing = PMCurrentState == PMState.GasFlowing;            IsProcessing=PMCurrentState == PMState.Processing;            MFC1Data = CommonFunction.GetValue<AITMfcData>(RtDataValues, $"{ModuleName}.MfcGas1");            MFC2Data = CommonFunction.GetValue<AITMfcData>(RtDataValues, $"{ModuleName}.MfcGas2");            MFC3Data = CommonFunction.GetValue<AITMfcData>(RtDataValues, $"{ModuleName}.MfcGas3");            MFC4Data = CommonFunction.GetValue<AITMfcData>(RtDataValues, $"{ModuleName}.MfcGas4");            MFC5Data = CommonFunction.GetValue<AITMfcData>(RtDataValues, $"{ModuleName}.MfcGas5");            MFC6Data = CommonFunction.GetValue<AITMfcData>(RtDataValues, $"{ModuleName}.MfcGas6");            MFC7Data = CommonFunction.GetValue<AITMfcData>(RtDataValues, $"{ModuleName}.MfcGas7");            MFC8Data = CommonFunction.GetValue<AITMfcData>(RtDataValues, $"{ModuleName}.MfcGas8");            MFCHeData = CommonFunction.GetValue<AITMfcData>(RtDataValues, $"{ModuleName}.MfcHe");            MFCN2Data = CommonFunction.GetValue<AITMfcData>(RtDataValues, $"{ModuleName}.MfcN2");            SRFData = CommonFunction.GetValue<AITRfData>(RtDataValues, $"{ModuleName}.{VenusDevice.Rf}.DeviceData");            BRFData = CommonFunction.GetValue<AITRfData>(RtDataValues, $"{ModuleName}.{VenusDevice.BiasRf}.DeviceData");            PendulumValveData = CommonFunction.GetValue<AITPendulumValveData>(RtDataValues, $"{ModuleName}.{VenusDevice.PendulumValve}.DeviceData");            //ESCHVData= CommonFunction.GetValue<AITHVData>(RtDataValues, $"{ModuleName}.{VenusDevice.ESCHV}.DeviceData");            //ValveHeaterData = (AITHeaterData)RtDataValues[$"{ModuleName}.ValveHeater.DeviceData"];            //ForelineHeaterData = (AITHeaterData)RtDataValues[$"{ModuleName}.ForelineHeater.DeviceData"];            //WallHeaterData = (AITHeaterData)RtDataValues[$"{ModuleName}.WallHeater.DeviceData"];            PendulumHeaterData = (AITHeaterData)RtDataValues[$"{ModuleName}.PendulumHeater.DeviceData"];            ProcessHighPressure = CommonFunction.GetValue<float>(RtDataValues, $"{ModuleName}.ProcessHighPressure");            ProcessLowPressure = CommonFunction.GetValue<float>(RtDataValues, $"{ModuleName}.ProcessLowPressure");            ForelinePressure = float.Parse(RtDataValues[$"{ModuleName}.ForelinePressure"].ToString());            ESCHePressure = float.Parse(RtDataValues[$"{ModuleName}.ESCHePressure"].ToString());            ChillerTemperature = float.Parse(RtDataValues[$"{ModuleName}.Chiller.Temp"].ToString());            //HVTemperature = float.Parse(RtDataValues[$"{ModuleName}.{VenusDevice.ESCHV}.Temp"].ToString());            ChillerIsOn = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.Chiller.IsOn");            SourceRFMatchInterlock= CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.SourceRFMatchInterlock");            IsWLK= CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.IsWLK");            IsWaterFlowOk= CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.IsWaterFlowOk");            IsTurboPumpInterlock= CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.IsTurboPumpInterlock");            IsCDAOK= CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.IsCDA_OK");            SensorGasBoxDoor= CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.GasBoxDoorSW.Value");             SensorGasBoxPressure= CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.GasBoxPressureSW.Value");             IsATM= CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.IsATM");             IsVAC = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.IsVAC");             ESCHVOutputVoltage= CommonFunction.GetValue<int>(RtDataValues, $"{ModuleName}.ESCHV.OutputVoltage");                        MatchC1 = CommonFunction.GetValue<float>(RtDataValues,$"{ModuleName}.{VenusDevice.Match}.C1");            MatchC2 = CommonFunction.GetValue<float>(RtDataValues,$"{ModuleName}.{VenusDevice.Match}.C2");            MatchWorkMode= CommonFunction.GetValue<string>(RtDataValues, $"{ModuleName}.{VenusDevice.Match}.WorkMode");            TurboPumpWaterFlowSwitch = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.TurboPumpWaterFlowSwitch.Value");            IsTurboPumpAtSpeed = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.IsTurboPumpAtSpeed");             IsHasWafer= CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.HasWafer");            WaferID = IsHasWafer ? ModuleManager.ModuleInfos[ModuleName].WaferManager.Wafers[0].SourceName : "";            if (PMCurrentState == PMState.Processing || PMCurrentState == PMState.Clean)            {                CurrentRecipeResult = CommonFunction.GetValue<RecipeResult>(RtDataValues, $"{ModuleName}.CurrentRecipeResult");                if (CurrentRecipeResult.RecipeStepNumber != null && CurrentRecipeResult.RecipeStepNumber != currentRecipeNumber)                {                    var recipePath = Path.Combine(QueryDataClient.Instance.Service.GetData("GetRTPath").ToString(), "Recipes", ModuleName,"Process", CurrentRecipeResult.RecipeName + ".rcp");                    CurrentRecipe = Recipe.Load(File.ReadAllText(recipePath));                    CurrentRecipeStep = CurrentRecipe.Steps[Convert.ToInt32(CurrentRecipeResult.RecipeStepNumber) - 1];                }                currentRecipeNumber = CurrentRecipeResult.RecipeStepNumber;            }            else            {                CurrentRecipeResult = null;                CurrentRecipeStep = null;            }            if (Math.Abs(100 - ProcessLowPressure) > 1 && ProcessLowPressure<100)            {                ChamberPressureFeedBack =  ProcessLowPressure;            }            else            {                 ChamberPressureFeedBack =  ProcessHighPressure;            }            HighTemperatureHeaterData = CommonFunction.GetValue<AITHighTemperatureHeaterData>(RtDataValues, $"{ModuleName}.HighTemperatureHeater.DeviceData");        }               public void addDataKeys()        {            m_RtDataKeys.Clear();            m_RtDataKeys.Add($"{ModuleName}.MfcGas1");            m_RtDataKeys.Add($"{ModuleName}.MfcGas2");            m_RtDataKeys.Add($"{ModuleName}.MfcGas3");            m_RtDataKeys.Add($"{ModuleName}.MfcGas4");            m_RtDataKeys.Add($"{ModuleName}.MfcGas5");            m_RtDataKeys.Add($"{ModuleName}.MfcGas6");            m_RtDataKeys.Add($"{ModuleName}.MfcGas7");            m_RtDataKeys.Add($"{ModuleName}.MfcGas8");            m_RtDataKeys.Add($"{ModuleName}.MfcHe");            m_RtDataKeys.Add($"{ModuleName}.MfcN2");                   m_RtDataKeys.Add($"{ModuleName}.ForelinePressure");            m_RtDataKeys.Add($"{ModuleName}.ProcessHighPressure");            m_RtDataKeys.Add($"{ModuleName}.ProcessLowPressure");            m_RtDataKeys.Add($"{ModuleName}.ChamberPressure");            m_RtDataKeys.Add($"{ModuleName}.ESCHePressure");            m_RtDataKeys.Add($"{ModuleName}.IsATM");            m_RtDataKeys.Add($"{ModuleName}.IsVAC");            m_RtDataKeys.Add($"{ModuleName}.ValvePVN21.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValvePVN22.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValvePV11.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValvePV12.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValvePV21.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValvePV22.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValvePV31.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValvePV32.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValvePV41.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValvePV42.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValveMfc1.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValveMfc2.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValveMfc3.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValveMfc4.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValveMfc5.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValveMfc6.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValveMfc7.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValveMfc8.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValveGasFinal.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValveSoftPump.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValveFastPump.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValveN2.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValvePVHe1.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValvePVHe2.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValveTurboPumpPumping.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValveTurboPumpPurge.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValvePVN21.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValvePVN22.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValveGuage.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.ValvePurge.IsOpen");            m_RtDataKeys.Add($"{ModuleName}.TurboPumpIsRunning");            m_RtDataKeys.Add($"{ModuleName}.PumpIsRunning");            m_RtDataKeys.Add($"{ModuleName}.IsSlitDoorClosed");            m_RtDataKeys.Add($"{ModuleName}.IsLidClosed");            m_RtDataKeys.Add($"{ModuleName}.{VenusDevice.Rf}.DeviceData");            m_RtDataKeys.Add($"{ModuleName}.{VenusDevice.BiasRf}.DeviceData");            m_RtDataKeys.Add($"{ModuleName}.{VenusDevice.Match}.C1");            m_RtDataKeys.Add($"{ModuleName}.{VenusDevice.Match}.C2");            m_RtDataKeys.Add($"{ModuleName}.{VenusDevice.Match}.WorkMode");            m_RtDataKeys.Add($"{ModuleName}.{VenusDevice.PendulumValve}.DeviceData");            //m_RtDataKeys.Add($"{ModuleName}.{VenusDevice.ESCHV}.DeviceData");            m_RtDataKeys.Add($"{ModuleName}.TurboPumpRotationalSpeed");            m_RtDataKeys.Add($"{ModuleName}.GetPVPosition");            m_RtDataKeys.Add($"{ModuleName}.Chiller.Temp");            m_RtDataKeys.Add($"{ModuleName}.IsWaterFlowOk");             m_RtDataKeys.Add($"{ModuleName}.IsWLK");            m_RtDataKeys.Add($"{ModuleName}.IsCDA_OK");            m_RtDataKeys.Add($"{ModuleName}.SourceRFMatchInterlock");            m_RtDataKeys.Add($"{ModuleName}.IsTurboPumpInterlock");            m_RtDataKeys.Add($"{ModuleName}.GasBoxDoorSW.Value");            m_RtDataKeys.Add($"{ModuleName}.GasBoxPressureSW.Value");            //m_RtDataKeys.Add($"{ModuleName}.WallTempFeedBack");            m_RtDataKeys.Add($"{ModuleName}.Chiller.IsOn");            //m_RtDataKeys.Add($"{ModuleName}.ValveHeater.DeviceData");            //m_RtDataKeys.Add($"{ModuleName}.ForelineHeater.DeviceData");            //m_RtDataKeys.Add($"{ModuleName}.WallHeater.DeviceData");            m_RtDataKeys.Add($"{ModuleName}.PendulumHeater.DeviceData");            m_RtDataKeys.Add($"{ModuleName}.FsmState");            m_RtDataKeys.Add($"{ModuleName}.IsTurboPumpAtSpeed");            m_RtDataKeys.Add($"{ModuleName}.TurboPumpWaterFlowSwitch.Value");            m_RtDataKeys.Add($"{ModuleName}.HasWafer");            m_RtDataKeys.Add($"{ModuleName}.CurrentRecipeResult");            m_RtDataKeys.Add($"{ModuleName}.HighTemperatureHeater.DeviceData");        }        #endregion    }}
 |