using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Reflection; namespace BRS.Common.Model.Helper { public static class EnumHelper { static int ShijiaoPostion1 = 0; static int ShijiaoPostion2 = 0; static int ShijiaoPostion3 = 0; public struct MyPoint { public double dX; public double dY; } public struct Corner { public MyPoint LU; public MyPoint RU; public MyPoint LD; public MyPoint RD; } /// <summary> /// 根据枚举的代码名称获取枚举列表信息 /// </summary> /// <param name="enumName"></param> /// <returns></returns> public static List<dynamic> GetEnumListByName(string enumName, string assemblyName = "Common.Model.Helper.EnumHelper+") { List<dynamic> list = new List<dynamic>(); 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; } /// <summary> /// 获取枚举的列表信息,一般供下拉列表使用 /// </summary> /// <param name="enumType">枚举类型</param> /// <returns>Desc:中文描述 Value:整形值 Code:枚举值</returns> public static List<dynamic> GetEnumListByType(Type enumType) { List<dynamic> list = new List<dynamic>(); 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; } /// <summary> /// 获取具体某一枚举的中文描述 /// </summary> /// <param name="enumObj"></param> /// <returns></returns> 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<DescriptionAttribute>(); 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<ColorSelectAttribute>(); 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<ColorSelectAttribute>(); 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<FontColorSelectAttribute>(); 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<ColorSelectAttribute>(); if (attr != null) { return attr.SelectedColor; } else { return "Transparent"; } } /// <summary> /// 当枚举牵涉到状态变换,检查现状态是否满足待转换的状态的前置状态要求 /// </summary> /// <param name="stateToBe"></param> /// <param name="currentState"></param> /// <returns></returns> public static bool CheckPreStateValid(this Enum stateToBe, int currentState) { Type t = stateToBe.GetType(); FieldInfo f = t.GetField(stateToBe.ToString()); PreStateAttribute attr = f.GetCustomAttribute<PreStateAttribute>(); if (attr == null) { return true; } else { return attr.CheckPreStateValid(currentState); } } /// <summary> /// 设备状态定义 /// 未初始化和异常状态无前置状态要求 /// 初始化操作前置状态必须是未初始化、关闭状态和异常状态 /// 打开前置必须是初始化和暂停 /// 关闭前置必须是打开和暂停和异常 /// 暂停前置必须是打开 /// </summary> 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 } /// <summary> /// 工序状态 /// </summary> 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, } /// <summary> /// PLC项目的值的类型 /// </summary> public enum PLCItemType { [Description("布尔类型")] Bool = 0, [Description("整型")] Integer = 1, [Description("字符串型")] String = 2, } /// <summary> /// 对PLC项目的操作类型 /// </summary> public enum PLCOpType { [Description("读取")] Read = 1, [Description("写入")] Write = 2, [Description("监控")] Monitor = 4, /// <summary> /// 报警监控 1+8 /// </summary> [Description("报警监控")] WarningMonitor = 9, /// <summary> /// CT监控 1+16 /// </summary> [Description("CT监控")] CTMonitor = 17, } /// <summary> /// 相机运行模式 /// </summary> public enum CameraOpMode { [Description("单次拍照")] SingleSnapShot = 1, [Description("连续模式")] ContinuousMode = 2, } /// <summary> /// 日志类型 /// </summary> 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("调试模式")] DebugMode = 0, [Description("正常运行模式")] NormalMode = 1, [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, } /// <summary> /// 马达/运动板卡运行模式 /// </summary> public enum MotionMode { /// <summary> /// 普通点位运动 /// </summary> [Description("普通点位运动")] P2P = 1, /// <summary> /// 找正限位运动 /// </summary> [Description("找正限位运动")] FindPositive = 4, /// <summary> /// 离开正限位 /// </summary> [Description("离开正限位")] LeavePositive = 5, /// <summary> /// 找负限位运动 /// </summary> [Description("找负限位运动")] FindNegative = 6, /// <summary> /// 离开负限位 /// </summary> [Description("离开负限位")] LeaveNegative = 7, /// <summary> /// 找原点运动 /// </summary> [Description("回原点运动")] GoHome = 8, /// <summary> /// Jog模式 /// </summary> [Description("Jog模式")] Jog = 9, ///// <summary> ///// 读数头找原点方式 ///// </summary> //[Description("找原点inde")] //FindOriIndex = 10, ///// <summary> ///// 插补模式 ///// </summary> //[Description("插补模式")] //Coordinate = 11 } /// <summary> /// IO预定义类型 主要针对输出 /// </summary> 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, } /// <summary> /// GTS运动板卡控制返回控制码 /// </summary> 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 // 运动控制器没有响应 } /// <summary> /// 运动板卡 IO 类型(IN OUT) /// </summary> public enum IOType { [Description("INPUT")] INPUT = 0, [Description("OUTPUT")] OUTPUT = 1 } public enum IOValue { [Description("关闭")] FALSE = 0, [Description("开启")] TRUE = 1, [Description("反转")] REVERSE = 2, } /// <summary> /// PubSubCenter事件中心的消息类型 /// </summary> public enum PubSubCenterMessageType { /// <summary> /// 运行界面更新产品下拉 /// </summary> [Description("更新产品下拉")] UpdateProductionCodes, /// <summary> /// 流程是否关闭 /// </summary> [Description("流程是否打开")] IsProcessOpened, /// <summary> /// 清除数据 /// </summary> [Description("清除数据")] ClearData, /// <summary> /// 更新批次信息 /// </summary> [Description("更新批次信息")] UpdateBatchNO, /// <summary> /// 请求批次信息 /// </summary> [Description("更新批次信息")] RequestBatchNO, } public enum MachineState { Unknown = 0, Ready = 1, Running = 2, Alarm = 3, Pause = 4, Resetting = 5, Closing = 6, ClearProduct = 7, //等待 Waiting=8, } public enum WhoolSize { Size17=0, Size16, Size18, } public enum MachineStateStep { Unknown = 0, Ready ,//上电就绪 inflation,//充气气 Running ,//硫化 Bleeding,//放气 Alarm , Pause , Resetting , Closing , ClearProduct , } public enum RobotsStatus { Unknown = 0, Inplace , Claming, Relasing, Moving , Wating , Pweroff, Reset , } public enum ProcessStatus { Unknown = 0, /// <summary> /// 初始化点 /// </summary> Init, MesureingInit, MesureingInitPLC, Mesureing , MesureingPLC, Claim , ClaimPLC, Runing , RunFinish, Loosen, LoosenPLC, TakeOffMove, TakeOffMovePLC, TakeOffMovePLC_2, TakeOff,/// <summary> /// 取出轮胎 /// </summary> /// TakeOffCaim, TakeOffPLC, TakeOffPoint, TakeOffPointCaim, TakeOffPointCaimFlag, TakeOffWhool, Resetting , Closing , ClearProduct , } public enum ResultState { [Description("NA")] NA = -5, //[Description("尺寸NG")] //SizeNG = -4, [Description("检测NG")] NG = -1, //[Description("A类NG")] //A_NG = -3, //[Description("C类NG")] //C_NG = -2, //[Description("B类NG")] //B_NG = -1, [Description("OK")] OK = 1, } public enum HikCameraType { [Description("HikCamera-Gige")] Gige = 0, [Description("HikCamera-USB")] USB = 1 } /// <summary> /// 光源操作 /// </summary> public enum LightOperation { [Description("打开")] Open = 1, [Description("关闭")] Close = 2, [Description("写入")] Write = 3, [Description("读取")] Read = 4, [Description("频闪")] Flash = 5, } /// <summary> /// 监听反馈数据值 /// </summary> public enum ReturnValue { OKVALUE = 1, NGVALUE = -1, EXCEPTIONVALUE = -2, UNAUTHORIZATION = -10, IGNORE = -999, } public enum LogLevel { [Description("辅助")] [ColorSelect("White")] [FontColorSelect("Blue")] Assist = 1, [Description("详细")] [ColorSelect("White")] [FontColorSelect("Green")] Detail = 2, [Description("信息")] [ColorSelect("White")] [FontColorSelect("Dark")] Information = 3, [Description("动作")] [ColorSelect("DarkGreen")] [FontColorSelect("Yellow")] Action = 4, [Description("错误")] [ColorSelect("Orange")] [FontColorSelect("White")] Error = 5, [Description("警报")] [ColorSelect("Brown")] [FontColorSelect("White")] Warning = 6, [Description("异常")] [ColorSelect("Red")] [FontColorSelect("White")] Exception = 7, } public enum DetectionDeviceTypeDef { [Description("CPU")] CPU = 0, [Description("GPU")] GPU, [Description("VPU")] VPU, } //public enum DetectImageFormat //{ // [Description("所有格式")] // ALL = 0, // [Description("JPEG")] // JPEG = 1, // [Description("PNG")] // PNG = 2, // [Description("TIFF")] // TIFF = 3, //} } }