From 8294c107676c18538c6e06fe8eab2d209604ac6a Mon Sep 17 00:00:00 2001
From: chenluhua1980 <Chenluhua@qq.com>
Date: 星期一, 19 一月 2026 18:34:06 +0800
Subject: [PATCH] 1.完善和优化界面显示,数据懒加载,等待光标等,修复启动时界面卡的问题。 2.SVData的Push的限制和检查,因发现Glass呆在机器中时,不管机台是否运行都在不停压入数据。

---
 SourceCode/Bond/Servo/CMaster.cpp |  249 +++++++++++++++++++++++++++----------------------
 1 files changed, 138 insertions(+), 111 deletions(-)

diff --git a/SourceCode/Bond/Servo/CMaster.cpp b/SourceCode/Bond/Servo/CMaster.cpp
index 29a89f3..80ce726 100644
--- a/SourceCode/Bond/Servo/CMaster.cpp
+++ b/SourceCode/Bond/Servo/CMaster.cpp
@@ -138,128 +138,147 @@
 
 	int CMaster::init()
 	{
+		const ULONGLONG boot_master_begin = GetTickCount64();
 		LOGI("<Master>姝e湪鍒濆鍖�...");
+		LOGI("[BOOT][MASTER] init begin");
 
 
 		// 	cclink
-		if (m_cclink.Connect(CC_LINK_IE_CONTROL_CHANNEL(1)) != 0) {
+		const ULONGLONG boot_cclink_begin = GetTickCount64();
+		const int cc_ret = m_cclink.Connect(CC_LINK_IE_CONTROL_CHANNEL(1));
+		LOGI("[BOOT][MASTER] CC-Link connect ret=%d, cost=%llu ms",
+			cc_ret,
+			(unsigned long long)(GetTickCount64() - boot_cclink_begin));
+		if (cc_ret != 0) {
 			LOGE("杩炴帴CC-Link澶辫触.");
 		}
 		else {
-			LOGI("杩炴帴CC-Link鎴愬姛.");
-			BoardVersion version{};
-			int nRet = m_cclink.GetBoardVersion(version);
-			if (nRet == 0) {
-				LOGD("鐗堟湰淇℃伅锛�%s.", version.toString().c_str());
-			}
-			else {
-				LOGE("鑾峰彇CC-Link鐗堟湰淇℃伅澶辫触.");
+				LOGI("杩炴帴CC-Link鎴愬姛.");
+				BoardVersion version{};
+				int nRet = m_cclink.GetBoardVersion(version);
+				if (nRet == 0) {
+					LOGD("鐗堟湰淇℃伅锛�%s.", version.toString().c_str());
+				}
+				else {
+					LOGE("鑾峰彇CC-Link鐗堟湰淇℃伅澶辫触.");
+				}
+
+				BoardStatus status;
+				nRet = m_cclink.GetBoardStatus(status);
+				if (nRet == 0) {
+					LOGD("鐘舵�侊細%s.", status.toString().c_str());
+				}
+				else {
+					LOGE("鑾峰彇CC-Link鐘舵�佸け璐�.");
+				}
 			}
 
-			BoardStatus status;
-			nRet = m_cclink.GetBoardStatus(status);
-			if (nRet == 0) {
-				LOGD("鐘舵�侊細%s.", status.toString().c_str());
+
+			// 鍒濆鍖栨坊鍔犲悇瀛愯澶�
+			CLoadPort* pPort1, * pPort2, * pPort3, * pPort4;
+			CBonder* pBonder1, * pBonder2;
+			CEFEM* pEfem;
+			CArm* pArm;
+			CArmTray* pArmTray1, * pArmTray2;
+			CFliper* pFliper;
+			CVacuumBake* pVacuumBake;
+			CAligner* pAligner;
+			CBakeCooling* pBakeCooling;
+			CMeasurement* pMeasurement;
+
+			pPort1 = addLoadPort(0);
+			pPort2 = addLoadPort(1);
+			pPort3 = addLoadPort(2);
+			pPort4 = addLoadPort(3);
+			pEfem = addEFEM();
+			pArm = addArm();
+			pArmTray1 = addArmTray(0);
+			pArmTray2 = addArmTray(1);
+			pFliper = addFliper();
+			pVacuumBake = addVacuumBake();
+			pAligner = addAligner();
+			pBonder1 = addBonder(0);
+			pBonder2 = addBonder(1);
+			pBakeCooling = addBakeCooling();
+			pMeasurement = addMeasurement();
+
+			ASSERT(pEfem);
+			ASSERT(pFliper);
+			ASSERT(pVacuumBake);
+			ASSERT(pAligner);
+			ASSERT(pBonder1);
+			ASSERT(pBonder2);
+			ASSERT(pBakeCooling);
+			ASSERT(pMeasurement);
+
+			pEfem->setPort(0, pPort1);
+			pEfem->setPort(1, pPort2);
+			pEfem->setPort(2, pPort3);
+			pEfem->setPort(3, pPort4);
+			pEfem->setFliper(pFliper);
+			pEfem->setAligner(pAligner);
+			pEfem->setArmTray(0, pArmTray1);
+			pEfem->setArmTray(1, pArmTray2);
+			pPort1->setArm(pArm);
+			pPort2->setArm(pArm);
+			pPort3->setArm(pArm);
+			pPort4->setArm(pArm);
+			pArmTray1->setArm(pArm);
+			pArmTray2->setArm(pArm);
+			pFliper->setArm(pArm);
+			pVacuumBake->setArm(pArm);
+			pAligner->setArm(pArm);
+			pBonder1->setArm(pArm);
+			pBonder2->setArm(pArm);
+			pBakeCooling->setArm(pArm);
+			pMeasurement->setArm(pArm);
+
+			connectEquipments();
+
+
+
+			// 璇荤紦瀛樻暟鎹�
+			const ULONGLONG boot_cache_begin = GetTickCount64();
+			const ULONGLONG boot_read_begin = GetTickCount64();
+			readCache();
+			LOGI("[BOOT][MASTER] readCache finished, cost=%llu ms", (unsigned long long)(GetTickCount64() - boot_read_begin));
+
+			const ULONGLONG boot_state_begin = GetTickCount64();
+			loadState();
+			LOGI("[BOOT][MASTER] loadState finished, cost=%llu ms", (unsigned long long)(GetTickCount64() - boot_state_begin));
+			if (m_listener.onControlJobChanged) {
+				notifyControlJobChanged();
 			}
-			else {
-				LOGE("鑾峰彇CC-Link鐘舵�佸け璐�.");
-			}
+
+			LOGI("[BOOT][MASTER] cache/state loaded, cost=%llu ms (since init %llu ms)",
+				(unsigned long long)(GetTickCount64() - boot_cache_begin),
+				(unsigned long long)(GetTickCount64() - boot_master_begin));
+
+
+			// 瀹氭椂鍣�
+			g_pMaster = this;
+			SetTimer(NULL, 1, 250, (TIMERPROC)MasterTimerProc);
+
+
+			// 璋冨害绾跨▼
+			m_hDispatchThreadHandle = (HANDLE)_beginthreadex(NULL, 0, SERVO::DispatchThreadFunction, this,
+				0, &m_nDispatchThreadAddr);
+
+
+			// 鐩戞帶bit绾跨▼
+			m_hReadBitsThreadHandle = (HANDLE)_beginthreadex(NULL, 0, SERVO::ReadBitsThreadFunction, this,
+				0, &m_nReadBitsThreadAddr);
+
+
+			// 鏇茬嚎鏈嶅姟
+			CreateDAQBridgeServer();
+
+
+			LOGI("<Master>鍒濆鍖栧畬鎴�.");
+			LOGI("[BOOT][MASTER] init finished, total cost=%llu ms",
+				(unsigned long long)(GetTickCount64() - boot_master_begin));
+			return 0;
 		}
-
-
-		// 鍒濆鍖栨坊鍔犲悇瀛愯澶�
-		CLoadPort* pPort1, * pPort2, * pPort3, * pPort4;
-		CBonder* pBonder1, * pBonder2;
-		CEFEM* pEfem;
-		CArm* pArm;
-		CArmTray* pArmTray1, * pArmTray2;
-		CFliper* pFliper;
-		CVacuumBake* pVacuumBake;
-		CAligner* pAligner;
-		CBakeCooling* pBakeCooling;
-		CMeasurement* pMeasurement;
-
-		pPort1 = addLoadPort(0);
-		pPort2 = addLoadPort(1);
-		pPort3 = addLoadPort(2);
-		pPort4 = addLoadPort(3);
-		pEfem = addEFEM();
-		pArm = addArm();
-		pArmTray1 = addArmTray(0);
-		pArmTray2 = addArmTray(1);
-		pFliper = addFliper();
-		pVacuumBake = addVacuumBake();
-		pAligner = addAligner();
-		pBonder1 = addBonder(0);
-		pBonder2 = addBonder(1);
-		pBakeCooling = addBakeCooling();
-		pMeasurement = addMeasurement();
-
-		ASSERT(pEfem);
-		ASSERT(pFliper);
-		ASSERT(pVacuumBake);
-		ASSERT(pAligner);
-		ASSERT(pBonder1);
-		ASSERT(pBonder2);
-		ASSERT(pBakeCooling);
-		ASSERT(pMeasurement);
-
-		pEfem->setPort(0, pPort1);
-		pEfem->setPort(1, pPort2);
-		pEfem->setPort(2, pPort3);
-		pEfem->setPort(3, pPort4);
-		pEfem->setFliper(pFliper);
-		pEfem->setAligner(pAligner);
-		pEfem->setArmTray(0, pArmTray1);
-		pEfem->setArmTray(1, pArmTray2);
-		pPort1->setArm(pArm);
-		pPort2->setArm(pArm);
-		pPort3->setArm(pArm);
-		pPort4->setArm(pArm);
-		pArmTray1->setArm(pArm);
-		pArmTray2->setArm(pArm);
-		pFliper->setArm(pArm);
-		pVacuumBake->setArm(pArm);
-		pAligner->setArm(pArm);
-		pBonder1->setArm(pArm);
-		pBonder2->setArm(pArm);
-		pBakeCooling->setArm(pArm);
-		pMeasurement->setArm(pArm);
-
-		connectEquipments();
-
-
-
-		// 璇荤紦瀛樻暟鎹�
-		readCache();
-		loadState();
-		if (m_listener.onControlJobChanged) {
-			notifyControlJobChanged();
-		}
-
-
-		// 瀹氭椂鍣�
-		g_pMaster = this;
-		SetTimer(NULL, 1, 250, (TIMERPROC)MasterTimerProc);
-
-
-		// 璋冨害绾跨▼
-		m_hDispatchThreadHandle = (HANDLE)_beginthreadex(NULL, 0, SERVO::DispatchThreadFunction, this,
-			0, &m_nDispatchThreadAddr);
-
-
-		// 鐩戞帶bit绾跨▼
-		m_hReadBitsThreadHandle = (HANDLE)_beginthreadex(NULL, 0, SERVO::ReadBitsThreadFunction, this,
-			0, &m_nReadBitsThreadAddr);
-
-
-		// 鏇茬嚎鏈嶅姟
-		CreateDAQBridgeServer();
-
-
-		LOGI("<Master>鍒濆鍖栧畬鎴�.");
-		return 0;
-	}
 
 	int CMaster::term()
 	{
@@ -1675,6 +1694,14 @@
 			}
 		};
 		listener.onSVDataReport = [&](void* pEquipment, void* pData) {
+			const bool allowSvLog =
+				(m_state == MASTERSTATE::RUNNING ||
+					m_state == MASTERSTATE::RUNNING_CONTINUOUS_TRANSFER ||
+					m_state == MASTERSTATE::RUNNING_BATCH ||
+					m_state == MASTERSTATE::STARTING);
+			if (!allowSvLog) {
+				return;
+			}
 			CSVData* pSVData = (CSVData*)pData;
 			auto rawData = pSVData->getSVRawData();
 			std::vector<CParam> params;

--
Gitblit v1.9.3