From ef6c229b7dd70ef82a068ae198f23bc9a44dfad2 Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期五, 21 三月 2025 15:12:33 +0800
Subject: [PATCH] 1.修复因对齐线未清0导致点击子项自动移动的问题;
---
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