| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760 | using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Xml;using Aitex.Core.Common.DeviceData;using Aitex.Core.RT.DataCenter;using Aitex.Core.RT.Device;using Aitex.Core.RT.Event;using Aitex.Core.RT.OperationCenter;using Aitex.Core.RT.SCCore;using Aitex.Core.RT.Tolerance;using Aitex.Core.Util;namespace MECF.Framework.Common.Device.Bases{    public abstract class RfMatchBase : BaseDevice, IDevice    {        public virtual bool IsConnected => true;        public virtual EnumRfMatchTuneMode TuneMode1 { get; set; }        public virtual EnumRfMatchTuneMode TuneMode2 { get; set; }        public virtual EnumRfMatchTuneMode TuneMode1Setpoint { get; set; }        public virtual EnumRfMatchTuneMode TuneMode2Setpoint { get; set; }        public virtual EnumRfMatchMode AutoMode { get; set; }        public virtual float LoadPosition1 { get; set; }        public virtual float LoadPosition2 { get; set; }        public virtual float LoadPosition1Setpoint { get; set; }        public virtual float LoadPosition2Setpoint { get; set; }        public virtual float TunePosition1 { get; set; }        public virtual float TunePosition2 { get; set; }        public virtual float TunePosition1Setpoint { get; set; }        public virtual float TunePosition2Setpoint { get; set; }        public virtual float Capacitance1PositionFeedBack { get; set; }        public virtual float Capacitance2PositionFeedBack { get; set; }        public virtual float Capacitance1PositionSetpoint { get; set; }        public virtual float Capacitance2PositionSetpoint { get; set; }        public virtual float DCBias { get; set; }        public virtual float BiasPeak { get; set; }        public virtual float Capacitance { get; set; }        public virtual float CapacitanceSetpoint { get; set; }        public virtual float VppFeedBack { get; set; }        public virtual AITRfMatchData DeviceData { get; set; }        protected double _currentTuneFineTuningValue;        protected double _currentLoadFineTuningValue;        protected double _currentCapFineTuningValue;        protected SCConfigItem _scFineTuningEnable;        protected SCConfigItem _scTuneFineTuningValue;        protected SCConfigItem _scLoadFineTuningValue;        protected SCConfigItem _scCapFineTuningValue;        private float _currentTuneWarningRange;        private float _currentLoadWarningRange;        private float _currentCapWarningRange;        private float _currentTuneAlarmRange;        private float _currentLoadAlarmRange;        private float _currentCapAlarmRange;        protected SCConfigItem _scEnableAlarm;        protected SCConfigItem _scTuneAlarmTime;        protected SCConfigItem _scTuneAlarmRange;        protected SCConfigItem _scTuneWarningTime;        protected SCConfigItem _scTuneWarningRange;        protected ToleranceChecker _toleranceTuneAlarmChecker = new ToleranceChecker();        protected ToleranceChecker _toleranceTuneWarningChecker = new ToleranceChecker();        protected SCConfigItem _scLoadAlarmTime;        protected SCConfigItem _scLoadAlarmRange;        protected SCConfigItem _scLoadWarningTime;        protected SCConfigItem _scLoadWarningRange;        protected ToleranceChecker _toleranceLoadAlarmChecker = new ToleranceChecker();        protected ToleranceChecker _toleranceLoadWarningChecker = new ToleranceChecker();        protected SCConfigItem _scCapAlarmTime;        protected SCConfigItem _scCapAlarmRange;        protected SCConfigItem _scCapWarningTime;        protected SCConfigItem _scCapWarningRange;        protected SCConfigItem _scRecipeIgnoreTime;        protected SCConfigItem _scStableCriteria;        protected ToleranceChecker _toleranceCapAlarmChecker = new ToleranceChecker();        protected ToleranceChecker _toleranceCapWarningChecker = new ToleranceChecker();        protected DeviceTimer _recipeIgnoreTimer = new DeviceTimer();        public virtual double CapFineTuningValue        {            get            {                if (_scFineTuningEnable == null || !_scFineTuningEnable.BoolValue)                    return 1;                if (_currentCapFineTuningValue != 0)                    return 1 + _currentCapFineTuningValue / 100;                return _scCapFineTuningValue != null ? 1 + _scCapFineTuningValue.DoubleValue / 100 : 1;            }        }        public virtual double TuneFineTuningValue        {            get            {                if (_scFineTuningEnable == null || !_scFineTuningEnable.BoolValue)                    return 1;                if (_currentTuneFineTuningValue != 0)                    return 1 + _currentTuneFineTuningValue / 100;                return _scTuneFineTuningValue != null ? 1 + _scTuneFineTuningValue.DoubleValue / 100 : 1;            }        }        public virtual double FineTuningValue        {            get            {                if (_scFineTuningEnable == null || !_scFineTuningEnable.BoolValue)                    return 1;                if (_currentLoadFineTuningValue != 0)                    return 1 + _currentLoadFineTuningValue / 100;                return _scLoadFineTuningValue != null ? 1 + _scLoadFineTuningValue.DoubleValue / 100 : 1;            }        }        public virtual bool EnableAlarm        {            get            {                if (_scEnableAlarm != null)                    return _scEnableAlarm.BoolValue;                return false;            }        }        public virtual double TuneAlarmTime        {            get            {                if (_scTuneAlarmTime != null)                    return _scTuneAlarmTime.DoubleValue;                return 0;            }        }        public virtual double TuneAlarmRange        {            get            {                if (_currentTuneAlarmRange > 0)                    return _currentTuneAlarmRange;                if (_scTuneAlarmRange != null)                    return _scTuneAlarmRange.DoubleValue;                return 0;            }        }        public virtual double TuneWarningTime        {            get            {                if (_scTuneWarningTime != null)                    return _scTuneWarningTime.DoubleValue;                return 0;            }        }        public virtual double TuneWarningRange        {            get            {                if (_currentTuneWarningRange > 0)                    return _currentTuneWarningRange;                if (_scTuneWarningRange != null)                    return _scTuneWarningRange.DoubleValue;                return 0;            }        }        public virtual double LoadAlarmTime        {            get            {                if (_scLoadAlarmTime != null)                    return _scLoadAlarmTime.DoubleValue;                return 0;            }        }        public virtual double LoadAlarmRange        {            get            {                if (_currentLoadAlarmRange > 0)                    return _currentLoadAlarmRange;                if (_scLoadAlarmRange != null)                    return _scLoadAlarmRange.DoubleValue;                return 0;            }        }        public virtual double LoadWarningTime        {            get            {                if (_scLoadWarningTime != null)                    return _scLoadWarningTime.DoubleValue;                return 0;            }        }        public virtual double LoadWarningRange        {            get            {                if (_currentLoadWarningRange > 0)                    return _currentLoadWarningRange;                if (_scLoadWarningRange != null)                    return _scLoadWarningRange.DoubleValue;                return 0;            }        }        public virtual double CapAlarmTime        {            get            {                if (_scCapAlarmTime != null)                    return _scCapAlarmTime.DoubleValue;                return 0;            }        }        public virtual double CapAlarmRange        {            get            {                if (_currentCapAlarmRange > 0)                    return _currentCapAlarmRange;                if (_scCapAlarmRange != null)                    return _scCapAlarmRange.DoubleValue;                return 0;            }        }        public virtual double CapWarningTime        {            get            {                if (_scCapWarningTime != null)                    return _scCapWarningTime.DoubleValue;                return 0;            }        }        public virtual double CapWarningRange        {            get            {                if (_currentCapWarningRange > 0)                    return _currentCapWarningRange;                if (_scCapWarningRange != null)                    return _scCapWarningRange.DoubleValue;                return 0;            }        }        //unit second        public virtual double RecipeIgnoreTime        {            get            {                if (_scRecipeIgnoreTime != null)                    return _scRecipeIgnoreTime.DoubleValue;                return 0;            }        }        public virtual bool IsStable        {            get            {                return false;            }        }        protected RfMatchBase(string module, string name) : base(module, name, name, name)        {            _scEnableAlarm = SC.GetConfigItem($"{Module}.{Name}.EnableAlarm");            _scTuneAlarmTime = SC.GetConfigItem($"{Module}.{Name}.TuneAlarmTime");            _scTuneAlarmRange = SC.GetConfigItem($"{Module}.{Name}.TuneAlarmRange");            _scTuneWarningTime = SC.GetConfigItem($"{Module}.{Name}.TuneWarningTime");            _scTuneWarningRange = SC.GetConfigItem($"{Module}.{Name}.TuneWarningRange");            _scLoadAlarmTime = SC.GetConfigItem($"{Module}.{Name}.LoadAlarmTime");            _scLoadAlarmRange = SC.GetConfigItem($"{Module}.{Name}.LoadAlarmRange");            _scLoadWarningTime = SC.GetConfigItem($"{Module}.{Name}.LoadWarningTime");            _scLoadWarningRange = SC.GetConfigItem($"{Module}.{Name}.LoadWarningRange");            _scTuneFineTuningValue = SC.GetConfigItem($"{Module}.FineTuning.{Name}Tune");            _scLoadFineTuningValue = SC.GetConfigItem($"{Module}.FineTuning.{Name}Load");            _scFineTuningEnable = SC.GetConfigItem($"{Module}.FineTuning.IsEnable");            _scCapAlarmTime = SC.GetConfigItem($"{Module}.{Name}.CapAlarmTime");            _scCapAlarmRange = SC.GetConfigItem($"{Module}.{Name}.CapAlarmRange");            _scCapWarningTime = SC.GetConfigItem($"{Module}.{Name}.CapWarningTime");            _scCapWarningRange = SC.GetConfigItem($"{Module}.{Name}.CapWarningRange");            _scRecipeIgnoreTime = SC.GetConfigItem($"{Module}.{Name}.RecipeIgnoreTime");            _scStableCriteria = SC.GetConfigItem($"{Module}.{Name}.StableCriteria");        }        protected RfMatchBase(string module, string name, XmlElement node = null, string ioModule = "") : base(module, name, name, name)        {            if (node != null)            {                _scEnableAlarm = ParseScNode("scEnableAlarm", node, ioModule, $"{Module}.{Name}.EnableAlarm");                _scTuneAlarmTime = ParseScNode("scTuneAlarmTime", node, ioModule, $"{Module}.{Name}.TuneAlarmTime");                _scTuneAlarmRange = ParseScNode("scTuneAlarmRange", node, ioModule, $"{Module}.{Name}.TuneAlarmRange");                _scTuneWarningTime = ParseScNode("scTuneWarningTime", node, ioModule, $"{Module}.{Name}.TuneWarningTime");                _scTuneWarningRange = ParseScNode("scTuneWarningRange", node, ioModule, $"{Module}.{Name}.TuneWarningRange");                _scLoadAlarmTime = ParseScNode("scLoadAlarmTime", node, ioModule, $"{Module}.{Name}.LoadAlarmTime");                _scLoadAlarmRange = ParseScNode("scLoadAlarmRange", node, ioModule, $"{Module}.{Name}.LoadAlarmRange");                _scLoadWarningTime = ParseScNode("scLoadWarningTime", node, ioModule, $"{Module}.{Name}.LoadWarningTime");                _scLoadWarningRange = ParseScNode("scLoadWarningRange", node, ioModule, $"{Module}.{Name}.LoadWarningRange");                _scTuneFineTuningValue = ParseScNode("scTuneFineTuningValue", node, ioModule, $"{Module}.FineTuning.{Name}Tune");                _scLoadFineTuningValue = ParseScNode("scLoadFineTuningValue", node, ioModule, $"{Module}.FineTuning.{Name}Load");                _scFineTuningEnable = ParseScNode("scFineTuningEnable", node, ioModule, $"{Module}.FineTuning.IsEnable");                _scCapAlarmTime = ParseScNode("scCapAlarmTime", node, ioModule, $"{Module}.{Name}.CapAlarmTime");                _scCapAlarmRange = ParseScNode("scCapAlarmRange", node, ioModule, $"{Module}.{Name}.CapAlarmRange");                _scCapWarningTime = ParseScNode("scCapWarningTime", node, ioModule, $"{Module}.{Name}.CapWarningTime");                _scCapWarningRange = ParseScNode("scCapWarningRange", node, ioModule, $"{Module}.{Name}.CapWarningRange");                _scRecipeIgnoreTime = ParseScNode("scRecipeIgnoreTime", node, ioModule, $"{Module}.{Name}.RecipeIgnoreTime");                _scStableCriteria = ParseScNode("scStableCriteria", node, ioModule, $"{Module}.{Name}.StableCriteria");            }        }        public virtual bool Initialize()        {            DATA.Subscribe($"{Module}.{Name}.DeviceData", () => DeviceData);            DATA.Subscribe($"{Module}.{Name}.TuneMode1", () => TuneMode1.ToString());            DATA.Subscribe($"{Module}.{Name}.TuneMode2", () => TuneMode2.ToString());            DATA.Subscribe($"{Module}.{Name}.AutoMode", () => AutoMode.ToString());            DATA.Subscribe($"{Module}.{Name}.LoadPosition1", () => LoadPosition1);            DATA.Subscribe($"{Module}.{Name}.LoadPosition2", () => LoadPosition2);            DATA.Subscribe($"{Module}.{Name}.TunePosition1", () => TunePosition1);            DATA.Subscribe($"{Module}.{Name}.TunePosition2", () => TunePosition2);            DATA.Subscribe($"{Module}.{Name}.Capacitance", () => Capacitance);            DATA.Subscribe($"{Module}.{Name}.CapacitanceSetpoint", () => CapacitanceSetpoint);            DATA.Subscribe($"{Module}.{Name}.Capacitance1PositionFeedBack", () => Capacitance1PositionFeedBack);            DATA.Subscribe($"{Module}.{Name}.Capacitance1PositionSetpoint", () => Capacitance1PositionSetpoint);            DATA.Subscribe($"{Module}.{Name}.Capacitance2PositionFeedBack", () => Capacitance2PositionFeedBack);            DATA.Subscribe($"{Module}.{Name}.Capacitance2PositionSetpoint", () => Capacitance2PositionSetpoint);            DATA.Subscribe($"{Module}.{Name}.VppFeedBack", () => VppFeedBack);            OP.Subscribe($"{Module}.{Name}.SetTuneMode1", (function, args) =>            {                if (!Enum.TryParse((string)args[0], out EnumRfMatchTuneMode mode))                {                    EV.PostWarningLog(Module, $"Argument {args[0]}not valid");                    return false;                }                SetTuneMode1(mode);                return true;            });            OP.Subscribe($"{Module}.{Name}.SetLoad1", (function, args) =>            {                SetLoad1((float)args[0]);                return true;            });            OP.Subscribe($"{Module}.{Name}.SetTune1", (function, args) =>            {                SetTune1((float)args[0]);                return true;            });            OP.Subscribe($"{Module}.{Name}.SetTuneMode2", (function, args) =>            {                if (!Enum.TryParse((string)args[0], out EnumRfMatchTuneMode mode))                {                    EV.PostWarningLog(Module, $"Argument {args[0]}not valid");                    return false;                }                SetTuneMode2(mode);                return true;            });            OP.Subscribe($"{Module}.{Name}.SetLoad2", (function, args) =>            {                SetLoad2((float)args[0]);                return true;            });            OP.Subscribe($"{Module}.{Name}.SetTune2", (function, args) =>            {                SetTune2((float)args[0]);                return true;            });            OP.Subscribe($"{Module}.{Name}.SetActivePresetNo1", (function, args) =>            {                SetActivePresetNo1((int)args[0]);                return true;            });            OP.Subscribe($"{Module}.{Name}.SetActivePresetNo2", (function, args) =>            {                SetActivePresetNo2((int)args[0]);                return true;            });            OP.Subscribe($"{Module}.{Name}.SetPreSetsAndTrajectories1", (function, args) =>            {                SetPreSetsAndTrajectories1((Presets)args[0]);                return true;            });            OP.Subscribe($"{Module}.{Name}.SetPreSetsAndTrajectories2", (function, args) =>            {                SetPreSetsAndTrajectories2((Presets)args[0]);                return true;            });            OP.Subscribe($"{Module}.{Name}.EnablePreset1", (function, args) =>            {                EnablePreset1((bool)args[0]);                return true;            });            OP.Subscribe($"{Module}.{Name}.EnablePreset2", (function, args) =>            {                EnablePreset2((bool)args[0]);                return true;            });            OP.Subscribe($"{Module}.{Name}.EnableCapacitorMove1", (function, args) =>            {                EnableCapacitorMove1((bool)args[0]);                return true;            });            OP.Subscribe($"{Module}.{Name}.EnableCapacitorMove2", (function, args) =>            {                EnableCapacitorMove2((bool)args[0]);                return true;            });            OP.Subscribe($"{Module}.{Name}.SetCapacitance", (function, args) =>            {                SetCapacitance(Convert.ToSingle(args[0]), out string reason);                return true;            });            //for recipe            OP.Subscribe($"{Module}.{Name}.SetTolerance", (out string reason, int time, object[] param) =>            {                reason = string.Empty;                var tuneWarning = Convert.ToSingle(param[0]);                var tuneAlarm = Convert.ToSingle(param[1]);                var loadWarning = Convert.ToSingle(param[2]);                var loadAlarm = Convert.ToSingle(param[3]);                SetTolerance((float)tuneWarning, (float)tuneAlarm, (float)loadWarning, (float)loadAlarm);                return true;            });            //for recipe            OP.Subscribe($"{Module}.{Name}.SetCapTolerance", (out string reason, int time, object[] param) =>            {                reason = string.Empty;                var capWarning = Convert.ToSingle(param[0]);                var capAlarm = Convert.ToSingle(param[1]);                SetTolerance((float)capWarning, (float)capAlarm);                return true;            });            //for recipe            OP.Subscribe($"{Module}.{Name}.SetFineTuning", (out string reason, int time, object[] param) =>            {                reason = string.Empty;                SetFineTuning(Convert.ToSingle(param[0]), Convert.ToSingle(param[1]));                return true;            });            //for recipe            OP.Subscribe($"{Module}.{Name}.SetCapacitance", (out string reason, int time, object[] param) =>            {                reason = string.Empty;                if (param.Length >= 2)                    SetCapacitance(Convert.ToSingle(param[0]), Convert.ToSingle(param[1]), out reason);                else                    SetCapacitance(Convert.ToSingle(param[0]), out reason);                return true;            });            //for recipe            OP.Subscribe($"{Module}.{Name}.SetCapFineTuning", (out string reason, int time, object[] param) =>            {                reason = string.Empty;                SetFineTuning(Convert.ToSingle(param[0]));                return true;            });            InitSc();            return true;        }        protected virtual void InitSc()        {        }        public virtual void SetTolerance(float capWarning, float capAlarm)        {            _currentCapWarningRange = capWarning;            _currentCapAlarmRange = capAlarm;            _toleranceCapAlarmChecker.Reset(CapAlarmTime);            _toleranceCapWarningChecker.Reset(CapWarningTime);            if (RecipeIgnoreTime > 0)                _recipeIgnoreTimer.Start(0);        }        public virtual void SetTolerance(float tuneWarning, float tuneAlarm, float loadWarning, float loadAlarm)        {            _currentTuneWarningRange = tuneWarning;            _currentTuneAlarmRange = tuneAlarm;            _toleranceTuneAlarmChecker.Reset(TuneAlarmTime);            _toleranceTuneWarningChecker.Reset(TuneWarningTime);            _currentLoadWarningRange = loadWarning;            _currentLoadAlarmRange = loadAlarm;            _toleranceLoadAlarmChecker.Reset(LoadAlarmTime);            _toleranceLoadWarningChecker.Reset(LoadWarningTime);            if (RecipeIgnoreTime > 0)                _recipeIgnoreTimer.Start(0);        }        public virtual void SetFineTuning(float capFineTuning)        {            _currentCapFineTuningValue = capFineTuning;        }        public virtual void SetFineTuning(float tuneFineTuning, float loadFineTuning)        {            _currentTuneFineTuningValue = tuneFineTuning;            _currentLoadFineTuningValue = loadFineTuning;        }        public virtual void CheckTolerance()        {            if (!EnableAlarm || TuneMode1 == EnumRfMatchTuneMode.Auto || (RecipeIgnoreTime > 0 && _recipeIgnoreTimer.GetElapseTime() < RecipeIgnoreTime * 1000))                return;            if (TunePosition1Setpoint != 0)            {                _toleranceTuneAlarmChecker.Monitor(TunePosition1, (TunePosition1Setpoint * (1 - TuneAlarmRange / 100)), (TunePosition1Setpoint * (1 + TuneAlarmRange / 100)), TuneAlarmTime);                _toleranceTuneWarningChecker.Monitor(TunePosition1, (TunePosition1Setpoint * (1 - TuneWarningRange / 100)), (TunePosition1Setpoint * (1 + TuneWarningRange / 100)), TuneWarningTime);            }            if (LoadPosition1Setpoint != 0)            {                _toleranceLoadAlarmChecker.Monitor(LoadPosition1, (LoadPosition1Setpoint * (1 - LoadAlarmRange / 100)), (LoadPosition1Setpoint * (1 + LoadAlarmRange / 100)), LoadAlarmTime);                _toleranceLoadWarningChecker.Monitor(LoadPosition1, (LoadPosition1Setpoint * (1 - LoadWarningRange / 100)), (LoadPosition1Setpoint * (1 + LoadWarningRange / 100)), LoadWarningTime);            }            if (CapacitanceSetpoint != 0)            {                _toleranceCapAlarmChecker.Monitor(Capacitance, (CapacitanceSetpoint * (1 - CapAlarmRange / 100)), (CapacitanceSetpoint * (1 + CapAlarmRange / 100)), CapAlarmTime);                _toleranceCapWarningChecker.Monitor(Capacitance, (CapacitanceSetpoint * (1 - CapWarningRange / 100)), (CapacitanceSetpoint * (1 + CapWarningRange / 100)), CapWarningTime);            }        }        public virtual bool CheckTuneToleranceAlarm()        {            if (!EnableAlarm)                return false;            return _toleranceTuneAlarmChecker.Result;        }        public virtual bool CheckLoadToleranceAlarm()        {            if (!EnableAlarm)                return false;            return _toleranceLoadAlarmChecker.Result;        }        public virtual bool CheckTuneToleranceWarning()        {            if (!EnableAlarm)                return false;            return _toleranceTuneWarningChecker.Result;        }        public virtual bool CheckLoadToleranceWarning()        {            if (!EnableAlarm)                return false;            return _toleranceLoadWarningChecker.Result;        }        public virtual bool CheckCapToleranceWarning()        {            if (!EnableAlarm)                return false;            return _toleranceCapWarningChecker.Result;        }        public virtual bool CheckCapToleranceAlarm()        {            if (!EnableAlarm)                return false;            return _toleranceCapAlarmChecker.Result;        }        public virtual void SetPreSetsAndTrajectories1(Presets presets)        {            throw new NotImplementedException();        }        public virtual void SetActivePresetNo2(int v)        {            throw new NotImplementedException();        }        public virtual void SetPreSetsAndTrajectories2(Presets presets)        {            throw new NotImplementedException();        }        public virtual void EnablePreset1(bool v)        {            throw new NotImplementedException();        }        public virtual void EnablePreset2(bool v)        {            throw new NotImplementedException();        }        public virtual void EnableCapacitorMove1(bool v)        {            throw new NotImplementedException();        }        public virtual void EnableCapacitorMove2(bool v)        {            throw new NotImplementedException();        }        public virtual void SetActivePresetNo1(int v)        {            throw new NotImplementedException();        }        public virtual void SetTuneMode1(EnumRfMatchTuneMode enumRfMatchTuneMode)        {        }        public virtual void SetLoad1(float load)        {        }        public virtual void SetTune1(float tune)        {        }        public virtual void SetTuneMode2(EnumRfMatchTuneMode enumRfMatchTuneMode)        {        }        public virtual void SetLoad2(float load)        {        }        public virtual void SetTune2(float tune)        {        }        public virtual bool SetCapacitance(float cap, out string reason)        {            reason = string.Empty;            return true;        }        public virtual bool SetCapacitance(float cap, float rampTimes, out string reason)        {            reason = string.Empty;            return true;        }        public virtual void SetAutoMode(bool isAuto)        {        }        public virtual void SetCapacitance1Position(float position)        {        }        public virtual void SetCapacitance2Position(float position)        {        }        public virtual void DeviceReset(bool isInit)        {        }        public virtual void SetPrePositionOn(bool isOn)        {        }        public virtual void Terminate()        {        }        public virtual void Monitor()        {            CheckTolerance();        }        public virtual void Reset()        {        }    }}
 |