EPDConfig.cs 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. using System.Runtime.Serialization;
  2. namespace EPInterface.Datas
  3. {
  4. [DataContract]
  5. public enum AlgorithmType
  6. {
  7. [EnumMember]
  8. None, //非endpoint
  9. //level trigger, invaild time
  10. [EnumMember]
  11. FallByValue, //"FallValue" ValidationTime,Threshold <
  12. [EnumMember]
  13. RiseByValue, //"RiseValue" ValidationTime,Threshold >
  14. [EnumMember]
  15. FallByPercent, //"FallPecent" ValidationTime,Threshold, TimeWindow <
  16. [EnumMember]
  17. RiseByPercent, //"RisePecent" ValidationTime,Threshold, TimeWindow >
  18. [EnumMember]
  19. FallByPercentOnMinBase, //"MinFallPecent" ValidationTime,Threshold, TimeWindow, BandTime
  20. [EnumMember]
  21. FallByPercentOnMaxBase, //"MaxFallPecent" ValidationTime,Threshold, TimeWindow, BandTime
  22. [EnumMember]
  23. RiseByPercentOnMinBase, //"MinRisePecent" ValidationTime,Threshold, TimeWindow, BandTime
  24. [EnumMember]
  25. RiseByPercentOnMaxBase, //"MaxRisePecent" ValidationTime,Threshold, TimeWindow, BandTime
  26. [EnumMember] Threshold, //"Threshold"
  27. //Edge Trigger
  28. [EnumMember]
  29. Gradients, //"Gradient" Threshold, TimeWindow
  30. [EnumMember]
  31. Range, //"RangeIn" Threshold, TimeWindow
  32. [EnumMember]
  33. Peak, //Peak Threshold, TimeWindow, ValidationTime
  34. [EnumMember]
  35. Valley, //Vallery Threshold, TimeWindow, ValidationTime
  36. [EnumMember]
  37. FallingEdge, //"RiseFall" Threshold, ValidationTime,ValidationValue,
  38. [EnumMember]
  39. RisingEdge, //"FallRise" Threshold, ValidationTime,ValidationValue,
  40. [EnumMember] Fringe, //"FallRise" Threshold, ValidationTime,ValidationValue,
  41. [EnumMember] Etch,
  42. [EnumMember] ONetch,
  43. }
  44. [DataContract]
  45. public class EPDColumn
  46. {
  47. [DataMember]
  48. public bool bNormalization { get; set; }
  49. [DataMember]
  50. public bool bControl { get; set; }
  51. [DataMember]
  52. public bool bPostponePercent { get; set; }
  53. [DataMember]
  54. public bool bEvtTrigger { get; set; }
  55. [DataMember]
  56. public bool bCriteriaPercent { get; set; }
  57. [DataMember]
  58. public int nCCDExposureTime { get; set; }
  59. [DataMember]
  60. public int nPreFilterTime { get; set; }
  61. [DataMember]
  62. public int nPostFilterTime { get; set; }
  63. [DataMember]
  64. public AlgorithmType algorithmType { get; set; }
  65. [DataMember]
  66. public double nCriteria { get; set; }
  67. [DataMember]
  68. public int nDelayTime { get; set; }
  69. [DataMember]
  70. public int nValidationTime { get; set; }
  71. [DataMember]
  72. public int nTimeWindow { get; set; }
  73. [DataMember]
  74. public int nMinimalTime { get; set; } // Version 2
  75. [DataMember]
  76. public int nPostponeTime { get; set; } // Version 2
  77. [DataMember]
  78. public int nValidationValue { get; set; } // Used for rise / fall algorithm
  79. [DataMember]
  80. public int nRefractionIndex { get; set; }// Only for IEP, always zero
  81. [DataMember]
  82. public float fEtchAmount { get; set; } // Only for IEP, always zero
  83. [DataMember]
  84. public ushort[] nWaveLength { get; set; }
  85. [DataMember]
  86. public ushort[] nBinning { get; set; }
  87. [DataMember]
  88. public string cPSMode { get; set; } // Version 7
  89. [DataMember]
  90. public string cFunc { get; set; }
  91. public EPDColumn()
  92. {
  93. nWaveLength = new ushort[8];
  94. nBinning = new ushort[8];
  95. }
  96. }
  97. [DataContract]
  98. public class EPDConfig
  99. {
  100. [DataMember]
  101. public int nParameterCount { get; set; }
  102. [DataMember]
  103. public EPDColumn[] Columns;
  104. public bool FaultIfNoEPDTrigger { get; set; }
  105. [DataMember]
  106. public string cLogic { get; set; } // logic for multiple endpoints, resevered for future to support logic 'OR' Version 3
  107. public EPDConfig()
  108. {
  109. Columns = new EPDColumn[3];
  110. for (int i = 0; i < Columns.Length; i++)
  111. Columns[i] = new EPDColumn();
  112. }
  113. }
  114. [DataContract]
  115. public enum RegionEquType
  116. {
  117. [EnumMember] Average, // 平均
  118. [EnumMember] Sum, // 累加和
  119. [EnumMember] Min, // 最低亮度
  120. [EnumMember] Max, // 最大亮度
  121. [EnumMember] Median, // 从低到高排列时中值
  122. [EnumMember] Variance, // Variance
  123. [EnumMember] StandardDeviation, // 标准差的值
  124. //[EnumMember] M1_WeightedMean, // Weighted Mean WL
  125. //[EnumMember] M3_Skew, // Skew
  126. //[EnumMember] M4_Kurtosis, // Kurtosis
  127. }
  128. [DataContract]
  129. public class EPDChannel
  130. {
  131. public int ID { get; set; }
  132. public bool LinkStatus { get; set; }
  133. [DataMember] public bool Enable { get; set; }
  134. [DataMember] public string ChannelNO { get; set; }
  135. [DataMember] public string IP { get; set; }
  136. [DataMember] public int Port { get; set; }
  137. }
  138. }