using System; using System.Reflection; namespace MainForm.ClassFile.XiaomiAPI { /// /// 小米mes过站明细枚举 /// public class XiaomiMESEnum_ProcessData { /// /// [OP10]壳体清洁上料 枚举 /// public enum Enum_10_ProcessData { [Description("抛料次数")] nThrowCount, [Description("清洁气压")] fCleanAirPress, [Description("清洁速度")] fCleanSpeed, [Description("风刀高度")] fWindBladeHeight, [Description("清洁时间")] fCleanTime, [Description("清洁次数")] nCleanCount, [Description("外壳体余料数")] nRemainCount } /// /// [OP20]上盖板上料装备 /// public enum Enum_20_ProcessData { [Description("抛料次数")] nThrowCount, [Description("上盖余料数")] nRemainCount } /// /// [OP30]点散热胶装备 /// public enum Enum_30_ProcessData { [Description("供胶速度")] fGlueSupplySpeed, [Description("AB管气压")] fAB_AirPress, [Description("AB管气压差")] fAB_AirPressDiff, [Description("产品测高信息")] fMesHeightInfos, [Description("定期称重数据")] fIntervalWeights, [Description("剩余胶量")] fRemainGlues } /// /// [OP40]胶线检测 /// public enum Enum_40_ProcessData { [Description("胶线位置X偏差")] fGluePosX, [Description("胶线位置Y偏差")] fGluePosY, [Description("胶线面积")] fGlue_Areas, [Description("胶线高度")] fGlue_Heights, [Description("胶线检测结果")] nResult } /// /// [OP50]ADD板上料组装装备 /// public enum Enum_50_ProcessData { [Description("是否组装到位")] nIsAddPCBAsmOK, [Description("是否有ADD板")] nHaveAddPCB, [Description("装ADD板的压力")] fForceAddPCB, [Description("ADD板余料数")] nRemainCount } /// /// [OP60]组上盖板 /// public enum Enum_60_ProcessData { [Description("是否组装到位")] nIsTopCoverAsmOK, [Description("是否有上盖板")] nHaveTopCover, [Description("装上盖板的压力")] fForceTopCover } /// /// [OP70]上盖板锁螺丝 /// public enum Enum_70_ProcessData { [Description("锁附时间")] fScrewTimes, [Description("锁附顺序")] nScrewOrders, [Description("锁附结果")] nScrewResults, [Description("螺丝余料数")] nRemainCount, } /// /// [OP80]NG下料 /// public enum Enum_80_ProcessData { [Description("螺丝高度")] fScrewHeights, [Description("螺丝检测结果")] nScrewResults } /// /// [OP90]半成品下料 /// public enum Enum_90_ProcessData { [Description("抛料次数")] nThrowCount, [Description("料箱余料数")] nRemainCount } } //自定义枚举属性描述 [AttributeUsage(AttributeTargets.Field, AllowMultiple = false)] public class DescriptionAttribute : Attribute { public string Description { get; } public DescriptionAttribute(string description) { Description = description; } } public static class XiaomiMESEnumMethod { /// /// 获取枚举描述 /// /// /// 枚举名称 /// /// public static string GetEnumDescription(TEnum value) where TEnum : struct, IConvertible { if (!typeof(TEnum).IsEnum) throw new ArgumentException("TEnum 必须是枚举类型"); var fieldInfo = value.GetType().GetField(value.ToString()); var descriptionAttribute = fieldInfo.GetCustomAttributes(typeof(DescriptionAttribute), false) as DescriptionAttribute[]; if (descriptionAttribute == null || descriptionAttribute.Length == 0) return value.ToString(); // 如果没有描述特性,返回枚举成员名称 return descriptionAttribute[0].Description; } /// /// 获取枚举描述 /// /// /// /// public static string GetEnumDescriptionByName(string enumName, Type enumType) { if (string.IsNullOrEmpty(enumName)) throw new ArgumentException("枚举名称不能为空", nameof(enumName)); // 将字符串转换为枚举值 Enum enumValue; try { enumValue = (Enum)Enum.Parse(enumType, enumName); } catch (ArgumentException) { throw new ArgumentException("无效的枚举名称"); } // 获取字段信息 FieldInfo fieldInfo = enumValue.GetType().GetField(enumValue.ToString()); if (fieldInfo == null) return enumName; // 如果没有找到字段信息,则返回原始名称 // 获取描述特性 DescriptionAttribute attribute = Attribute.GetCustomAttribute(fieldInfo, typeof(DescriptionAttribute)) as DescriptionAttribute; return attribute != null ? attribute.Description : enumValue.ToString(); } } }