using System.Runtime.Serialization; namespace EPInterface.Datas { [DataContract] public enum AlgorithmType { [EnumMember] None, //非endpoint //level trigger, invaild time [EnumMember] FallByValue, //"FallValue" ValidationTime,Threshold < [EnumMember] RiseByValue, //"RiseValue" ValidationTime,Threshold > [EnumMember] FallByPercent, //"FallPecent" ValidationTime,Threshold, TimeWindow < [EnumMember] RiseByPercent, //"RisePecent" ValidationTime,Threshold, TimeWindow > [EnumMember] FallByPercentOnMinBase, //"MinFallPecent" ValidationTime,Threshold, TimeWindow, BandTime [EnumMember] FallByPercentOnMaxBase, //"MaxFallPecent" ValidationTime,Threshold, TimeWindow, BandTime [EnumMember] RiseByPercentOnMinBase, //"MinRisePecent" ValidationTime,Threshold, TimeWindow, BandTime [EnumMember] RiseByPercentOnMaxBase, //"MaxRisePecent" ValidationTime,Threshold, TimeWindow, BandTime [EnumMember] Threshold, //"Threshold" //Edge Trigger [EnumMember] Gradients, //"Gradient" Threshold, TimeWindow [EnumMember] Range, //"RangeIn" Threshold, TimeWindow [EnumMember] Peak, //Peak Threshold, TimeWindow, ValidationTime [EnumMember] Valley, //Vallery Threshold, TimeWindow, ValidationTime [EnumMember] FallingEdge, //"RiseFall" Threshold, ValidationTime,ValidationValue, [EnumMember] RisingEdge, //"FallRise" Threshold, ValidationTime,ValidationValue, [EnumMember] Fringe, //"FallRise" Threshold, ValidationTime,ValidationValue, [EnumMember] Etch, [EnumMember] ONetch, } [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(); } } [DataContract] public enum RegionEquType { [EnumMember] Average, // 平均 [EnumMember] Sum, // 累加和 [EnumMember] Min, // 最低亮度 [EnumMember] Max, // 最大亮度 [EnumMember] Median, // 从低到高排列时中值 [EnumMember] Variance, // Variance [EnumMember] StandardDeviation, // 标准差的值 //[EnumMember] M1_WeightedMean, // Weighted Mean WL //[EnumMember] M3_Skew, // Skew //[EnumMember] M4_Kurtosis, // Kurtosis } [DataContract] public class EPDChannel { public int ID { get; set; } public bool LinkStatus { get; set; } [DataMember] public bool Enable { get; set; } [DataMember] public string ChannelNO { get; set; } [DataMember] public string IP { get; set; } [DataMember] public int Port { get; set; } } }