From 0b9fc2437cb49b7977f6e7f01379b97ab557fc73 Mon Sep 17 00:00:00 2001 From: bestlqiang Date: Wed, 28 Apr 2021 17:29:52 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A0=E5=BC=BA=E9=80=9A=E4=BF=A1=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E6=8E=A7=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LaiPuLaser/CommonFlowMgr.cpp | 5 +++-- LaiPuLaser/ServerMgr.cpp | 18 +++++++++++------- LaiPuLaser/ServerMgr.h | 3 ++- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/LaiPuLaser/CommonFlowMgr.cpp b/LaiPuLaser/CommonFlowMgr.cpp index 282b85b..2cd093b 100644 --- a/LaiPuLaser/CommonFlowMgr.cpp +++ b/LaiPuLaser/CommonFlowMgr.cpp @@ -1089,8 +1089,9 @@ bool CCommonFlowMgr::MultipleAreaMark(CProduct &Product, bool bSel) gServer->BroadCast("副机收集数据异常!Exception! "); return false; } - gServer->m_bLogicErr = false; - CString str = "READY"; + gServer->m_bMarkDataReady = true; + + CString str = "READY;OK"; gServer->BroadCast(str); gLogMgr->WriteDebugLog(str); diff --git a/LaiPuLaser/ServerMgr.cpp b/LaiPuLaser/ServerMgr.cpp index 698be60..f105531 100644 --- a/LaiPuLaser/ServerMgr.cpp +++ b/LaiPuLaser/ServerMgr.cpp @@ -116,6 +116,7 @@ void CServerMgr::OnReceive(int nErrorCode) CString RcvStr = (CString)buf; gLogMgr->WriteDebugLog("Receive: " + RcvStr); + if (RcvStr.Find(ACTION_OPENFILE) != -1)//打开文件 { @@ -165,10 +166,12 @@ void CServerMgr::OnReceive(int nErrorCode) if (RcvStr.Find(ACTION_TANSPRODUCTINFO) != -1) //传数据. { - - /* CString str = "EXECMD_OK;"; - Send(str, str.GetLength()); - Receive(&gServer->m_RcvProduct, sizeof(CProduct));*/ + if (gServer->m_bMarkDataReady||gServer->m_bProcessing) + { + gLogMgr->WriteDebugLog("逻辑错误!重复收到仿射数据!"); + return CSocket::OnReceive(nErrorCode); + } + gServer->m_bProcessing = true; gLogMgr->WriteDebugLog(ACTION_TANSPRODUCTINFO + "OK"); if (RcvStr.Find(TRACK_1) != -1) @@ -206,7 +209,7 @@ void CServerMgr::OnReceive(int nErrorCode) gTrackWorkFlow1.MarkProcessExt(); - if (!m_bLogicErr ) + if (gServer->m_bMarkDataReady ) { CString str = "EXECMD_OK;"; Send(str, str.GetLength()); @@ -218,14 +221,15 @@ void CServerMgr::OnReceive(int nErrorCode) if (RcvStr.Find(ACTION_COLLECT) != -1) //收集数据. { - gServer->m_bLogicErr = true; + gServer->m_bProcessing = false; + gServer->m_bMarkDataReady = false; gMarkAreaMgr->CollectOrgWorkData(gProgram_SZ_XL->IsbSelMarkMode(), gServer->m_RcvProduct); gLogMgr->WriteDebugLog(ACTION_COLLECT + "OK"); } if (RcvStr.Find(ACTION_STARTWORK) != -1) //启动加工 { - if (m_bLogicErr) + if (!gServer->m_bMarkDataReady) return CSocket::OnReceive(nErrorCode); int sPos = RcvStr.ReverseFind(';'); diff --git a/LaiPuLaser/ServerMgr.h b/LaiPuLaser/ServerMgr.h index cdf816a..2a0d8ad 100644 --- a/LaiPuLaser/ServerMgr.h +++ b/LaiPuLaser/ServerMgr.h @@ -87,7 +87,8 @@ public: int m_RcvCurTrackIndex; //接收到的当前加工轨道 int m_curAreaDataCnt = 0; //当前加工区域数据量. static vector ServerVec;//服务员的容器 - bool m_bLogicErr = true; + bool m_bMarkDataReady = false; //全图打标数据就绪 + bool m_bProcessing = false; //正在计算全图打标数据 private: virtual void OnAccept(int nErrorCode); virtual void OnClose(int nErrorCode);