2025-03-18 14:20:11 +08:00

772 lines
22 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Reflection;
namespace DH.Commons.Enums
{
public static class EnumHelper
{
/// <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("正常运行模式")]
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,
}
/// <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,
/// <summary>
/// 模型检测异常
/// </summary>
[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
}
/// <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("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,
//}
}
}