diff --git a/LaiPuLaser/LaiPuLaser/CommonFlowMgr.cpp b/LaiPuLaser/LaiPuLaser/CommonFlowMgr.cpp index 4ab8d98..7e0c549 100644 --- a/LaiPuLaser/LaiPuLaser/CommonFlowMgr.cpp +++ b/LaiPuLaser/LaiPuLaser/CommonFlowMgr.cpp @@ -126,6 +126,7 @@ CCommonFlowMgr::CCommonFlowMgr(void) m_bIniPlatACSAlramIOCtrl = true; m_bIsManusal_Anneal_Test = false; m_bCheckAutoDoorSign=true;//工艺中打开门是否暂停流程 + m_WaferAnnealCreateSign = false; } CCommonFlowMgr::~CCommonFlowMgr(void) { @@ -3360,6 +3361,9 @@ void CCommonFlowMgr::StartWaferAnnealFlowThread() LogInfo.m_ClassName = "CCommonFlowMgr"; LogInfo.m_FuncName = "StartWaferAnnealFlowThread"; gLogMgr->WriteLogInfo(LogInfo); + + //记录当前退火线程启动情况,严重禁止屏蔽 + m_WaferAnnealCreateSign = true; AfxBeginThread(WaferAnnealFlowThread,this); } @@ -3477,6 +3481,14 @@ void CCommonFlowMgr::WaferAnnealFlow(CWafer *pWafer,bool bWaitThread,int Progres //创建退火过程结束后的cmd CreatAnnealFinishCmd(WorkCmdInvoker,pWafer); } + //该指令必须在执行最后一个,且不能取消 + { + CWorkCmdExcuteAction *pCmd = new CWorkCmdExcuteAction(); + pCmd->SetExcuteAction(_ExcuteAction_SetWaferAnnealCreateSign); + pCmd->SetBoolParVal(FALSE); + pCmd->CanNotCancel();//不能取消 + WorkCmdInvoker.AddCmd(pCmd); + } //执行指令 WorkCmdInvoker.ExcuteCmd(true,bWaitThread); diff --git a/LaiPuLaser/LaiPuLaser/CommonFlowMgr.h b/LaiPuLaser/LaiPuLaser/CommonFlowMgr.h index 3ba7e06..14d2607 100644 --- a/LaiPuLaser/LaiPuLaser/CommonFlowMgr.h +++ b/LaiPuLaser/LaiPuLaser/CommonFlowMgr.h @@ -208,6 +208,9 @@ public: bool IsCheckAutoDoorSign() { return m_bCheckAutoDoorSign; }; void SetJobStopType(eJobStopType StopType) { m_CurJobStopType = StopType; }; eJobStopType GetJobStopType() { return m_CurJobStopType; }; + + bool IsWaferAnnealCreateSign() { return m_WaferAnnealCreateSign; }; + void SetWaferAnnealCreateSign(bool bState) { m_WaferAnnealCreateSign = bState; }; private: void CreatSubRecipeAnnealPrepareCmd(CWorkCmdInvoker &CmdInvoker,CWafer *pWafer,int SubRecipeIdx); void CreatAnnealPrepareCmd(CWorkCmdInvoker &CmdInvoker,CWafer *pWafer); @@ -288,6 +291,8 @@ private: bool m_bIsManusal_Anneal_Test;//是否为手动退火测试 eJobStopType m_CurJobStopType;//当前Job停止类型 + + bool m_WaferAnnealCreateSign;//当前退火标志 }; extern CCommonFlowMgr *gCommonFlowMgr; diff --git a/LaiPuLaser/LaiPuLaser/TransferArmMgr.cpp b/LaiPuLaser/LaiPuLaser/TransferArmMgr.cpp index 445c637..20ee53d 100644 --- a/LaiPuLaser/LaiPuLaser/TransferArmMgr.cpp +++ b/LaiPuLaser/LaiPuLaser/TransferArmMgr.cpp @@ -1897,7 +1897,7 @@ void CTransferArmMgr::WaferTransfer_WaitAnnealProccess(CWafer &Wafer) CWorkCmdInvoker &WorkCmdInvoker = gCmdInvoker_WaferAneal; while(1) { - if(!WorkCmdInvoker.IsbExcuting()) + if(!WorkCmdInvoker.IsbExcuting() && !gCommonFlowMgr->IsWaferAnnealCreateSign()) { break; } diff --git a/LaiPuLaser/LaiPuLaser/WorkCmdExcuteAction.cpp b/LaiPuLaser/LaiPuLaser/WorkCmdExcuteAction.cpp index 4ce8afa..1d5e8ca 100644 --- a/LaiPuLaser/LaiPuLaser/WorkCmdExcuteAction.cpp +++ b/LaiPuLaser/LaiPuLaser/WorkCmdExcuteAction.cpp @@ -483,6 +483,11 @@ bool CWorkCmdExcuteAction::Excute() case _ExcuteAction_WaferMonitoringEnd: gAnnealMonitoringMgr->WaferMonitoringEnd(*pWafer); break; + case _ExcuteAction_SetWaferAnnealCreateSign: + { + gCommonFlowMgr->SetWaferAnnealCreateSign(m_ExcuteActionPar.m_BoolParVal); + } + break; case _ExcuteAction_SetAnnealPercent: gProgramLaserTuiHuo->SetCurAnnealPercent(m_ExcuteActionPar.m_DoubleParVal); break; diff --git a/LaiPuLaser/LaiPuLaser/WorkCmdExcuteAction.h b/LaiPuLaser/LaiPuLaser/WorkCmdExcuteAction.h index 0c0aece..9be24b0 100644 --- a/LaiPuLaser/LaiPuLaser/WorkCmdExcuteAction.h +++ b/LaiPuLaser/LaiPuLaser/WorkCmdExcuteAction.h @@ -90,6 +90,7 @@ enum ExcuteAction //数据监控相关 _ExcuteAction_WaferMonitoringStart,//Wafer 退火记录开始 _ExcuteAction_WaferMonitoringEnd,//Wafer 退火记录结束 + _ExcuteAction_SetWaferAnnealCreateSign,//Wafer退火结束标志 _ExcuteAction_CheckRecipeEdiOnAnnealStart,//检查激光功率密度是否满足recipe 的条件(退火开始前) _ExcuteAction_StartMonitoringOnAnnealProcess,//启动退火过程中监控