From 03dc81df7fe0ea0e754abcc5af3d329527428853 Mon Sep 17 00:00:00 2001
From: chenluhua1980 <Chenluhua@qq.com>
Date: 星期五, 09 一月 2026 20:06:45 +0800
Subject: [PATCH] 1.工节数据上报。

---
 SourceCode/Bond/Servo/CMaster.cpp |   21 +++++++++++++++------
 1 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/SourceCode/Bond/Servo/CMaster.cpp b/SourceCode/Bond/Servo/CMaster.cpp
index f27a523..f179421 100644
--- a/SourceCode/Bond/Servo/CMaster.cpp
+++ b/SourceCode/Bond/Servo/CMaster.cpp
@@ -1540,7 +1540,7 @@
 				unlock();
 			}
 		};
-		listener.onProcessStateChanged = [&](void* pEquipment, int slotNo, PROCESS_STATE state) -> void {
+		listener.onProcessStateChanged = [&](void* pEquipment, int slotNo, PROCESS_STATE prevState, PROCESS_STATE state) -> void {
 			ASSERT(1 <= slotNo && slotNo <= 8);
 			int eqid = ((CEquipment*)pEquipment)->getID();
 			CGlass* pGlass = ((CEquipment*)pEquipment)->getGlassFromSlot(slotNo);
@@ -1558,7 +1558,12 @@
 			}
 
 			if (m_listener.onProcessStateChanged != nullptr) {
-				m_listener.onProcessStateChanged(this, (CEquipment*)pEquipment, slotNo, state);
+				m_listener.onProcessStateChanged(this, (CEquipment*)pEquipment, slotNo, prevState, state);
+			}
+		};
+		listener.onProcessDataReport = [&](void* pEquipment, const std::vector<CParam>& params) {
+			if (m_listener.onProcessDataReport != nullptr) {
+				m_listener.onProcessDataReport(this, (CEquipment*)pEquipment, params);
 			}
 		};
 		listener.onMapMismatch = [&](void* pEquipment, short scanMap, short downMap) {
@@ -2082,8 +2087,8 @@
 				static bool inited = false;
 				static SERVO::CGlass simGlass;
 				static SERVO::CVcrEventReport simVcr;
-				static SERVO::CProcessJob simPj("SIM_PJ_001");
-				static SERVO::CControlJob simCj("SIM_CJ_001");
+				static SERVO::CProcessJob simPj("PJ1001");
+				static SERVO::CControlJob simCj("CJ5007");
 
 				if (!inited) {
 					inited = true;
@@ -2115,8 +2120,9 @@
 					}
 				};
 				auto fireProcessState = [&](SERVO::CEquipment* pEq, int slotNo, SERVO::PROCESS_STATE st) {
-					if (m_listener.onProcessStateChanged != nullptr && pEq != nullptr) {
-						m_listener.onProcessStateChanged(this, pEq, slotNo, st);
+					// Drive equipment state so listeners receive prev/current states consistently.
+					if (pEq != nullptr) {
+						pEq->fireSetProcessState(slotNo, st);
 					}
 				};
 
@@ -2814,6 +2820,9 @@
 
 
 		this->saveState();
+		if (m_listener.onControlJobChanged) {
+			m_listener.onControlJobChanged(this);
+		}
 
 		return (int)m_processJobs.size();
 	}

--
Gitblit v1.9.3