123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239 |
- #pragma once
- #define C_MACHINE_EXPORTS
- #include "Machine.h"
- #include "CDieBondFsm.h"
- #include "CMessageBox.h"
- #include "dt.h"
- namespace ns_module
- {
- struct ST_BUTTON_FUN
- {
- int nId; // 0~12
- int DirectoryId; // 绑定的ID
- std::string strCallFun; // 执行函数名
- std::map<std::string, std::string> mapPar; // 参数
- };
- struct ST_BUTTON_DONE
- {
- int nId; // 0~12
- int DirectoryId; // 绑定的ID
- std::string strCallFun; // 执行函数名
- LONG lError; //错误Id
- std::string strErrMeassage; //错误描述
- };
- //报警弹框回调函数
- //typedef void(*SendButtonRunDone) (ST_BUTTON_DONE stMsgInfo);
- using SendButtonRunDone = std::function<void(ST_BUTTON_DONE)>;
- // 定义宏,将函数名和对应的 lambda 表达式封装起来
- #define REGISTER_FUNCTION(funcName) { #funcName, [](CRunButton* obj, ns_module::ST_BUTTON_FUN stInfo) { return obj->funcName(stInfo); } }
- class __declspec(dllexport) CRunButton
- {
- public:
- struct THREAD_RUN_BUTTON
- {
- CRunButton* pClass;
- ST_BUTTON_FUN stButtonInfo;
- SendButtonRunDone fun;
- };
- void SetButtonRunDoneFunc(SendButtonRunDone func);
- private:
- static CRunButton* m_instance;
- SendButtonRunDone m_funButtonRunDone = nullptr;
- CManageDB* m_pCManageDB = nullptr;
- Machine* m_pMachine = nullptr;
- CCameraManage* m_pCameraManage = nullptr;
- CBondHead* m_pBondHead = nullptr;
- CWaferTable* m_pWaferTable = nullptr;
- CWaferHead* m_pWaferHead = nullptr;
- CTransferTable* m_pWaferTransferTable = nullptr;
- CTransferTable* m_pWaffleTransferTable = nullptr;
- CResources* m_pResource = nullptr;
- CDieBondFsm* m_pDieBondFsm = nullptr;
- public:
- static HANDLE m_hEvent;
- static CRunButton* GetInstance();
- CRunButton();
- // 创建函数映射表,在主线程中执行
- std::map<std::string, std::function<long(CRunButton*, ns_module::ST_BUTTON_FUN)>> m_mapFunctionByMain = {
- REGISTER_FUNCTION(BH_PickCreateTemplate),
- REGISTER_FUNCTION(BH_BondCreateTemplate),
- REGISTER_FUNCTION(BH_LookUpCreateTemplate),
- REGISTER_FUNCTION(XYCalib_HeadCreateTemplate),
- REGISTER_FUNCTION(XYCalib_LookUpCreateTemplate),
- REGISTER_FUNCTION(XYCalib_WaferCreateTemplate),
- REGISTER_FUNCTION(WaferTable_BondCreateTemplate),
- REGISTER_FUNCTION(LookUpCalib_HeadCameraCreateTemplate),
- REGISTER_FUNCTION(LookUpCalib_LookUpCreateTemplate),
- REGISTER_FUNCTION(LookUpCalib_HeadCreateTemplate),
- REGISTER_FUNCTION(RCalib_HeadCreateTemplate),
- REGISTER_FUNCTION(RCalib_WaferTableCreateTemplate),
- REGISTER_FUNCTION(ShowMotionAdjustPage)
- };
- // 创建函数映射表,在子线程中执行
- std::map<std::string, std::function<long(CRunButton*, ns_module::ST_BUTTON_FUN)>> m_mapFunctionByThread = {
- REGISTER_FUNCTION(MachineToHome),
- REGISTER_FUNCTION(Machine_SaveConfig),
- REGISTER_FUNCTION(UltraHead_XY_Test),
- REGISTER_FUNCTION(Machine_LoadConfig),
- REGISTER_FUNCTION(Machine_Wafer2Transfer),
- REGISTER_FUNCTION(Machine_Waffle2Transfer),
- REGISTER_FUNCTION(Machine_Transfer2BondTable),
- REGISTER_FUNCTION(Machine_SingnedRun),
- REGISTER_FUNCTION(BondHead_AccuracyTest),
- REGISTER_FUNCTION(SaveDB),
- REGISTER_FUNCTION(BH_VacOn),
- REGISTER_FUNCTION(BH_UltralOn),
- REGISTER_FUNCTION(BH_VacOff),
- REGISTER_FUNCTION(BH_Pick),
- REGISTER_FUNCTION(BH_Bond),
- REGISTER_FUNCTION(BH_PickAndBond),
- REGISTER_FUNCTION(BH_ToPickGrabPos),
- REGISTER_FUNCTION(BH_ToLookUpGrabPos),
- REGISTER_FUNCTION(BH_ToBondGrabPos),
- REGISTER_FUNCTION(WaferTransfer_Home),
- REGISTER_FUNCTION(WaferTransfer_ToGetDiePos),
- REGISTER_FUNCTION(WaferTransfer_ToTransferPos),
- REGISTER_FUNCTION(WaferTransfer_VacOn),
- REGISTER_FUNCTION(WaferTransfer_VacOff),
- REGISTER_FUNCTION(WaffleTransfer_Home),
- REGISTER_FUNCTION(WaffleTransfer_ToGetDiePos),
- REGISTER_FUNCTION(WaffleTransfer_ToTransferPos),
- REGISTER_FUNCTION(WaferTable_ToChangeRingPosition),
- REGISTER_FUNCTION(WaferTable_ChangeRingDone),
- REGISTER_FUNCTION(WaferTable_ToPickPos),
- REGISTER_FUNCTION(WaferTable_ToPreDie),
- REGISTER_FUNCTION(WaferTable_ToNextDie),
- REGISTER_FUNCTION(WaferTable_ToDieCenter),
- REGISTER_FUNCTION(WaferHead_Pick),
- REGISTER_FUNCTION(WaferHead_Bond),
- REGISTER_FUNCTION(WaferHead_OpenVac),
- REGISTER_FUNCTION(WaferHead_CloseVac),
- REGISTER_FUNCTION(Ejector_ToSafePos),
- REGISTER_FUNCTION(Ejector_ToWorkPos),
- REGISTER_FUNCTION(XYCalib_LookUpToPos),
- REGISTER_FUNCTION(XYCalib_LookUpCalib),
- REGISTER_FUNCTION(XYCalib_HeadCalib),
- REGISTER_FUNCTION(XYCalib_HeadToPos),
- REGISTER_FUNCTION(BondCameraCalibCheck),
- REGISTER_FUNCTION(LookUpCameraCalibCheck),
- REGISTER_FUNCTION(XYCalib_WaferToPos),
- REGISTER_FUNCTION(XYCalib_WaferCalib),
- REGISTER_FUNCTION(WaferCameraCalibCheck),
- REGISTER_FUNCTION(ForceControl_ToTestPos),
- REGISTER_FUNCTION(ForceControl_ElectricCalib),
- REGISTER_FUNCTION(ForceControl_SpringcCalib),
- REGISTER_FUNCTION(ForceControl_CalculationResults),
- REGISTER_FUNCTION(ForceControl_Test),
- REGISTER_FUNCTION(LookUpCalib_StartCalib),
- REGISTER_FUNCTION(LookUpCalib_ToCalibPos),
- REGISTER_FUNCTION(LookUpCalib_ToHeadCalibPos),
- REGISTER_FUNCTION(LookUpCalib_CalResult),
- REGISTER_FUNCTION(LookUpCalib_HeadToAucPos),
- REGISTER_FUNCTION(LookUpCalib_HeadToCameraPos),
- REGISTER_FUNCTION(LookUpCalib_CameraToHeadPos),
- REGISTER_FUNCTION(RCalib_HeadCalib),
- REGISTER_FUNCTION(RCalib_HeadToPos),
- REGISTER_FUNCTION(RCalib_WaferTableCalib),
- REGISTER_FUNCTION(RCalib_WaferTableToPos),
- };
- // 根据 strCallFun 执行相应的函数
- long ExecuteFunction(ST_BUTTON_FUN stInfo);
- static VOID CALLBACK threadRunButton(PTP_CALLBACK_INSTANCE Instance, PVOID Parameter, PTP_WORK Work);
- long RunButtonByThread(ST_BUTTON_FUN stInfo);
- long BH_PickCreateTemplate(ST_BUTTON_FUN stInfo);
- long BH_BondCreateTemplate(ST_BUTTON_FUN stInfo);
- long BH_LookUpCreateTemplate(ST_BUTTON_FUN stInfo);
- long XYCalib_HeadCreateTemplate(ST_BUTTON_FUN stInfo);
- long XYCalib_LookUpCreateTemplate(ST_BUTTON_FUN stInfo);
- long XYCalib_WaferCreateTemplate(ST_BUTTON_FUN stInfo);
- long WaferTable_BondCreateTemplate(ST_BUTTON_FUN stInfo);
- long LookUpCalib_HeadCameraCreateTemplate(ST_BUTTON_FUN stInfo);
- long LookUpCalib_LookUpCreateTemplate(ST_BUTTON_FUN stInfo);
- long LookUpCalib_HeadCreateTemplate(ST_BUTTON_FUN stInfo);
- long RCalib_HeadCreateTemplate(ST_BUTTON_FUN stInfo);
- long RCalib_WaferTableCreateTemplate(ST_BUTTON_FUN stInfo);
- long ShowMotionAdjustPage(ST_BUTTON_FUN stInfo);
- long MachineToHome(ST_BUTTON_FUN stInfo);
- long Machine_SaveConfig(ST_BUTTON_FUN stInfo);
- long UltraHead_XY_Test(ST_BUTTON_FUN stInfo);
- long Machine_LoadConfig(ST_BUTTON_FUN stInfo);
- long Machine_Wafer2Transfer(ST_BUTTON_FUN stInfo);
- long Machine_Waffle2Transfer(ST_BUTTON_FUN stInfo);
- long Machine_Transfer2BondTable(ST_BUTTON_FUN stInfo);
- long Machine_SingnedRun(ST_BUTTON_FUN stInfo);
- long BondHead_AccuracyTest(ST_BUTTON_FUN stInfo);
- long SaveDB(ST_BUTTON_FUN stInfo);
- long BH_VacOn(ST_BUTTON_FUN stInfo);
- long BH_UltralOn(ST_BUTTON_FUN stInfo);
- long BH_VacOff(ST_BUTTON_FUN stInfo);
- long BH_Pick(ST_BUTTON_FUN stInfo);
- long BH_Bond(ST_BUTTON_FUN stInfo);
- long BH_PickAndBond(ST_BUTTON_FUN stInfo);
- long BH_ToPickGrabPos(ST_BUTTON_FUN stInfo);
- long BH_ToLookUpGrabPos(ST_BUTTON_FUN stInfo);
- long BH_ToBondGrabPos(ST_BUTTON_FUN stInfo);
- long WaferTransfer_Home(ST_BUTTON_FUN stInfo);
- long WaferTransfer_ToGetDiePos(ST_BUTTON_FUN stInfo);
- long WaferTransfer_ToTransferPos(ST_BUTTON_FUN stInfo);
- long WaferTransfer_VacOn(ST_BUTTON_FUN stInfo);
- long WaferTransfer_VacOff(ST_BUTTON_FUN stInfo);
- long WaffleTransfer_Home(ST_BUTTON_FUN stInfo);
- long WaffleTransfer_ToGetDiePos(ST_BUTTON_FUN stInfo);
- long WaffleTransfer_ToTransferPos(ST_BUTTON_FUN stInfo);
- long WaferTable_ToChangeRingPosition(ST_BUTTON_FUN stInfo);
- long WaferTable_ChangeRingDone(ST_BUTTON_FUN stInfo);
- long WaferTable_ToPickPos(ST_BUTTON_FUN stInfo);
- long WaferTable_ToPreDie(ST_BUTTON_FUN stInfo);
- long WaferTable_ToNextDie(ST_BUTTON_FUN stInfo);
- long WaferTable_ToDieCenter(ST_BUTTON_FUN stInfo);
- long WaferHead_Pick(ST_BUTTON_FUN stInfo);
- long WaferHead_Bond(ST_BUTTON_FUN stInfo);
- long WaferHead_OpenVac(ST_BUTTON_FUN stInfo);
- long WaferHead_CloseVac(ST_BUTTON_FUN stInfo);
- long Ejector_ToSafePos(ST_BUTTON_FUN stInfo);
- long Ejector_ToWorkPos(ST_BUTTON_FUN stInfo);
- long XYCalib_LookUpToPos(ST_BUTTON_FUN stInfo);
- long XYCalib_LookUpCalib(ST_BUTTON_FUN stInfo);
- long XYCalib_HeadCalib(ST_BUTTON_FUN stInfo);
- long XYCalib_HeadToPos(ST_BUTTON_FUN stInfo);
- long BondCameraCalibCheck(ST_BUTTON_FUN stInfo);
- long LookUpCameraCalibCheck(ST_BUTTON_FUN stInfo);
- long XYCalib_WaferToPos(ST_BUTTON_FUN stInfo);
- long XYCalib_WaferCalib(ST_BUTTON_FUN stInfo);
- long WaferCameraCalibCheck(ST_BUTTON_FUN stInfo);
- long ForceControl_ToTestPos(ST_BUTTON_FUN stInfo);
- long ForceControl_ElectricCalib(ST_BUTTON_FUN stInfo);
- long ForceControl_SpringcCalib(ST_BUTTON_FUN stInfo);
- long ForceControl_CalculationResults(ST_BUTTON_FUN stInfo);
- long ForceControl_Test(ST_BUTTON_FUN stInfo);
- long LookUpCalib_StartCalib(ST_BUTTON_FUN stInfo);
- long LookUpCalib_ToCalibPos(ST_BUTTON_FUN stInfo);
- long LookUpCalib_ToHeadCalibPos(ST_BUTTON_FUN stInfo);
- long LookUpCalib_CalResult(ST_BUTTON_FUN stInfo);
- long LookUpCalib_HeadToAucPos(ST_BUTTON_FUN stInfo);
- long LookUpCalib_HeadToCameraPos(ST_BUTTON_FUN stInfo);
- long LookUpCalib_CameraToHeadPos(ST_BUTTON_FUN stInfo);
- long RCalib_HeadCalib(ST_BUTTON_FUN stInfo);
- long RCalib_HeadToPos(ST_BUTTON_FUN stInfo);
- long RCalib_WaferTableCalib(ST_BUTTON_FUN stInfo);
- long RCalib_WaferTableToPos(ST_BUTTON_FUN stInfo);
- };
- }
|