123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216 |
- using System;
- using System.Reflection;
- namespace MainForm.ClassFile.XiaomiAPI
- {
- /// <summary>
- /// 小米mes过站明细枚举
- /// </summary>
- public class XiaomiMESEnum_ProcessData
- {
- /// <summary>
- /// [OP10]壳体清洁上料 枚举
- /// </summary>
- public enum Enum_10_ProcessData
- {
- [Description("抛料次数")]
- nThrowCount,
- [Description("清洁气压")]
- fCleanAirPress,
- [Description("清洁速度")]
- fCleanSpeed,
- [Description("风刀高度")]
- fWindBladeHeight,
- [Description("清洁时间")]
- fCleanTime,
- [Description("清洁次数")]
- nCleanCount,
- [Description("外壳体余料数")]
- nRemainCount
- }
- /// <summary>
- /// [OP20]上盖板上料装备
- /// </summary>
- public enum Enum_20_ProcessData
- {
- [Description("抛料次数")]
- nThrowCount,
- [Description("上盖余料数")]
- nRemainCount
- }
- /// <summary>
- /// [OP30]点散热胶装备
- /// </summary>
- public enum Enum_30_ProcessData
- {
- [Description("供胶速度")]
- fGlueSupplySpeed,
- [Description("AB管气压")]
- fAB_AirPress,
- [Description("AB管气压差")]
- fAB_AirPressDiff,
- [Description("产品测高信息")]
- fMesHeightInfos,
- [Description("定期称重数据")]
- fIntervalWeights,
- [Description("剩余胶量")]
- fRemainGlues
- }
- /// <summary>
- /// [OP40]胶线检测
- /// </summary>
- public enum Enum_40_ProcessData
- {
- [Description("胶线位置X偏差")]
- fGluePosX,
- [Description("胶线位置Y偏差")]
- fGluePosY,
- [Description("胶线面积")]
- fGlue_Areas,
- [Description("胶线高度")]
- fGlue_Heights,
- [Description("胶线检测结果")]
- nResult
- }
- /// <summary>
- /// [OP50]ADD板上料组装装备
- /// </summary>
- public enum Enum_50_ProcessData
- {
- [Description("是否组装到位")]
- nIsAddPCBAsmOK,
- [Description("是否有ADD板")]
- nHaveAddPCB,
- [Description("装ADD板的压力")]
- fForceAddPCB,
- [Description("ADD板余料数")]
- nRemainCount
- }
- /// <summary>
- /// [OP60]组上盖板
- /// </summary>
- public enum Enum_60_ProcessData
- {
- [Description("是否组装到位")]
- nIsTopCoverAsmOK,
- [Description("是否有上盖板")]
- nHaveTopCover,
- [Description("装上盖板的压力")]
- fForceTopCover
- }
- /// <summary>
- /// [OP70]上盖板锁螺丝
- /// </summary>
- public enum Enum_70_ProcessData
- {
- [Description("锁附时间")]
- fScrewTimes,
- [Description("锁附顺序")]
- nScrewOrders,
- [Description("锁附结果")]
- nScrewResults,
- [Description("螺丝余料数")]
- nRemainCount,
- }
- /// <summary>
- /// [OP80]NG下料
- /// </summary>
- public enum Enum_80_ProcessData
- {
- [Description("螺丝高度")]
- fScrewHeights,
- [Description("螺丝检测结果")]
- nScrewResults
- }
- /// <summary>
- /// [OP90]半成品下料
- /// </summary>
- 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 {
- /// <summary>
- /// 获取枚举描述
- /// </summary>
- /// <typeparam name="TEnum"></typeparam>
- /// <param name="value">枚举名称</param>
- /// <returns></returns>
- /// <exception cref="ArgumentException"></exception>
- public static string GetEnumDescription<TEnum>(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;
- }
- /// <summary>
- /// 获取枚举描述
- /// </summary>
- /// <param name="enumName"></param>
- /// <returns></returns>
- /// <exception cref="ArgumentException"></exception>
- 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();
- }
- }
- }
|