From 6c373f004d79b28c735bbee2bd391bd412270535 Mon Sep 17 00:00:00 2001
From: chenluhua1980 <Chenluhua@qq.com>
Date: 星期五, 09 一月 2026 15:58:51 +0800
Subject: [PATCH] 完成统一 PortStateChange 事件与变量维护

---
 SourceCode/Bond/Servo/Model.cpp |   13 ++++++++++++-
 1 files changed, 12 insertions(+), 1 deletions(-)

diff --git a/SourceCode/Bond/Servo/Model.cpp b/SourceCode/Bond/Servo/Model.cpp
index ad932b1..3f03a3d 100644
--- a/SourceCode/Bond/Servo/Model.cpp
+++ b/SourceCode/Bond/Servo/Model.cpp
@@ -490,8 +490,19 @@
 		const int eqId = (pEquipment != nullptr) ? pEquipment->getID() : 0;
 		const short prevStatus = s_prevPortStatus[eqId];
 		s_prevPortStatus[eqId] = status;
+		SERVO::CLoadPort* pLoadPort = dynamic_cast<SERVO::CLoadPort*>(pEquipment);
+
+		// Unified PortStateChange event + SV maintenance
+		if (pLoadPort != nullptr) {
+			m_hsmsPassive.withVariableLock([&] {
+				m_hsmsPassive.setVariableValue("PortTransferState", (__int64)status); // maintain SVID=100
+				m_hsmsPassive.setVariableValue("PortStateChangePortId", pLoadPort->getID());
+				m_hsmsPassive.setVariableValue("PortState", (__int64)status);
+				m_hsmsPassive.requestEventReportSend("PortStateChange");
+			});
+		}
+
 		if (status == PORT_INUSE) {
-			SERVO::CLoadPort* pLoadPort = dynamic_cast<SERVO::CLoadPort*>(pEquipment);
 			m_hsmsPassive.withVariableLock([&] {
 				if (pLoadPort != nullptr) {
 					m_hsmsPassive.setVariableValue("CarrierID", pLoadPort->getCassetteId().c_str());

--
Gitblit v1.9.3