From 980d4fc1690b4f8a81dc65e8573d2898f34a406f Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期五, 21 三月 2025 09:49:26 +0800
Subject: [PATCH] 1.加入连接图示

---
 SourceCode/Bond/Servo/CLoadPort.cpp |   41 +++++++++++++++++++++++++++++++++++++----
 1 files changed, 37 insertions(+), 4 deletions(-)

diff --git a/SourceCode/Bond/Servo/CLoadPort.cpp b/SourceCode/Bond/Servo/CLoadPort.cpp
index b455e4f..71169c4 100644
--- a/SourceCode/Bond/Servo/CLoadPort.cpp
+++ b/SourceCode/Bond/Servo/CLoadPort.cpp
@@ -61,15 +61,48 @@
 			attrubutes.addAttribute(new CAttribute(item->getName().c_str(),
 				std::to_string((int)item->getType()).c_str(), ""));
 		}
+
+		for (auto item : m_panelList) {
+			attrubutes.addAttribute(new CAttribute("Panel",
+				item->getID().c_str(), ""));
+		}
 	}
 
 	void CLoadPort::outputPanel()
 	{
 		CPin* pOutPin = getPin("Out");
 
-		CIntent intent;
-		intent.setCode(1);
-		intent.setMsg("Hello");
-		pOutPin->sendIntent(&intent);
+
+		// 如果列表中没有Panel,模拟生成10张
+		if (m_panelList.empty()) {
+			static int ii = 0;
+			char szBuffer[64];
+			LOGI("<CLoadPort>模拟生成10张PANEL");
+			for (int i = 0; i < 10; i++) {
+				sprintf_s(szBuffer, "P20250320A1A%d", ++ii);
+				CPanel* pPanel = new CPanel();
+				pPanel->setID(szBuffer);
+				addPanelToList(pPanel);
+			}
+		}
+
+
+		// 模拟取出第一张Panel,传送到下一环节
+		Lock();
+		CPanel* pContext = m_panelList.front();
+		pContext->addRef();
+
+		CIntent intent(FLOW_MOVE_MATERIAL, "", pContext);
+		int nRet = pOutPin->sendIntent(&intent);
+		if (nRet == FLOW_REJECT) {
+			AfxMessageBox("对方拒绝接受");
+		}
+		else if (nRet == FLOW_ACCEPT) {
+			m_panelList.pop_front();
+			pContext->release();		// 添加到列队时addRef, 取出时release
+		}
+
+		pContext->release();
+		Unlock();
 	}
 }

--
Gitblit v1.9.3