From 4017478e3a31eb88adc1317364f1310d46e26089 Mon Sep 17 00:00:00 2001 From: bestlqiang Date: Wed, 28 Apr 2021 10:27:09 +0800 Subject: [PATCH] =?UTF-8?q?=E5=89=AF=E6=9C=BA=E5=88=87=E5=89=B2=E6=97=B6?= =?UTF-8?q?=E6=8A=A5=E6=95=B0=E6=8D=AE=E5=BC=82=E5=B8=B8.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LaiPuLaser/CommonFlowMgr.cpp | 8 +++++++- LaiPuLaser/Product.cpp | 5 ++++- LaiPuLaser/Program_SZ_XL_TrackWorkFlow.cpp | 11 +++++------ LaiPuLaser/Program_SZ_XL_TrackWorkFlow.h | 3 ++- LaiPuLaser/ServerMgr.cpp | 16 +++++++++++++++- LaiPuLaser/ServerMgr.h | 1 + 6 files changed, 34 insertions(+), 10 deletions(-) diff --git a/LaiPuLaser/CommonFlowMgr.cpp b/LaiPuLaser/CommonFlowMgr.cpp index b9a03a2..282b85b 100644 --- a/LaiPuLaser/CommonFlowMgr.cpp +++ b/LaiPuLaser/CommonFlowMgr.cpp @@ -1078,6 +1078,7 @@ bool CCommonFlowMgr::MultipleAreaMark(CProduct &Product, bool bSel) gLogMgr->WriteDebugLog("Fuc---->MultipleAreaMa/rk : bSel = " + Bool2Str(bSel)); //搜集加工数据(这里比较耗费时间) + try { gMarkAreaMgr->CollectWorkData(bSel, Product); @@ -1088,7 +1089,12 @@ bool CCommonFlowMgr::MultipleAreaMark(CProduct &Product, bool bSel) gServer->BroadCast("副机收集数据异常!Exception! "); return false; } - + gServer->m_bLogicErr = false; + CString str = "READY"; + gServer->BroadCast(str); + gLogMgr->WriteDebugLog(str); + + if (!gMarkAreaMgr->HasWorkData()) return false; diff --git a/LaiPuLaser/Product.cpp b/LaiPuLaser/Product.cpp index 006dd2b..1459d9f 100644 --- a/LaiPuLaser/Product.cpp +++ b/LaiPuLaser/Product.cpp @@ -474,7 +474,10 @@ void CProduct::TheoryDataToRealData(vector &vec, Dbxy &AreaCenter, Dbxy Cu if (abs(iter->x)>DataRange||abs(iter->y)>DataRange) { CExceptionMsg msg; - msg.SetMsg(CString("标刻数据异常,超出校准范围!")); + CString str; + str.Format("x=%.4f y=%.4f \r\n其中偏移调整: dx=%.4f,dy=%.4f", iter->x, iter->y,CutAdjust.x,CutAdjust.y); + msg.SetMsg(CString("标刻数据异常,超出校准范围!\r\n")+str); + throw msg; } diff --git a/LaiPuLaser/Program_SZ_XL_TrackWorkFlow.cpp b/LaiPuLaser/Program_SZ_XL_TrackWorkFlow.cpp index d729fa0..7cf7172 100644 --- a/LaiPuLaser/Program_SZ_XL_TrackWorkFlow.cpp +++ b/LaiPuLaser/Program_SZ_XL_TrackWorkFlow.cpp @@ -146,7 +146,9 @@ void CTrackWorkFlow::ExecuteCurStep() CatchMark();//抓取定位 break;*/ case _ETrack_Step_Catch_mark_End://等待加工 + { MarkProcess();//计算,收集加工数据(服务端) + } break; /*case _ETrack_Step_Mark_End://加工完成 ThrowEdge();//去边框 @@ -811,15 +813,12 @@ void CTrackWorkFlow::MarkProcess() gWorkTime.StartRecordTime();//计时开始 //设置当前的工作步骤 - SetCurTrackWorkStep(_ETrack_Step_Marking); + //SetCurTrackWorkStep(_ETrack_Step_Marking); //XY 组切换 MarkProcessExt(); - CString str = "READY"; - gServer->BroadCast(str); - gLogMgr->WriteDebugLog(str); - + //设置当前的工作步骤 - SetCurTrackWorkStep(_ETrack_Step_Marking); + //SetCurTrackWorkStep(_ETrack_Step_Marking); //数据移动回默认的位置 /* gProgramCutMgr->MoveObjData(Dbxy(0, 0)); gMarkAreaMgr->MoveAllAreaToTargetPt(Dbxy(0, 0));*/ diff --git a/LaiPuLaser/Program_SZ_XL_TrackWorkFlow.h b/LaiPuLaser/Program_SZ_XL_TrackWorkFlow.h index 1ffeb82..da28b47 100644 --- a/LaiPuLaser/Program_SZ_XL_TrackWorkFlow.h +++ b/LaiPuLaser/Program_SZ_XL_TrackWorkFlow.h @@ -87,8 +87,9 @@ private: void MoveToWaitPos(); void MoveToPos(ETrackWorkStep WorkStep); void MarkProcess(); +public: bool MarkProcessExt(); - +private: void ReadPlcMsgExt(); void AnalyzeRecvCmd(char *buf,int len); void ThrowEdge(); diff --git a/LaiPuLaser/ServerMgr.cpp b/LaiPuLaser/ServerMgr.cpp index edfe668..698be60 100644 --- a/LaiPuLaser/ServerMgr.cpp +++ b/LaiPuLaser/ServerMgr.cpp @@ -202,18 +202,32 @@ void CServerMgr::OnReceive(int nErrorCode) gServer->m_RcvProduct.m_p11 = dvec[4]; gServer->m_RcvProduct.m_p12 = dvec[5]; + //gTrackWorkFlow1.SetCurTrackWorkStep(_ETrack_Step_Catch_mark_End); + + gTrackWorkFlow1.MarkProcessExt(); - gTrackWorkFlow1.SetCurTrackWorkStep(_ETrack_Step_Catch_mark_End); + if (!m_bLogicErr ) + { + CString str = "EXECMD_OK;"; + Send(str, str.GetLength()); + gLogMgr->WriteDebugLog("Send: " + str); + } + return CSocket::OnReceive(nErrorCode); + } if (RcvStr.Find(ACTION_COLLECT) != -1) //收集数据. { + gServer->m_bLogicErr = true; gMarkAreaMgr->CollectOrgWorkData(gProgram_SZ_XL->IsbSelMarkMode(), gServer->m_RcvProduct); gLogMgr->WriteDebugLog(ACTION_COLLECT + "OK"); } if (RcvStr.Find(ACTION_STARTWORK) != -1) //启动加工 { + if (m_bLogicErr) + return CSocket::OnReceive(nErrorCode); + int sPos = RcvStr.ReverseFind(';'); int ePos = RcvStr.GetLength(); CString Index = RcvStr.Mid(sPos + 1, ePos - sPos - 1); diff --git a/LaiPuLaser/ServerMgr.h b/LaiPuLaser/ServerMgr.h index 6a1c999..cdf816a 100644 --- a/LaiPuLaser/ServerMgr.h +++ b/LaiPuLaser/ServerMgr.h @@ -87,6 +87,7 @@ public: int m_RcvCurTrackIndex; //接收到的当前加工轨道 int m_curAreaDataCnt = 0; //当前加工区域数据量. static vector ServerVec;//服务员的容器 + bool m_bLogicErr = true; private: virtual void OnAccept(int nErrorCode); virtual void OnClose(int nErrorCode);