XiaomiMESEnum_ProcessData.cs 6.4 KB

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