|
@@ -0,0 +1,216 @@
|
|
|
+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>
|
|
|
+ enum Enum_20_ProcessData
|
|
|
+ {
|
|
|
+ [Description("抛料次数")]
|
|
|
+ nThrowCount,
|
|
|
+ [Description("上盖余料数")]
|
|
|
+ nRemainCount
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// [OP30]点散热胶装备
|
|
|
+ /// </summary>
|
|
|
+ enum Enum_30_ProcessData
|
|
|
+ {
|
|
|
+ [Description("供胶速度")]
|
|
|
+ fGlueSupplySpeed,
|
|
|
+ [Description("AB管气压")]
|
|
|
+ fAB_AirPress,
|
|
|
+ [Description("AB管气压差")]
|
|
|
+ fAB_AirPressDiff,
|
|
|
+ [Description("产品测高信息")]
|
|
|
+ fMesHeightInfos,
|
|
|
+ [Description("定期称重数据")]
|
|
|
+ fIntervalWeights,
|
|
|
+ [Description("剩余胶量")]
|
|
|
+ fRemainGlues
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// [OP40]胶线检测
|
|
|
+ /// </summary>
|
|
|
+ enum Enum_40_ProcessData
|
|
|
+ {
|
|
|
+ [Description("胶线位置X偏差")]
|
|
|
+ fGluePosX,
|
|
|
+ [Description("胶线位置Y偏差")]
|
|
|
+ fGluePosY,
|
|
|
+ [Description("胶线面积")]
|
|
|
+ fGlue_Areas,
|
|
|
+ [Description("胶线高度")]
|
|
|
+ fGlue_Heights,
|
|
|
+ [Description("胶线检测结果")]
|
|
|
+ nResult
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// [OP50]ADD板上料组装装备
|
|
|
+ /// </summary>
|
|
|
+ enum Enum_50_ProcessData
|
|
|
+ {
|
|
|
+ [Description("是否组装到位")]
|
|
|
+ nIsAddPCBAsmOK,
|
|
|
+ [Description("是否有ADD板")]
|
|
|
+ nHaveAddPCB,
|
|
|
+ [Description("装ADD板的压力")]
|
|
|
+ fForceAddPCB,
|
|
|
+ [Description("ADD板余料数")]
|
|
|
+ nRemainCount
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// [OP60]组上盖板
|
|
|
+ /// </summary>
|
|
|
+ enum Enum_60_ProcessData
|
|
|
+ {
|
|
|
+ [Description("是否组装到位")]
|
|
|
+ nIsTopCoverAsmOK,
|
|
|
+ [Description("是否有上盖板")]
|
|
|
+ nHaveTopCover,
|
|
|
+ [Description("装上盖板的压力")]
|
|
|
+ fForceTopCover
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// [OP70]上盖板锁螺丝
|
|
|
+ /// </summary>
|
|
|
+ enum Enum_70_ProcessData
|
|
|
+ {
|
|
|
+ [Description("锁附时间")]
|
|
|
+ fScrewTimes,
|
|
|
+ [Description("锁附顺序")]
|
|
|
+ nScrewOrders,
|
|
|
+ [Description("锁附结果")]
|
|
|
+ nScrewResults,
|
|
|
+ [Description("螺丝余料数")]
|
|
|
+ nRemainCount,
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// [OP80]NG下料
|
|
|
+ /// </summary>
|
|
|
+ enum Enum_80_ProcessData
|
|
|
+ {
|
|
|
+ [Description("螺丝高度")]
|
|
|
+ fScrewHeights,
|
|
|
+ [Description("螺丝检测结果")]
|
|
|
+ nScrewResults
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// [OP90]半成品下料
|
|
|
+ /// </summary>
|
|
|
+ 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();
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+}
|