CDieBondFsm.h 989 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #pragma once
  2. #include "CRightPick.h"
  3. #include "CLeftPick.h"
  4. #include "CDieBond.h"
  5. #include "CDispath.h"
  6. class __declspec(dllexport) CDieBondFsm
  7. {
  8. enum FSM {
  9. LeftPick_thread = 0,
  10. RightPick_thread,
  11. DieBond_thread,
  12. Dispath_thread,
  13. MAX_FSM
  14. };
  15. private:
  16. CFsmBase* pFsmArray[MAX_FSM];
  17. static std::mutex m_Mutex;
  18. static CDieBondFsm* m_pDieBondFsm;
  19. static DWORD WINAPI threadRun(LPVOID pThreadPara);
  20. bool m_bIsLoopRunting; //正在循环运行中
  21. public:
  22. CDieBondFsm();
  23. static LONG GetInstance(CDieBondFsm** pDieBondFsm);
  24. bool GetRunting();
  25. void ExitFsm();
  26. void RunFsm();
  27. void StopFsm();
  28. void pause(bool b);
  29. #pragma region 状态机对外接口
  30. //无参数通用接口事件
  31. void send_event(DISPATH_STEP_TYPE msg);
  32. //设置当前固晶点为最后一颗固晶点
  33. void SetCurrentPointToEnd();
  34. //设置本次自动固晶总数,0为不限制
  35. void Step_SetBondDieTotal(UINT nBondDieTotal);
  36. #pragma endregion
  37. };