XiaomiMESEnum_ProcessData.cs 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. using System;
  2. using System.Reflection;
  3. namespace MainForm.ClassFile.XiaomiAPI
  4. {
  5. /// <summary>
  6. /// 小米mes过站明细枚举
  7. /// </summary>
  8. public class XiaomiMESEnum_ProcessData
  9. {
  10. /// <summary>
  11. /// [OP10]壳体清洁上料 枚举
  12. /// </summary>
  13. public enum Enum_10_ProcessData
  14. {
  15. [Description("抛料次数")]
  16. nThrowCount,
  17. [Description("清洁气压")]
  18. fCleanAirPress,
  19. [Description("清洁速度")]
  20. fCleanSpeed,
  21. [Description("风刀高度")]
  22. fWindBladeHeight,
  23. [Description("清洁时间")]
  24. fCleanTime,
  25. [Description("清洁次数")]
  26. nCleanCount,
  27. [Description("外壳体余料数")]
  28. nRemainCount
  29. }
  30. /// <summary>
  31. /// [OP20]上盖板上料装备
  32. /// </summary>
  33. public enum Enum_20_ProcessData
  34. {
  35. [Description("抛料次数")]
  36. nThrowCount,
  37. [Description("上盖余料数")]
  38. nRemainCount,
  39. [Description("测距")]
  40. nCeJuData
  41. }
  42. /// <summary>
  43. /// [OP30]点散热胶装备
  44. /// </summary>
  45. public enum Enum_30_ProcessData
  46. {
  47. [Description("供胶速度")]
  48. fGlueSupplySpeed,
  49. [Description("AB管气压")]
  50. fAB_AirPress,
  51. [Description("AB管气压差")]
  52. fAB_AirPressDiff,
  53. [Description("产品测高信息")]
  54. fMesHeightInfos,
  55. [Description("定期称重数据")]
  56. fIntervalWeights,
  57. [Description("剩余胶量")]
  58. fRemainGlues
  59. }
  60. /// <summary>
  61. /// [OP40]胶线检测
  62. /// </summary>
  63. public enum Enum_40_ProcessData
  64. {
  65. [Description("胶线位置X偏差")]
  66. fGluePosX,
  67. [Description("胶线位置Y偏差")]
  68. fGluePosY,
  69. [Description("胶线面积")]
  70. fGlue_Areas,
  71. [Description("胶线高度")]
  72. fGlue_Heights,
  73. [Description("胶线检测结果")]
  74. nResult
  75. }
  76. /// <summary>
  77. /// [OP50]ADD板上料组装装备
  78. /// </summary>
  79. public enum Enum_50_ProcessData
  80. {
  81. [Description("是否组装到位")]
  82. nIsAddPCBAsmOK,
  83. [Description("是否有ADD板")]
  84. nHaveAddPCB,
  85. [Description("装ADD板的压力")]
  86. fForceAddPCB,
  87. [Description("ADD板余料数")]
  88. nRemainCount
  89. }
  90. /// <summary>
  91. /// [OP60]组上盖板
  92. /// </summary>
  93. public enum Enum_60_ProcessData
  94. {
  95. [Description("是否组装到位")]
  96. nIsTopCoverAsmOK,
  97. [Description("是否有上盖板")]
  98. nHaveTopCover,
  99. [Description("装上盖板的压力")]
  100. fForceTopCover
  101. }
  102. /// <summary>
  103. /// [OP70]上盖板锁螺丝
  104. /// </summary>
  105. public enum Enum_70_ProcessData
  106. {
  107. [Description("锁附时间")]
  108. fScrewTimes,
  109. [Description("锁附顺序")]
  110. nScrewOrders,
  111. [Description("锁附结果")]
  112. nScrewResults,
  113. [Description("螺丝余料数")]
  114. nRemainCount,
  115. }
  116. /// <summary>
  117. /// [OP80]NG下料
  118. /// </summary>
  119. public enum Enum_80_ProcessData
  120. {
  121. [Description("螺丝高度")]
  122. fScrewHeights,
  123. [Description("螺丝检测结果")]
  124. nScrewResults
  125. }
  126. /// <summary>
  127. /// [OP90]半成品下料
  128. /// </summary>
  129. public enum Enum_90_ProcessData
  130. {
  131. [Description("抛料次数")]
  132. nThrowCount,
  133. [Description("料箱余料数")]
  134. nRemainCount
  135. }
  136. }
  137. //自定义枚举属性描述
  138. [AttributeUsage(AttributeTargets.Field, AllowMultiple = false)]
  139. public class DescriptionAttribute : Attribute
  140. {
  141. public string Description { get; }
  142. public DescriptionAttribute(string description)
  143. {
  144. Description = description;
  145. }
  146. }
  147. public static class XiaomiMESEnumMethod {
  148. /// <summary>
  149. /// 获取枚举描述
  150. /// </summary>
  151. /// <typeparam name="TEnum"></typeparam>
  152. /// <param name="value">枚举名称</param>
  153. /// <returns></returns>
  154. /// <exception cref="ArgumentException"></exception>
  155. public static string GetEnumDescription<TEnum>(TEnum value) where TEnum : struct, IConvertible
  156. {
  157. if (!typeof(TEnum).IsEnum)
  158. throw new ArgumentException("TEnum 必须是枚举类型");
  159. var fieldInfo = value.GetType().GetField(value.ToString());
  160. var descriptionAttribute = fieldInfo.GetCustomAttributes(typeof(DescriptionAttribute), false) as DescriptionAttribute[];
  161. if (descriptionAttribute == null || descriptionAttribute.Length == 0)
  162. return value.ToString(); // 如果没有描述特性,返回枚举成员名称
  163. return descriptionAttribute[0].Description;
  164. }
  165. /// <summary>
  166. /// 获取枚举描述
  167. /// </summary>
  168. /// <param name="enumName"></param>
  169. /// <returns></returns>
  170. /// <exception cref="ArgumentException"></exception>
  171. public static string GetEnumDescriptionByName(string enumName, Type enumType)
  172. {
  173. if (string.IsNullOrEmpty(enumName))
  174. throw new ArgumentException("枚举名称不能为空", nameof(enumName));
  175. // 将字符串转换为枚举值
  176. Enum enumValue;
  177. try
  178. {
  179. enumValue = (Enum)Enum.Parse(enumType, enumName);
  180. }
  181. catch (ArgumentException)
  182. {
  183. throw new ArgumentException("无效的枚举名称");
  184. }
  185. // 获取字段信息
  186. FieldInfo fieldInfo = enumValue.GetType().GetField(enumValue.ToString());
  187. if (fieldInfo == null)
  188. return enumName; // 如果没有找到字段信息,则返回原始名称
  189. // 获取描述特性
  190. DescriptionAttribute attribute = Attribute.GetCustomAttribute(fieldInfo, typeof(DescriptionAttribute)) as DescriptionAttribute;
  191. return attribute != null ? attribute.Description : enumValue.ToString();
  192. }
  193. }
  194. }