You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

703 lines
20 KiB
C++

#pragma once
//全局类型定义
using namespace std;/*使用标准库的名字空间*/
//STL 标准头文件
#include <set>
#include <vector>
#include <list>
#include <iostream>
#include <fstream>
#include <string>
#include <utility>
#include <map>
#include <deque>
#include <algorithm>
//屏蔽编译警告
#pragma warning(disable : 4800)
#pragma warning(disable : 4244)
#pragma warning(disable : 4996)
#pragma warning(disable : 4018)
#pragma warning(disable : 4477)
#pragma warning(disable : 4005)
#define PI 3.14159265358979323846
#define EE 2.71828
//#define COORD_EPS 0.001 //坐标误差精度(0.001 表示在坐标比较中,两个点的距离小于1um 就认为是相等)
#define COORD_EPS 0.00001
#define VAR_PAR_CNT 20//可变参数的数量
//软件中的延时时间
#define FIRST_OPEN_DELAY 5000 //打开软件后等待这个时间再开始检测状态
#define READ_INFO_FAST_DELAY 300 //读取信息延时ms (快速)
#define READ_INFO_SLOW_DELAY 2000 //读取信息延时ms (慢速)
#define READ_PLC_INFO_DELAY 300 //读取Plc 信息延时ms
#define READ_ROBOT_STATE_DELAY 3000 //读取传片机状态 信息延时ms
#define READ_TEK_INFO_DELAY 500 //读取TEK 示波器信息延时ms
#define READ_LASER_POWER_TIMER_DELAY 600 // 界面读取激光功率的timer 延时
#define READ_LASER_DIS_METER_TIMER_DELAY 800 // 界面读取激光测距仪的timer 延时
#define READ_LASER_STATE_DELAY 2000 //读取激光器信息延时ms
#define READ_SECS_VAR_DELAY 200 //更新secs 变量的延时ms
#define CTRL_HOST_JOB_DELAY 500 //控制服务器job 延时ms
#define CTRL_CYCLIC_RUN_DELAY 3000 //控制服务器job 延时ms
#define RGB_WHITE RGB(255,255,255) //白色
#define RGB_BLACK RGB(0,0,0) //黑色
#define RGB_GREEN RGB(0,255,0) //绿色
#define RGB_GREEN1 RGB(29,241,135) //绿色
#define RGB_GREEN2 RGB(228,249,157) //浅绿色
#define RGB_RED RGB(255,0,0) //红色
#define RGB_PINK RGB(255,55,120) //粉红色
#define RGB_PINK1 RGB(231,61,175) //粉红色
#define RGB_YELLOW RGB(255,255,0) //黄色
#define RGB_BLUE RGB(0,0,255) //蓝色
#define RGB_BLUE1 RGB(153,217,234) //天蓝色
#define RGB_BLUE2 RGB(49,240,243) //天蓝色2
#define RGB_NODE_BLUE RGB(0,63,255) //节点蓝色
#define RGB_PURPLE RGB(163,73,164) //紫色
#define RGB_GRAY RGB(240,240,240) //灰色
#define RGB_GRAY1 RGB(160,160,160) //深灰色
#define RGB_GRAY2 RGB(217,217,217) //浅灰色
#define STR_NULL ""
#define STR_INPUT_ERROR "无效指令: "
#define STR_INPUT_SYMBOL '>'
#define OK_STATE_STR "正常"
#define WARNING_STATE_STR "警告"
#define WARNING_STR "报警"
#define STATE_STR_D "状态D"//用来区分要使用的门禁状态
#define NO_USE_STR "不使用"
#define SEL_ALL_STR "ALL"
#define COMMUNICATION_ERR "Communication Error"
#define DEVICE_NOT_CONNECT "Device Not Conect"
#define SP_POWER_NAME "内部功率"
#define LIGHT_PATH_POWER_NAME "激光功率"
#define PRODUCT_SUFACE_POWER_NAME "有效功率"
//用于查询和保存的recipe 参数名字
#define RECIPE_PAR_NAME_LASER_FRE "RECIPE_PAR_NAME_LASER_FRE"
#define RECIPE_PAR_NAME_LASER2_FRE "RECIPE_PAR_NAME_LASER2_FRE"
#define RECIPE_PAR_NAME_LASER_CURR_1 "RECIPE_PAR_NAME_LASER_CURR_1"
#define RECIPE_PAR_NAME_LASER_CURR_2 "RECIPE_PAR_NAME_LASER_CURR_2"
#define RECIPE_PAR_NAME_LASER_EDI_1 "RECIPE_PAR_NAME_LASER_EDI_1"
#define RECIPE_PAR_NAME_LASER_EDI_2 "RECIPE_PAR_NAME_LASER_EDI_2"
#define RECIPE_PAR_NAME_PRF2_DELAY "RECIPE_PAR_NAME_PRF2_DELAY"
#define RECIPE_PAR_NAME_SCAN_SPEED "RECIPE_PAR_NAME_SCAN_SPEED"
#define RECIPE_PAR_NAME_OVERLAP_RATIO_X "RECIPE_PAR_NAME_OVERLAP_RATIO_X"
#define RECIPE_PAR_NAME_OVERLAP_RATIO_Y "RECIPE_PAR_NAME_OVERLAP_RATIO_Y"
#define RECIPE_PAR_NAME_FOCUS_ADJUST_VAL "RECIPE_PAR_NAME_FOCUS_ADJUST_VAL"
#define RECIPE_PAR_NAME_SCAN_AREA "RECIPE_PAR_NAME_SCAN_AREA"
#define RECIPE_PAR_NAME_AREA_IDX "RECIPE_PAR_NAME_AREA_IDX"
#define RECIPE_PAR_NAME_N2_STATE "RECIPE_PAR_NAME_N2_STATE" //是否开关N2
#define RECIPE_PAR_NAME_OFFSET_TAB "RECIPE_PAR_NAME_OFFSET_TAB" //补偿表
#define RECIPE_PAR_NAME_N2_VAL "RECIPE_PAR_NAME_N2_VAL"//N2流量大小
#define RECIPE_PAR_NAME_USE_CUR_N2VAL "RECIPE_PAR_NAME_USE_CUR_N2VAL"//使用当前Recipe的N2流量值
#define RECIPE_PAR_NAME_LASER1_POW "RECIPE_PAR_NAME_LASER1_POW"
#define RECIPE_PAR_NAME_LASER2_POW "RECIPE_PAR_NAME_LASER2_POW"
#define RECIPE_PAR_NAME_ROTATO_DIMMER_ANG "RECIPE_PAR_NAME_ROTATO_DIMMER_ANG" //旋转衰减器1的角度
#define RECIPE_PAR_NAME_ROTATO_DIMMER_ANG2 "RECIPE_PAR_NAME_ROTATO_DIMMER_ANG2" //旋转衰减器2的角度
#define RECIPE_PAR_NAME_FIX_SCAN_SPEED "RECIPE_PAR_NAME_FIX_SCAN_SPEED"//固定扫描速度
#define RECIPE_PAR_NAME_FIX_SCAN_LINE_GAP "RECIPE_PAR_NAME_FIX_SCAN_LINE_GAP"//固定扫描线间隔
#define RECIPE_PAR_NAME_EDI_CHECK_SCOPE "RECIPE_PAR_NAME_EDI_CHECK_SCOPE"//功率密度卡控精度
#define RECIPE_PAR_NAME_SCAN_LINE_START_IDX "RECIPE_PAR_NAME_SCAN_LINE_START_IDX"//开始扫描线的索引值
#define RECIPE_PAR_NAME_LASER_EDI_OFFSET_1 "RECIPE_PAR_NAME_LASER_EDI_OFFSET_1"
#define RECIPE_PAR_NAME_LASER_EDI_OFFSET_2 "RECIPE_PAR_NAME_LASER_EDI_OFFSET_2"
#define RECIPE_PAR_NAME_ALIGNER_ANG "RECIPE_PAR_NAME_ALIGNER_ANG"//准直角度
#define RECIPE_PAR_NAME_CASSETTE_TIER_COUNT "RECIPE_PAR_NAME_CASSETTE_TIER_COUNT" //料盒层数
#define RECIPE_PAR_NAME_RUNTIMES "RECIPE_PAR_NAME_RUNTIMES" //执行次数
#define LASER_DEVICE_PI_CLOSE_POW_VOL "LASER_DEVICE_PI_CLOSE_POW_VOL"
#define LASER_DEVICE_PI_CLOSE_POW_CURR "LASER_DEVICE_PI_CLOSE_POW_CURR"
#define RECIPE_PAR_MAX_LASER_CURR_1 "RECIPE_PAR_MAX_LASER_CURR_1"
#define RECIPE_PAR_MAX_LASER_CURR_2 "RECIPE_PAR_MAX_LASER_CURR_2"
#define RECIPE_PAR_MAX_LASER_EDI_1 "RECIPE_PAR_MAX_LASER_EDI_1"
#define RECIPE_PAR_MAX_LASER_EDI_2 "RECIPE_PAR_MAX_LASER_EDI_2"
#define RECIPE_PAR_MAX_LASER_FRE "RECIPE_PAR_MAX_LASER_FRE"
#define RECIPE_PAR_MAX_LASER_PULSE_DELAY "RECIPE_PAR_MAX_LASER_PULSE_DELAY"
#define RECIPE_PAR_MIN_FOCUS_ADJUST "RECIPE_PAR_MIN_FOCUS_ADJUST"
#define RECIPE_PAR_MAX_FOCUS_ADJUST "RECIPE_PAR_MAX_FOCUS_ADJUST"
#define RECIPE_PAR_MIN_SCAN_SPEED "RECIPE_PAR_MIN_SCAN_SPEED"
#define RECIPE_PAR_MAX_SCAN_SPEED "RECIPE_PAR_MAX_SCAN_SPEED"
#define RECIPE_PAR_MAX_FIX_SCAN_LINE_GAP "RECIPE_PAR_MAX_FIX_SCAN_LINE_GAP"
#define RECIPE_PAR_MAX_LASER_POW_1 "RECIPE_PAR_MAX_LASER_POW_1"
#define RECIPE_PAR_MAX_LASER_POW_2 "RECIPE_PAR_MAX_LASER_POW_2"
#define RECIPE_PAR_MAX_DIMMER_ANG_1 "RECIPE_PAR_MAX_DIMMER_ANG_1"
#define RECIPE_PAR_MAX_DIMMER_ANG_2 "RECIPE_PAR_MAX_DIMMER_ANG_2"
#define LAIPU_LASER_DATA_PATH _T("E:\\LaipuLaserData")
#define RECIPE_OFFSET_TBL_NULL "Empty"
#define RECIPE_OFFSET_PAR_LASER1_EDI "LASER1_EDI_OFFSET"
#define RECIPE_OFFSET_PAR_LASER2_EDI "LASER2_EDI_OFFSET"
#define RECIPE_OFFSET_PAR_LASER1_CURR "LASER1_CURR_OFFSET"
#define RECIPE_OFFSET_PAR_LASER2_CURR "LASER2_CURR_OFFSET"
#define bOPEN true
#define bCLOSE false
#define THOW_EXCEPTION true //抛出异常
#define COMM_BAUD_RATE_115200 115200 //串口波特率115200
#define COMM_BAUD_RATE_9600 9600 //串口波特率9600
#define ON_TERMINAL 5001
#define BOOL_STR_TRUE "TRUE"
#define BOOL_STR_FALSE "FALSE"
#define BOOL_STR_YES "YES"
#define BOOL_STR_NO "NO"
#define STR_LASER_1 "Laser1"
#define STR_LASER_2 "Laser2"
#define BOOL_STR_ON "ON"
#define BOOL_STR_OFF "OFF"
//鼠标工具的类型
enum MOUSE_TOOL
{
_TOOL_POINT=0,
_TOOL_RECT,
_TOOL_LINE,
_TOOL_PLINE,//多线段
_TOOL_CIRCLE,
_TOOL_MOVE,
_TOOL_MOVE2,//指定基点移动
_TOOL_ROTATO,
_TOOL_COPY,
_TOOL_MEASURE,//测量
_TOOL_ZOOM,//缩放
_TOOL_CUT,//修剪
_TOOL_ADD_NODE,//添加节点
_TOOL_DEL_NODE,//删除节点
_TOOL_BREAK_NODE,//打断节点
_TOOL_MOVE_NODE,//移动节点
_TOOL_TEXT,//文字
_TOOL_BARCODE,//条码
_TOOL_ONE_POINT,//一个点
_TOOL_STRETCH,//拉伸工具
_TOOL_PT_MOVE_TO_CCD,//设置特定用途的点
_TOOL_SET_MARK_PT,//手动指定定位点
_TOOL_LASER_COORD,//设置激光中心位置
};
enum OBJ_TYPE
{
_TYPE_BASE = 0,
_TYPE_PLINE,//多线段1
_TYPE_POINT,//点2
_TYPE_CIRCLE,//圆3
_TYPE_COMPOSITE,//一般组合类型4
_TYPE_TXT,//字符串5
_TYPE_BARCODE,//条码6
_TYPE_STR,//string 7
_TYPE_CHAR,//字符8
_TYPE_ARC,//圆弧
};
enum X_OR_Y
{
_X=0,
_Y,
_XY,
};
enum CATCH_PT_TYPE//抓取点的类型
{
_CATCH_NODE = 0,//结点
_CATCH_INTERSECT,//线段的交点
_CATCH_ORTHO,//正交
_CATCH_CUT_TRACK,//元件切割道交点
};
enum STATUS//鼠标工具的状态值,用于确定每一步做什么事情
{
_STATUS_1 = 0,
_STATUS_2,
_STATUS_3,
_STATUS_4,
_STATUS_5,
_STATUS_6,
_STATUS_END
};
enum OBJ_OP_TYPR
{
_OP_MOVE = 0,
_OP_ROTATO,
_OP_MIRROR,
_OP_STRETCH,//拉伸
_OP_REVERSE,//反转数据点
_OP_SCALE,//按比例缩放
};
inline bool IsDbEqual(double a,double b)
{
if((abs(a-b))<COORD_EPS)
return true;
else
return false;
}
//浮点型的xy 组合,单位毫米
class Dbxy
{
friend bool operator==(const Dbxy &lhs, const Dbxy &rhs);
public:
Dbxy(double _x,double _y):x(_x),y(_y)
{
Reset();
};
Dbxy()
{
x= y =0;
Reset();
};
void Reset()
{
PenNum = -1;//所使用的笔号(切割用)
Cx = Cy = 0;
bArc = false;
bDir = false;//圆弧的方向(区分顺时针和逆时针)
}
bool Equal(Dbxy &pt)
{
if(IsDbEqual(x,pt.x) && IsDbEqual(y,pt.y))
return true;
else
return false;
}
void operator+=(const Dbxy &rhs)
{
(*this).x += rhs.x;
(*this).y += rhs.y;
}
void operator-=(const Dbxy &rhs)
{
(*this).x -= rhs.x;
(*this).y -= rhs.y;
}
public:
double x;
double y;
//作为数据点的时候可以附带一些额外的信息
int PenNum;//所使用的笔号(切割用)
//圆弧信息-------------------
double Cx;
double Cy;
bool bArc;
bool bDir;//圆弧的方向(区分顺时针和逆时针)
};
inline bool operator==(const Dbxy &lhs, const Dbxy &rhs)
{
return (IsDbEqual(lhs.x,rhs.x) && IsDbEqual(lhs.y,rhs.y));
}
//抓取点的类型
class CCatchPoint :public Dbxy
{
public:
CCatchPoint(double _x,double _y,CATCH_PT_TYPE type):Dbxy(_x,_y),m_type(type){};
CCatchPoint()
{
Dbxy::Dbxy();
};
CATCH_PT_TYPE GetType(){return m_type;};
public:
CATCH_PT_TYPE m_type;
};
class DbSize
{
public:
DbSize(double _w,double _h):w(_w),h(_h){};
DbSize()
{
w= h =0;
};
public:
double w;
double h;
};
class IntXY
{
friend bool operator==(const IntXY &lhs, const IntXY &rhs);
public:
IntXY(int _x,int _y):x(_x),y(_y){};
IntXY()
{
x = y =0;
};
public:
int x;
int y;
};
inline bool operator==(const IntXY &lhs, const IntXY &rhs)
{
return (lhs.x == rhs.x && lhs.y == rhs.y);
}
#if 1
class DbRect
{
public:
DbRect(double _L,double _R,double _T,double _B):L(_L),R(_R),T(_T),B(_B){};
DbRect(Dbxy pt1,Dbxy pt2){Creat(pt1,pt2);}
DbRect(Dbxy pt,double size){Creat(pt,size);}//size 是rect 的半径
DbRect(Dbxy pt,DbSize size)//根据中心点和尺寸来创建
{
Creat(pt,size);
};
DbRect(){Reset();};
void Creat(Dbxy pt1,Dbxy pt2);
void Creat(Dbxy pt,double size);
void Creat(Dbxy pt,DbSize size);
void Reset();
bool IsZero();
DbSize GetSize();
Dbxy GetCenterPt();
Dbxy GetBottomCenterPt();
double Width();
double Height();
public:
double L;
double R;
double T;
double B;
};
inline void DbRect::Reset()
{
L= B = 0.1;
R = T = 0;
}
inline void DbRect::Creat(Dbxy pt1,Dbxy pt2)
{
if(pt1.x < pt2.x)
{
L = pt1.x;
R = pt2.x;
}
else
{
L = pt2.x;
R = pt1.x;
}
if(pt2.y<pt1.y)
{
T = pt1.y;
B = pt2.y;
}
else
{
T = pt2.y;
B = pt1.y;
}
}
inline void DbRect::Creat(Dbxy pt,double size)
{
L = pt.x-size;
R = pt.x+size;
T = pt.y+size;
B = pt.y-size;
}
inline void DbRect::Creat(Dbxy pt,DbSize size)
{
L = pt.x-size.w/2;
R = pt.x+size.w/2;
T = pt.y+size.h/2;
B = pt.y-size.h/2;
}
inline bool DbRect::IsZero()
{
if(L<R || B<T)
return false;
else
return true;
}
inline Dbxy DbRect::GetCenterPt()
{
Dbxy pt;
if(L<=R)
{
pt.x = (L+R)/2;
}
if(T>=B)
{
pt.y = (T+B)/2;
}
return pt;
}
inline DbSize DbRect::GetSize()
{
DbSize size;
size.w = R - L;
size.h = T - B;
if(size.w<0)
size.w = 0;
if(size.h<0)
size.h = 0;
return size;
}
//底部中心点
inline Dbxy DbRect::GetBottomCenterPt()
{
Dbxy pt;
pt.x = (L+R)/2;
pt.y = B;
return pt;
}
inline double DbRect::Width()
{
return R-L;
}
inline double DbRect::Height()
{
return T-B;
}
#endif
//封装所有对象操作的参数,便于统一发送格式
struct SObjOperatePar{
SObjOperatePar()
{
MoveX = MoveY = 0;
Angle = 0;
OldSize = NewSize = Diff = 0;
Scale = 1;
}
OBJ_OP_TYPR OpType;//操作类型
X_OR_Y xy;//标识xy 方向
Dbxy BasePt;//基准点
double MoveX;//移动量
double MoveY;
double Angle;//360 度角
double OldSize;
double NewSize;
double Diff;
double Scale;//缩放比例
};
typedef pair<CPoint,bool> PointType;
//创建圆的参数
class CCirclePar
{
public:
CCirclePar(void)
{
Radius = 1;
DEdgeCnt = 32;
bMerge = true;
StartAng = 0;
EndAng = 360;
bReverse = false;
}
public:
Dbxy CenterPt;//圆心
double Radius;//半径
int DEdgeCnt;//边数
bool bMerge;//是否合并
bool bReverse;//是否反向
double StartAng;//起始角度360 度角
double EndAng;//结束角度
};
//状态的类型
enum EModuleStateType
{
_ModuleStateType_OK,//正常
_ModuleStateType_Warning,//警告
_ModuleStateType_ERR,//异常
};
class CDlgItemStr
{
public:
CDlgItemStr(void)
{
m_ID = 0;
};
public:
int m_ID;//编号
CString m_Str;//显示的内容
};
//偏移旋转参数
class COffsetRotatoPar
{
public:
COffsetRotatoPar()
{
Reset();
};
void Reset()
{
m_Offset.x = 0;
m_Offset.y = 0;
m_RotatoAng = 0;//旋转角度(30度角)
m_bValid = false;//是否有效
};
public:
bool m_bValid;//是否有效
Dbxy m_Offset;//偏移量
double m_RotatoAng;//旋转角度(30度角)
};
enum CAlamLightStateType
{
_AlamLightStateType_NULL=0,
_AlamLightStateType_Off,//关闭
_AlamLightStateType_On,//打开
_AlamLightStateType_Flash,//闪烁
};
//警示灯状态
class CAlamLightState
{
public:
CAlamLightState(void)
{
m_LightRedState = _AlamLightStateType_NULL;//红灯状态
m_LightYellowState = _AlamLightStateType_NULL;//黄灯状态
m_LightGreenState = _AlamLightStateType_NULL;//绿灯状态
m_LightAlamState = _AlamLightStateType_NULL;//蜂鸣器状态
};
public:
CAlamLightStateType m_LightRedState;//红灯状态
CAlamLightStateType m_LightYellowState;//黄灯状态
CAlamLightStateType m_LightGreenState;//绿灯状态
CAlamLightStateType m_LightBlueState;//蓝灯状态
CAlamLightStateType m_LightAlamState;//蜂鸣器状态
};
//常用读取的点位信号类型(增加后每个项目工程InitCommReadBitVec 函数要相应增加,否则下标会溢出报错)
//后面的编号是为了快速强制设置用的
enum eCommReadSignalType
{
_ReadSignalType_Null = 0,
_ReadSignalType_MachineGate1,//光闸信号1
_ReadSignalType_MachineGate2,//光闸信号2
_ReadSignalType_PlateVacuum,//平台wafer 真空信号
_ReadSignalType_LaserDimmer1,//衰减器信号1
_ReadSignalType_LaserDimmer2,//衰减器信号2
_ReadSignalType_RedLight,//红灯
_ReadSignalType_AlamState,//蜂鸣器状态
_ReadSignalType_ArmProduct,//机械手产品信号
_ReadSignalType_ArmReady,//机械手准备信号
_ReadSignalType_ArmTrasmitting,//机械手传输信号
_ReadSignalType_LaserPowLock,//激光电源按钮锁定
_ReadSignalType_ThimbleSignal1,//顶针盘信号1
_ReadSignalType_ThimbleSignal2,//顶针盘信号2
_ReadSignalType_ArmAutoState,//机械手自动状态[14]
_ReadSignalType_Smif1Working,//SMIF忙信号1
_ReadSignalType_Smif2Working,//SMIF忙信号1
_ReadSignalType_ArmWorking,//机械手忙信号
_ReadSignalType_Port1MappingEnd,//Port1 mapping完成信号
_ReadSignalType_Port2MappingEnd,//Port2 mapping完成信号
_ReadSignalType_Pod1Signal_1,//料盒1 信号1 [20]
_ReadSignalType_Pod2Signal_1,//料盒2 信号1 [21]
_ReadSignalType_WaferPosAligner,//准直器wafer 信号
_ReadSignalType_WaferPosArm,//机械手wafer 信号1 (load 用arm)
_ReadSignalType_Port1MappingCommit,//Port1 Mapping 确认
_ReadSignalType_Port2MappingCommit,//Port2 Mapping 确认
_ReadSignalType_ArmAutoTransfer,//自动传片测试中
_ReadSignalType_CassetteDoorSignal_1,//料盒门信号1 [27]
_ReadSignalType_CassetteDoorSignal_2,//料盒门信号2 [28]
_ReadSignalType_Pod1Signal_2,//料盒1 信号2 (有的设备有两个Sensor) [29]
_ReadSignalType_Pod2Signal_2,//料盒2 信号2 (有的设备有两个Sensor) [30]
_ReadSignalType_Pod1WaferOutSensor,//料盒1 wafer 溢出传感器[31]
_ReadSignalType_Pod2WaferOutSensor,//料盒2 wafer 溢出传感器[32]
_ReadSignalType_Pod1PushInSignal,//料盒1 进入机台到位信号(有料盒,有wafer 的时候才会ON)
_ReadSignalType_Pod2PushInSignal,//料盒2 进入机台到位信号
_ReadSignalType_Pod1PushOutSignal,//料盒1 退出机台到位信号
_ReadSignalType_Pod2PushOutSignal,//料盒2 退出机台到位信号
_ReadSignalType_WaferPosArm2,//机械手wafer 信号2 (双臂机械手Unload用的arm)
_ReadSignalType_OxygenCheckSignal,//氧气浓度检测信号(On为满足条件<100ppm)
_ReadSignalType_Pod1Signal_3,//料盒1 信号3 (8寸料盒)
_ReadSignalType_Pod2Signal_3,//料盒2信号3 (8寸料盒)
_ReadSignalType_Pod1Signal_4,//料盒1 信号4 (8寸料盒)
_ReadSignalType_Pod2Signal_4,//料盒2信号4 (8寸料盒)
_ReadSignalType_Pod1WaferSensor,//料盒1 wafer 传感器(用来检测料盒中是否有wafer)
_ReadSignalType_Pod2WaferSensor,//料盒2 wafer 传感器(用来检测料盒中是否有wafer)
_ReadSignalType_Pod1WaferAdjustSensor1,////料盒1 wafer 规料传感器1 (用来把wafer 弄整齐)
_ReadSignalType_Pod1WaferAdjustSensor2,////料盒1 wafer 规料传感器2 (用来把wafer 弄整齐)
_ReadSignalType_Pod2WaferAdjustSensor1,////料盒1 wafer 规料传感器1 (用来把wafer 弄整齐)
_ReadSignalType_Pod2WaferAdjustSensor2,////料盒1 wafer 规料传感器2 (用来把wafer 弄整齐)
_ReadSignalType_Max,//最大值
};
enum eLaserDeviceType
{
_LaserDeviceType_MainLaser1=0,//绿光1
_LaserDeviceType_MainLaser2,//绿光2
_LaserDeviceType_RedLaser,//红光
};
//load port 的类型
enum eWaferLoadPortType
{
_LoadPortType_Null = 0,
_LoadPortType_Port1,
_LoadPortType_Port2,
};
//料盒的类型
enum eCassetteType
{
_CassetteType_Slot13 = 0,//13层料盒
_CassetteType_Slot25,//25层料盒
};
//两个点位控制的开关状态
enum eTwoIOPtCtrlState
{
_TwoIOPtCtrlState_Null = 0, //两个点位都没有读到
_TwoIOPtCtrlState_Off,//关闭
_TwoIOPtCtrlState_On,//打开
};