//Step公共数据操作类。单例类,用于保存各Step执行后的数据 #pragma once #pragma warning(disable:4251) #include #include #include #include #include #include #include #include "windows.h" #include "CManageDB.h" using namespace ns_db; using namespace std; typedef enum { WAFER_PICK_CURRENT_INDEX = 1, //晶圆台侧取晶线程当前固晶点id WAFFLE_PICK_CURRENT_INDEX, //晶圆台侧取晶线程当前固晶点id BOND_CURRENT_INDEX, //固晶线程当前固晶点id WAFER_TRANSFER_TABLE_EXIST_DIE, //晶圆台侧中转台是否存在晶片 WAFFLE_TRANSFER_TABLE_EXIST_DIE, //华夫盒侧中转台是否存在晶片 WAFER_TABLE_ALLOW_SEARCH_DIE, //晶圆台允许搜晶 WAFER_TABLE_SEARCH_DIE_DONE, //晶圆台搜晶完成 RIGHT_PICK_HEAD_IN_SAFE_POSITION, //晶圆台侧取晶头处于安全位置 LEFT_PICK_HEAD_IN_SAFE_POSITION, //华夫盒侧取晶头处于安全位置 BOND_HEAD_BY_RIGHT_SAFE, //固晶头相对于右边安全位置 BOND_HEAD_BY_LEFT_SAFE, //固晶头相对于左边安全位置 ENABLE_LOOKUP_GRAB, //是否使能上视拍照补偿 WAFER_NEED_BOND_DIE_NUM, //华夫盒侧取晶头需固晶片数量 WAFFLE_NEED_BOND_DIE_NUM, //晶圆台取晶头侧需固晶片数量 BOND_THREAD_NEED_BOND_DIE_NUM, //固晶头需固晶片数量 WAFER_PICKED_DIE_NUM, //晶圆台已取晶数量 WAFFLE_PICKED_DIE_NUM, //华夫盒已取晶数量 BONDED_DIE_NUM, //已经固晶数量 AUTO_BOND_PCB_TOTAL, //当前自动固晶PCB总数 //WAFER_PCB_PICKED_DIE_NUM, //晶圆台当前PCB已取晶数量 //WAFFLE_PCB_PICKED_DIE_NUM, //华夫盒当前PCB已取晶数量 //PCB_BONDED_DIE_NUM, //当前PCB已经固晶数量 MAX_PARAM_NAME }PARAM_NAME_ID; const map m_mapParamNameIdToString = { { WAFER_PICK_CURRENT_INDEX, "WAFER_PICK_CURRENT_INDEX" }, { WAFFLE_PICK_CURRENT_INDEX, "WAFFLE_PICK_CURRENT_INDEX" }, { BOND_CURRENT_INDEX, "BOND_CURRENT_INDEX" }, { WAFER_TRANSFER_TABLE_EXIST_DIE, "WAFER_TRANSFER_TABLE_EXIST_DIE" }, { WAFFLE_TRANSFER_TABLE_EXIST_DIE, "WAFFLE_TRANSFER_TABLE_EXIST_DIE" }, //{ BOND_THREAD_CURRENT_PT_ATTRIBUTE, "BOND_THREAD_CURRENT_PT_ATTRIBUTE" }, { WAFER_TABLE_ALLOW_SEARCH_DIE, "WAFER_TABLE_ALLOW_SEARCH_DIE" }, { WAFER_TABLE_SEARCH_DIE_DONE, "WAFER_TABLE_SEARCH_DIE_DONE" }, { RIGHT_PICK_HEAD_IN_SAFE_POSITION, "RIGHT_PICK_HEAD_IN_SAFE_POSITION" }, { LEFT_PICK_HEAD_IN_SAFE_POSITION, "LEFT_PICK_HEAD_IN_SAFE_POSITION" }, { BOND_HEAD_BY_RIGHT_SAFE, "BOND_HEAD_BY_RIGHT_SAFE" }, { BOND_HEAD_BY_LEFT_SAFE, "BOND_HEAD_BY_LEFT_SAFE" }, { ENABLE_LOOKUP_GRAB, "ENABLE_LOOKUP_GRAB" }, { WAFER_NEED_BOND_DIE_NUM, "WAFER_NEED_BOND_DIE_NUM" }, { WAFFLE_NEED_BOND_DIE_NUM, "WAFFLE_NEED_BOND_DIE_NUM" }, { BOND_THREAD_NEED_BOND_DIE_NUM, "BOND_THREAD_NEED_BOND_DIE_NUM" }, {WAFER_PICKED_DIE_NUM,"WAFER_PICKED_DIE_NUM"}, {WAFFLE_PICKED_DIE_NUM,"WAFFLE_PICKED_DIE_NUM"}, {BONDED_DIE_NUM,"BONDED_DIE_NUM"}, { AUTO_BOND_PCB_TOTAL, "AUTO_BOND_PCB_TOTAL" } }; #define SET_STEP_STATUS CStaticStepData::GetInstance()->SetStatus #define WAIT_STEP_STATUS CStaticStepData::GetInstance()->WaitStatus class __declspec(dllexport) CStaticStepData { #define STEP_PUBLIC_TABLE_NAME "StepPublicData" private: //初始化成功标志 bool m_bIsInitSuccess; vector m_mapStepPublicData; static CStaticStepData* m_pInstance; static std::mutex m_SaveDataMutex; CProduct* m_pCProduct; CStaticStepData(); public: static CStaticStepData* GetInstance(); //保存Step共公数据 long SetStepPublicData(PARAM_NAME_ID id, string value); //读取Step共公数据 long GetStepPublicData(PARAM_NAME_ID id, string& value); //保存Step共公数据 long SetStepPublicData(PARAM_NAME_ID id, bool value); //读取Step共公数据 long GetStepPublicData(PARAM_NAME_ID id, bool& value); //保存Step共公数据 long SetStepPublicData(PARAM_NAME_ID id, int value); //读取Step共公数据 long GetStepPublicData(PARAM_NAME_ID id, int& value); //保存Step共公数据 long SetStepPublicData(PARAM_NAME_ID id, unsigned int value); //读取Step共公数据 long GetStepPublicData(PARAM_NAME_ID id, unsigned int& value); //保存Step共公数据 long SetStepPublicData(PARAM_NAME_ID id, long value); //读取Step共公数据 long GetStepPublicData(PARAM_NAME_ID id, long& value); //保存Step共公数据 long SetStepPublicData(PARAM_NAME_ID id, double value); //读取Step共公数据 long GetStepPublicData(PARAM_NAME_ID id, double& value); //保存Step共公数据到数据库 long StepPublicDataMapToDataBase(); //从数据库中加载Step共公数据 long StepPublicDataDataBaseToMap(); bool IsInitSuccess(); //是否初始化成功 //设置Step执行过程中状态 LONG SetStatus(PARAM_NAME_ID id, bool bStatus); //等待状态 LONG WaitStatus(PARAM_NAME_ID id, bool bStatus); };