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();
}
}
}