using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Reflection; namespace DH.Commons.Enums { public static class EnumHelper { /// /// 根据枚举的代码名称获取枚举列表信息 /// /// /// public static List GetEnumListByName(string enumName, string assemblyName = "Common.Model.Helper.EnumHelper+") { List list = new List(); string fullName = assemblyName + enumName; Type t = typeof(EnumHelper).Assembly.GetType(fullName); t.GetEnumNames().ToList().ForEach(e => { int value = Convert.ToInt32(Enum.Parse(t, e)); string desc = ((Enum)Enum.Parse(t, e)).GetEnumDescription(); var item = new { Value = value, Desc = desc, Code = e }; list.Add(item); }); return list; } /// /// 获取枚举的列表信息,一般供下拉列表使用 /// /// 枚举类型 /// Desc:中文描述 Value:整形值 Code:枚举值 public static List GetEnumListByType(Type enumType) { List list = new List(); enumType.GetEnumNames().ToList().ForEach(e => { int value = Convert.ToInt32(Enum.Parse(enumType, e)); string desc = ((Enum)Enum.Parse(enumType, e)).GetEnumDescription(); var item = new { Value = value, Desc = desc, Code = e }; list.Add(item); }); return list; } /// /// 获取具体某一枚举的中文描述 /// /// /// public static string GetEnumDescription(this Enum enumObj) { Type t = enumObj.GetType(); FieldInfo f = t.GetField(enumObj.ToString()); if (f == null) { return enumObj.ToString(); } DescriptionAttribute attr = f.GetCustomAttribute(); if (attr != null) { return attr.Description; } else { return enumObj.ToString(); } } //public static System.Windows.Media.Color GetEnumSelectedMediaColor(this Enum enumObj) //{ // Type t = enumObj.GetType(); // FieldInfo f = t.GetField(enumObj.ToString()); // ColorSelectAttribute attr = f.GetCustomAttribute(); // if (attr != null) // { // var prop = typeof(System.Windows.Media.Colors).GetProperties().FirstOrDefault(p => p.Name == attr.SelectedColor); // if (prop != null) // { // return (System.Windows.Media.Color)prop.GetValue(null); // } // } // return System.Windows.Media.Colors.Transparent; //} //public static System.Drawing.Color GetEnumSelectedColor(this Enum enumObj) //{ // Type t = enumObj.GetType(); // FieldInfo f = t.GetField(enumObj.ToString()); // ColorSelectAttribute attr = f.GetCustomAttribute(); // if (attr != null) // { // return System.Drawing.Color.FromName(attr.SelectedColor); // } // else // { // return System.Drawing.Color.Transparent; // } //} //public static System.Drawing.Color GetEnumSelectedFontColor(this Enum enumObj) //{ // Type t = enumObj.GetType(); // FieldInfo f = t.GetField(enumObj.ToString()); // var attr = f.GetCustomAttribute(); // if (attr != null) // { // return System.Drawing.Color.FromName(attr.SelectedColor); // } // else // { // return System.Drawing.Color.Transparent; // } //} //public static string GetEnumSelectedColorString(this Enum enumObj) //{ // Type t = enumObj.GetType(); // FieldInfo f = t.GetField(enumObj.ToString()); // ColorSelectAttribute attr = f.GetCustomAttribute(); // if (attr != null) // { // return attr.SelectedColor; // } // else // { // return "Transparent"; // } //} /// /// 当枚举牵涉到状态变换,检查现状态是否满足待转换的状态的前置状态要求 /// /// /// /// //public static bool CheckPreStateValid(this Enum stateToBe, int currentState) //{ // Type t = stateToBe.GetType(); // FieldInfo f = t.GetField(stateToBe.ToString()); // PreStateAttribute attr = f.GetCustomAttribute(); // if (attr == null) // { // return true; // } // else // { // return attr.CheckPreStateValid(currentState); // } //} /// /// 设备状态定义 /// 未初始化和异常状态无前置状态要求 /// 初始化操作前置状态必须是未初始化、关闭状态和异常状态 /// 打开前置必须是初始化和暂停 /// 关闭前置必须是打开和暂停和异常 /// 暂停前置必须是打开 /// //public enum DeviceState //{ // TBD = -1, // [ColorSelect("Gray")] // [FontColorSelect("Black")] // [Description("未初始化")] // DSUninit = 1, // [ColorSelect("Gold")] // [FontColorSelect("White")] // [PreState(1 + 2 + 4 + 8 + 32)] // [Description("初始化")] // DSInit = 2, // [ColorSelect("Lime")] // [FontColorSelect("Black")] // [PreState(2 + 4 + 16)] // [Description("运行中")] // DSOpen = 4, // [ColorSelect("Gray")] // [FontColorSelect("White")] // [PreState(1 + 4 + 8 + 16 + 32)] // [Description("关闭")] // DSClose = 8, // [ColorSelect("Gold")] // [FontColorSelect("White")] // [PreState(4 + 16)] // [Description("暂停")] // DSPause = 16, // [ColorSelect("Red")] // [FontColorSelect("White")] // [Description("异常")] // DSExcept = 32 //} ///// ///// 工序状态 ///// //public enum RunState //{ // [ColorSelect("Gold")] // [Description("空闲")] // Idle = 1, // [ColorSelect("Lime")] // [Description("运行中")] // Running = 2, // [ColorSelect("Gray")] // [Description("停止")] // Stop = 3, // [ColorSelect("Red")] // [Description("宕机")] // Down = 99, //} [Flags] public enum DeviceAttributeType { [Description("设备驱动")] Device = 1, [Description("初始配置")] InitialConfig = 2, [Description("操作配置")] OperationConfig = 4, [Description("设备配置")] DeviceConfig = 8, [Description("输入配置")] InputConfig = 16, [Description("初始配置控件")] InitialConfigCtrl = 32, [Description("操作配置控件")] OperationConfigCtrl = 64, [Description("设备配置控件")] DeviceConfigCtrl = 128, [Description("输入配置控件")] InputConfigCtrl = 256, [Description("运行控件")] RunCtrl = 512, [Description("操作配置面板")] OperationConfigPanel = 1024, } public enum EnableState { [Description("启用")] Enabled = 0, [Description("禁用")] Disabled = 1, } public enum EnableStateFilter { [Description("全部")] All = -1, [Description("启用")] Enabled = 0, [Description("禁用")] Disabled = 1, } public enum OutputResult { [Description("OK")] OK = 1, [Description("NG")] NG = 2, } /// /// PLC项目的值的类型 /// public enum PLCItemType { [Description("布尔类型")] Bool = 0, [Description("整型")] Integer = 1, [Description("字符串型")] String = 2, } /// /// 对PLC项目的操作类型 /// public enum PLCOpType { [Description("读取")] Read = 1, [Description("写入")] Write = 2, [Description("监控")] Monitor = 4, /// /// 报警监控 1+8 /// [Description("报警监控")] WarningMonitor = 9, /// /// CT监控 1+16 /// [Description("CT监控")] CTMonitor = 17, } /// /// 相机运行模式 /// public enum CameraOpMode { [Description("单次拍照")] SingleSnapShot = 1, [Description("连续模式")] ContinuousMode = 2, } /// /// 日志类型 /// public enum LogType { [Description("警告信息")] Exception_Warning = 1, [Description("错误信息")] Exception_Error = 2, [Description("致命信息")] Exception_Fatal = 3, [Description("设备信息")] Info_Device = 11, [Description("工序信息")] Info_Process = 12, [Description("操作信息")] Info_Operation = 13, [Description("用户操作信息")] User_Operation = 21, [Description("测量结果")] MeasureResult = 31, } //public enum CameraDriverType //{ // Halcon, // //HalconPlugIn, // Hik, //} //public enum ImageType //{ // Bmp, // Png, // Jpeg, //} //public enum ReplyValue //{ // OK = 1, // NG = -1, // IGNORE = -999, //} public enum PriorityDirection { X, Y, } public enum ElementState { New = 1, MouseHover = 2, MouseInSide = 3, Selected = 4, Moving = 5, Editing = 6, Normal = 11, Measuring = 21, MeasureDoneOK = 22, MeasureDoneNG = 23, CanStretchLeft = 41, CanStretchRight = 42, CanStretchTop = 43, CanStretchBottom = 44, CanStretchLeftUpperCorner = 45, CanStretchLeftLowerCorner = 46, CanStretchRightUpperCorner = 47, CanStretchRightLowerCorner = 48, StretchingLeft = 31, StretchingRight = 32, StretchingTop = 33, StretchingBottom = 34, StretchingLeftUpperCorner = 35, StretchingLeftLowerCorner = 36, StretchingRightUpperCorner = 37, StretchingRightLowerCorner = 38, } public enum MouseState { Normal = 1, HoverElement = 2, InSideElement = 3, MoveElement = 4, StretchingLeft = 11, StretchingRight = 12, StretchingTop = 13, StretchingBottom = 14, StretchingLeftUpperCorner = 15, StretchingLeftLowerCorner = 16, StretchingRightUpperCorner = 17, StretchingRightLowerCorner = 18, New = 21, Editing = 22, //SelectedElement = 23, MovingAll = 31, SelectionZone = 41, SelectionZoneDoing = 42, } public enum RunMode { [Description("正常运行模式")] NormalMode = 1, [Description("调试模式")] DebugMode = 0, [Description("模拟模式")] DemoMode = 2, } public enum MoveType { [Description("绝对运动")] AbsoluteMove = 1, [Description("机器人坐标系相对运动")] RobotRelativeMove = 2, [Description("相对某个基准点位的相对运动")] BasedPointRelativeMove = 3, [Description("回原点")] Origin = 4, [Description("左侧姿势")] LeftPose = 6, [Description("右侧姿势")] RightPose = 5, [Description("前侧姿势")] FrontPose = 7, [Description("相机坐标系相对运动")] CameraRelativeMove = 12, } /// /// 马达/运动板卡运行模式 /// public enum MotionMode { /// /// 普通点位运动 /// [Description("普通点位运动")] P2P = 1, /// /// 找正限位运动 /// [Description("找正限位运动")] FindPositive = 4, /// /// 离开正限位 /// [Description("离开正限位")] LeavePositive = 5, /// /// 找负限位运动 /// [Description("找负限位运动")] FindNegative = 6, /// /// 离开负限位 /// [Description("离开负限位")] LeaveNegative = 7, /// /// 找原点运动 /// [Description("回原点运动")] GoHome = 8, /// /// Jog模式 /// [Description("Jog模式")] Jog = 9, ///// ///// 读数头找原点方式 ///// //[Description("找原点inde")] //FindOriIndex = 10, ///// ///// 插补模式 ///// //[Description("插补模式")] //Coordinate = 11 } /// /// IO预定义类型 主要针对输出 /// public enum IOPrestatement { [Description("自定义")] Customized = 0, [Description("指示灯-黄")] Light_Yellow = 1, [Description("指示灯-绿")] Light_Green = 2, [Description("指示灯-红")] Light_Red = 3, [Description("蜂鸣器")] Beep = 4, [Description("照明灯")] Light = 5, [Description("急停")] EmergencyStop = 99, } ///// ///// GTS运动板卡控制返回控制码 ///// //public enum GTSRetCode //{ // [Description("指令执行成功")] // GRCRunOK = 0, // 指令执行成功 // [Description("指令执行错误")] // GRCRunErr = 1, // 指令执行错误 // [Description("icense不支持")] // GRCNotSupport = 2, // icense不支持 // [Description("指令参数错误")] // GRCInvalidParam = 7, // 指令参数错误 // [Description("主机和运动控制器通讯失败")] // GRCCommErr = -1, // 主机和运动控制器通讯失败 // [Description("打开控制器失败")] // GRCOpenErr = -6, // 打开控制器失败 // [Description("运动控制器没有响应")] // GRCNotAck = -7 // 运动控制器没有响应 //} /// /// 运动板卡 IO 类型(IN OUT) /// public enum IOType { [Description("INPUT")] INPUT = 0, [Description("OUTPUT")] OUTPUT = 1 } public enum IOValue { [Description("关闭")] FALSE = 0, [Description("开启")] TRUE = 1, [Description("反转")] REVERSE = 2, } /// /// PubSubCenter事件中心的消息类型 /// public enum PubSubCenterMessageType { /// /// 运行界面更新产品下拉 /// [Description("更新产品下拉")] UpdateProductionCodes, /// /// 流程是否关闭 /// [Description("流程是否打开")] IsProcessOpened, /// /// 清除数据 /// [Description("清除数据")] ClearData, /// /// 更新批次信息 /// [Description("更新批次信息")] UpdateBatchNO, /// /// 请求批次信息 /// [Description("更新批次信息")] RequestBatchNO, /// /// 模型检测异常 /// [Description("模型检测异常")] MLDetectException, } public enum SizeEnum { [Description("圆形测量")] 圆形测量 = 1, [Description("直线测量")] 直线测量 = 2, [Description("线线测量")] 线线测量 = 3, [Description("线圆测量")] 线圆测量 = 4, [Description("高度测量")] 高度测量 = 5, } public enum MachineState { Unknown = 0, Ready = 1, Running = 2, Alarm = 3, Pause = 4, Resetting = 5, Closing = 6, ClearProduct = 7, Warning = 8, } public enum ResultState { [Description("NA")] NA = -5, [Description("尺寸NG")] SizeNG = -4, [Description("检测NG")] DetectNG = -3, //[Description("检测不足TBD")] // ShortageTBD = -2, [Description("检测结果TBD")] ResultTBD = -1, [Description("OK")] OK = 1, // [Description("NG")] // NG = 2, //统计结果 [Description("A类NG")] A_NG = 25, [Description("B类NG")] B_NG = 26, [Description("C类NG")] C_NG = 27, } public enum HikCameraType { [Description("HikCamera-Gige")] Gige = 0, [Description("HikCamera-USB")] USB = 1 } /// /// 光源操作 /// public enum LightOperation { [Description("打开")] Open = 1, [Description("关闭")] Close = 2, [Description("写入")] Write = 3, [Description("读取")] Read = 4, [Description("频闪")] Flash = 5, } /// /// 监听反馈数据值 /// public enum ReturnValue { OKVALUE = 1, NGVALUE = -1, EXCEPTIONVALUE = -2, UNAUTHORIZATION = -10, IGNORE = -999, } //public enum LogLevel //{ // [Description("详细")] // [ColorSelect("White")] // [FontColorSelect("Green")] // Detail = 2, // [Description("信息")] // [ColorSelect("White")] // [FontColorSelect("Dark")] // Information = 3, // [Description("辅助")] // [ColorSelect("White")] // [FontColorSelect("Blue")] // Assist = 4, // [Description("动作")] // [ColorSelect("DarkGreen")] // [FontColorSelect("Yellow")] // Action = 5, // [Description("错误")] // [ColorSelect("Orange")] // [FontColorSelect("White")] // Error = 6, // [Description("警报")] // [ColorSelect("Brown")] // [FontColorSelect("White")] // Warning = 7, // [Description("异常")] // [ColorSelect("Red")] // [FontColorSelect("White")] // Exception = 8, //} } }