#pragma once #include "CRightPick.h" #include "CLeftPick.h" #include "CDieBond.h" #include "CDispath.h" class __declspec(dllexport) CDieBondFsm { enum FSM { LeftPick_thread = 0, RightPick_thread, DieBond_thread, Dispath_thread, MAX_FSM }; private: CFsmBase* pFsmArray[MAX_FSM]; static std::mutex m_Mutex; static CDieBondFsm* m_pDieBondFsm; static DWORD WINAPI threadRun(LPVOID pThreadPara); bool m_bIsLoopRunting; //正在循环运行中 public: CDieBondFsm(); static LONG GetInstance(CDieBondFsm** pDieBondFsm); bool GetRunting(); void ExitFsm(); void RunFsm(); void StopFsm(); void pause(bool b); #pragma region 状态机对外接口 //无参数通用接口事件 void send_event(DISPATH_STEP_TYPE msg); //设置当前固晶点为最后一颗固晶点 void SetCurrentPointToEnd(); //设置本次自动固晶总数,0为不限制 void Step_SetBondDieTotal(UINT nBondDieTotal); #pragma endregion };