From 4eaefee05c987e352dd6d761e601aa450f7f92b4 Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期五, 21 三月 2025 14:41:46 +0800
Subject: [PATCH] 1.添加其它机器并连接,显示连接图;

---
 SourceCode/Bond/Servo/CBonder.cpp |   99 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 98 insertions(+), 1 deletions(-)

diff --git a/SourceCode/Bond/Servo/CBonder.cpp b/SourceCode/Bond/Servo/CBonder.cpp
index 11d90d8..136a15f 100644
--- a/SourceCode/Bond/Servo/CBonder.cpp
+++ b/SourceCode/Bond/Servo/CBonder.cpp
@@ -1,8 +1,9 @@
 #include "stdafx.h"
 #include "CBonder.h"
 
+
 namespace SERVO {
-	CBonder::CBonder()
+	CBonder::CBonder() : CEquipment()
 	{
 
 	}
@@ -28,6 +29,15 @@
 		CEquipment::term();
 	}
 
+	// 必须要实现的虚函数,在此初始化Pin列表
+	void CBonder::initPins()
+	{
+		// 加入Pin初始化代码
+		LOGI("<CBonder>initPins");
+		addPin(SERVO::PinType::INPUT, _T("In"));
+		addPin(SERVO::PinType::OUTPUT, _T("Out"));
+	}
+
 	void CBonder::onTimer(UINT nTimerid)
 	{
 		CEquipment::onTimer(nTimerid);
@@ -37,4 +47,91 @@
 	{
 		CEquipment::serialize(ar);
 	}
+
+	void CBonder::getAttributeVector(CAttributeVector& attrubutes)
+	{
+		__super::getAttributeVector(attrubutes);
+
+		for (auto item : m_inputPins) {
+			attrubutes.addAttribute(new CAttribute(item->getName().c_str(),
+				std::to_string((int)item->getType()).c_str(), ""));
+		}
+
+		for (auto item : m_outputPins) {
+			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(), ""));
+		}
+	}
+
+	int CBonder::recvIntent(CPin* pPin, CIntent* pIntent)
+	{
+		ASSERT(pPin);
+
+		CPin* pFromPin = pPin->getConnectedPin();
+		ASSERT(pFromPin);
+
+		CEquipment* pFromEq = pFromPin->getEquipment();
+		ASSERT(pFromEq);
+
+		LOGI("<CBonder><%s-%s>收到来自<%s.%s>的Intent<%d,%s,0x%x>", 
+			this->getName().c_str(), 
+			pPin->getName().c_str(),
+			pFromEq->getName().c_str(), 
+			pFromPin->getName().c_str(),
+			pIntent->getCode(),
+			pIntent->getMsg(),
+			pIntent->getContext());
+
+
+
+		// 以下解释处理数据
+		int code = pIntent->getCode();
+
+
+		// 测试
+		if (code == FLOW_TEST) {
+			AfxMessageBox(pIntent->getMsg());
+			return FLOW_ACCEPT;
+		}
+
+
+		// 信号
+		if (code == FLOW_SIGNAL) {
+			return FLOW_ACCEPT;
+		}
+
+
+		// 数据
+		if (code == FLOW_SIGNAL) {
+			return FLOW_ACCEPT;
+		}
+
+
+		// 物料
+		if (code == FLOW_MOVE_MATERIAL) {
+			// 如果我这里是空的,可以接受
+			Lock();
+			if (m_panelList.size() < 15) {
+				CPanel* pPanel = (CPanel*)pIntent->getContext();
+				ASSERT(pPanel);
+				pPanel->addRef();
+				m_panelList.push_back(pPanel);
+				Unlock();
+				return FLOW_ACCEPT;
+			}
+			else {
+				Unlock();
+				return FLOW_REJECT;
+			}
+		}
+
+		
+
+		return FLOW_ACCEPT;
+	}
 }

--
Gitblit v1.9.3