#pragma once #include "SystemResources.h" #include "CRightPick.h" #include "CLeftPick.h" #include "CDieBond.h" #include "CStep.h" #include "CEvent.h" class __declspec(dllexport) CDispath : public CFsmBase { private: CLASS_INFO; CRightPick* m_pRightPick; CLeftPick* m_pLeftPick; CDieBond* m_pDieBond; bool m_bIsEndBondPoint = false; //是否为最后一颗固晶点 THREAD_BOND_INFO_STRUCT stBondThread; //固晶线程信息 THREAD_BOND_INFO_STRUCT stLeftThread; //华夫盒侧线程信息 THREAD_BOND_INFO_STRUCT stRightThread; //晶圆台侧线程信息 unsigned int m_nCurrBondDieNum = 1; //当前固晶数量 bool IsBondDone(ATTRIBUTE att); private: void SetCurrBondDieNum(unsigned int iNum); //设置当前固晶数量 void AddCurrBondDieNum(); //前固晶数量加1 //自动固晶完成后的处理函数 void AutoBondDoneHandle(); //固完一个晶片时的处理函数 void BondDoneDispathHandle(); //空闲状态 string Idle(); //校准状态 string Calib(); //编程状态 string Programming() { return ""; }; //诊断状态 string Diagnosis() { return ""; } //自动固晶状态 string AutoBond(); //手动操作状态 string ManualOperation(); void RunStep(DISPATH_STEP_TYPE eStep); public: CDispath(); void SetBondDieTotal(unsigned int iNum); //设置剩余固晶数量 void SetCurrentPointToEnd();//设置当前固晶点为最后一颗固晶点 void set_other_fsm(CLeftPick* pLeftPick, CRightPick* pRightPick, CDieBond* pDieBond); };