From 65802dfbbaf135e97a2415e3306aabfd2af49c69 Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期四, 05 六月 2025 16:41:04 +0800
Subject: [PATCH] 1.Link Signal数据获取,解释。

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

diff --git a/SourceCode/Bond/Servo/CSlot.cpp b/SourceCode/Bond/Servo/CSlot.cpp
index ed297f2..94299a1 100644
--- a/SourceCode/Bond/Servo/CSlot.cpp
+++ b/SourceCode/Bond/Servo/CSlot.cpp
@@ -10,11 +10,16 @@
 		m_pContext = nullptr;
 		m_bEnable = FALSE;
 		m_bLock = FALSE;
+		m_pContext = nullptr;
+		m_pTempContext = nullptr;
 	}
 
 	CSlot::~CSlot()
 	{
-
+		if (m_pContext != nullptr) {
+			m_pContext->release();
+			m_pContext = nullptr;
+		}
 	}
 
 	BOOL CSlot::isEnable()
@@ -92,36 +97,37 @@
 		return m_pContext == nullptr;
 	}
 
+	void CSlot::setContext(CContext* pContext)
+	{
+		if (m_pContext != nullptr) {
+			m_pContext->release();
+		}
+
+		m_pContext = pContext;
+		if (m_pContext != nullptr) {
+			m_pContext->addRef();
+		}
+	}
+
 	CContext* CSlot::getContext()
 	{
 		return m_pContext;
 	}
 
-	void CSlot::setContext(CContext* pContext)
+	CContext* CSlot::getTempContext()
 	{
-		m_pContext = pContext;
+		return m_pTempContext;
 	}
 
 	void CSlot::serialize(CArchive& ar)
 	{
 		if (ar.IsStoring()) {
-			ar << m_nPosition;
-			ar << m_nNo;
-			ar << (int)m_materialsType;
-			WriteString(ar, m_strName);
 			ar << (__int64)m_pContext;
-			ar << m_bEnable;
 			ar << m_bLock;
 		}
 		else {
-			int i32;
 			__int64 i64;
-			ar >> m_nPosition;
-			ar >> m_nNo;
-			ar >> i32; m_materialsType = (MaterialsType)i32;
-			ReadString(ar, m_strName);
-			ar >> i64; m_pContext = (CContext*)i64;
-			ar >> m_bEnable;
+			ar >> i64; m_pTempContext = (CContext*)i64;
 			ar >> m_bLock;
 		}
 	}

--
Gitblit v1.9.3