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;
}
///
/// 根据枚举的代码名称获取枚举列表信息
///
///
///
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("调试模式")]
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,
}
public enum DownCirce
{
Unknown = 0,
///
/// 标志着机械臂正在运动的状态
///
DownCirce,
///
/// 标志着机械臂运动完成的状态
///
DownCirceRuning,
}
///
/// 马达/运动板卡运行模式
///
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,
}
public enum ProcessStatus
{
Unknown = 0,
PlcInit,
///
/// 第七轴运动或者示教点移动
///
Init,
///
/// 第七轴移动到位
///
InitPlc,
PMoldReady,
PPLCRobotInit,
MoveInit_Y,
MoveInit,
///
/// 机械臂相机离目标螺丝测距30CM
///
Measure,
///
/// 打开光源
///
OpenLight,
///
/// 关闭光源
///
ClodeLight,
///
/// 视觉定位
///
CVLocation,
///
/// 拧紧轴发送启动命令
///
StartRun,
StartRunDown,
///
/// 循环拧送螺丝
///
StartRuning,
Finish,
///
/// 完成拧松螺丝并对下一螺丝做准备工作
///
RobotFinish,
///
/// 拧紧轴拧紧运动
///
ShaftToughRunning,
///
/// 拧紧轴拧紧运动
///
ShaftLoosenRunning,
///
/// 判断是否拧紧
///
Judge,
///
/// 到位后退出拧紧轴
///
UpShaft,
///
/// 机器人下电 所有第七轴回归初始位置
///
RobotPLCInit,
///
/// 回归初始位置完成,流程结束
///
RobotPLCInitFinish,
ALLFinish,
Warning,
Waiting,
WaitingZLS,
}
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 KawasakiRobotStatus
{
Unknown = 0,
///
/// 机械臂正在运动的状态
///
Stoped,
///
/// 机械臂运动完成的状态
///
Runing,
}
public enum RobotsStatus
{
Unknown = 0,
PowerOn,
Move,
///
/// 机械臂运动状态
///
Runing,
///
/// 机械臂空闲状态
///
Release,
MoveInit,
PowerOff,
}
public enum PLCStateWarm
{
Unknown = 0,
///
/// 急停红灯
///
ProStop,
///
/// 程序运行绿灯
///
Running,
///
/// 手动模式
///
HandModel,
///
/// 自动模式
///
ResetModel,
///
/// 程序不运行
///
Alarm,
XianWeiAram,
Robot1LeftAlarm,
Robot1RightAlarm,
}
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
}
///
/// 光源操作
///
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("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,
//}
}
}