| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 | using System.Runtime.Serialization;namespace EPInterface.Datas{    [DataContract]    public enum AlgorithmType    {        [EnumMember]        ALG_NONE,            //非endpoint        //level trigger, invaild time        [EnumMember]        ALG_FALL_VALUE,              //"FallValue"    ValidationTime,Threshold       <         [EnumMember]        ALG_RISE_VALUE,              //"RiseValue"    ValidationTime,Threshold       >        [EnumMember]        ALG_FALL_PERCENT,            //"FallPecent"    ValidationTime,Threshold, TimeWindow       <         [EnumMember]        ALG_RISE_PERCENT,            //"RisePecent"    ValidationTime,Threshold, TimeWindow      >        [EnumMember]        ALG_MIN_FALL_PERCENT,   //"MinFallPecent"    ValidationTime,Threshold, TimeWindow, BandTime          [EnumMember]        ALG_MAX_FALL_PERCENT,   //"MaxFallPecent"    ValidationTime,Threshold, TimeWindow, BandTime          [EnumMember]        ALG_MIN_RISE_PERCENT,   //"MinRisePecent"    ValidationTime,Threshold, TimeWindow, BandTime          [EnumMember]        ALG_MAX_RISE_PERCENT,   //"MaxRisePecent"    ValidationTime,Threshold, TimeWindow, BandTime          //Edge Trigger        [EnumMember]        ALG_GRADIENT,       //"Gradient"    Threshold, TimeWindow         [EnumMember]        ALG_RANGE_IN,    //"RangeIn"    Threshold, TimeWindow         [EnumMember]        ALG_PEAK,        //Peak     Threshold, TimeWindow, ValidationTime        [EnumMember]        ALG_VALLEY,      //Vallery  Threshold, TimeWindow, ValidationTime        [EnumMember]        ALG_RISE_FALL,    //"RiseFall"     Threshold, ValidationTime,ValidationValue,        [EnumMember]        ALG_FALL_RISE,    //"FallRise"     Threshold, ValidationTime,ValidationValue,    }    [DataContract]    public class EPDColumn    {        [DataMember]        public bool bNormalization { get; set; }        [DataMember]        public bool bControl { get; set; }        [DataMember]        public bool bPostponePercent { get; set; }        [DataMember]        public bool bEvtTrigger { get; set; }        [DataMember]        public bool bCriteriaPercent { get; set; }        [DataMember]        public int nCCDExposureTime { get; set; }        [DataMember]        public int nPreFilterTime { get; set; }        [DataMember]        public int nPostFilterTime { get; set; }        [DataMember]        public AlgorithmType algorithmType { get; set; }        [DataMember]        public double nCriteria { get; set; }        [DataMember]        public int nDelayTime { get; set; }        [DataMember]        public int nValidationTime { get; set; }        [DataMember]        public int nTimeWindow { get; set; }        [DataMember]        public int nMinimalTime { get; set; } // Version 2        [DataMember]        public int nPostponeTime { get; set; } // Version 2        [DataMember]        public int nValidationValue { get; set; } // Used for rise / fall algorithm        [DataMember]        public int nRefractionIndex { get; set; }// Only for IEP, always zero        [DataMember]        public float fEtchAmount { get; set; }  // Only for IEP, always zero        [DataMember]        public ushort[] nWaveLength { get; set; }        [DataMember]        public ushort[] nBinning { get; set; }        [DataMember]        public string cPSMode { get; set; } // Version 7        [DataMember]        public string cFunc { get; set; }        public EPDColumn()        {            nWaveLength = new ushort[8];            nBinning = new ushort[8];        }    }    [DataContract]    public class EPDConfig    {        [DataMember]        public int nParameterCount { get; set; }        [DataMember]        public EPDColumn[] Columns;        public bool FaultIfNoEPDTrigger { get; set; }        [DataMember]        public string cLogic { get; set; } // logic for multiple endpoints, resevered for future to support logic 'OR' Version 3        public EPDConfig()        {            Columns = new EPDColumn[3];            for (int i = 0; i < Columns.Length; i++)                Columns[i] = new EPDColumn();        }    }}
 |