From fc881732b096f1c5a6dfcb9751c89f0ffca90768 Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期一, 28 四月 2025 14:49:20 +0800
Subject: [PATCH] 1.LoadPort增加 mode, type, cassette type, transfer mode等属性值,并增加对应属性页;

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

diff --git a/SourceCode/Bond/Servo/CLoadPort.cpp b/SourceCode/Bond/Servo/CLoadPort.cpp
index 5b54636..9aab4ad 100644
--- a/SourceCode/Bond/Servo/CLoadPort.cpp
+++ b/SourceCode/Bond/Servo/CLoadPort.cpp
@@ -5,7 +5,12 @@
 namespace SERVO {
 	CLoadPort::CLoadPort() : CEquipment()
 	{
-
+		m_nType = 0;
+		m_nMode = 0;
+		m_nCassetteType = 0;
+		m_nTransferMode = 4;
+		m_bEnable = FALSE;
+		m_bAutoChangeEnable = FALSE;
 	}
 
 	CLoadPort::~CLoadPort()
@@ -52,58 +57,253 @@
 	void CLoadPort::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(), ""));
-		}
 	}
 
-	void CLoadPort::outputPanel()
+	int CLoadPort::recvIntent(CPin* pPin, CIntent* pIntent)
 	{
-		CPin* pOutPin = getPin("Out");
+		return __super::recvIntent(pPin, pIntent);
+	}
 
-
+	int CLoadPort::outputGlass(int port)
+	{
 		// 如果列表中没有Panel,模拟生成10张
-		if (m_panelList.empty()) {
+		if (m_glassList.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);
+				CGlass* pGlass = new CGlass();
+				pGlass->setID(szBuffer);
+				addGlassToList(pGlass);
 			}
 		}
 
+		return __super::outputGlass(port);
+	}
 
-		// 模拟取出第一张Panel,传送到下一环节
+	BOOL CLoadPort::glassWillArrive(CGlass* pGlass)
+	{
+		BOOL bRet = __super::glassWillArrive(pGlass);
+		if (!bRet) {
+			return FALSE;
+		}
+
+		return (m_glassList.size() < 8);
+	}
+
+	int CLoadPort::sendCassetteCtrlCmd(short cmd,
+		short* jobExistence,
+		int jobExistenceSize,
+		short slotProcess,
+		short jopCount,
+		CJobDataA* pJobDataA)
+	{
+		int id = getID();
+		if ( !(id == EQ_ID_LOADPORT1 || id == EQ_ID_LOADPORT2) ) {
+			return -1;
+		}
+
+
+		SERVO::CEqCassetteCtrlCmdStep* pStep = (SERVO::CEqCassetteCtrlCmdStep*)getCassetteCtrlCmdStep();
+		ASSERT(pStep);
+		return pStep->sendCtrlCmd(cmd, jobExistence, jobExistenceSize, slotProcess, jopCount, pJobDataA);
+	}
+
+	CStep* CLoadPort::getCassetteCtrlCmdStep()
+	{
+		CStep* pStep = nullptr;
 		Lock();
-		CPanel* pContext = m_panelList.front();
-		pContext->addRef();
-
-		CIntent intent(FLOW_MOVE_MATERIAL, "", pContext);
-		int nRet = pOutPin->sendIntent(&intent);
-		if (nRet == FLOW_REJECT) {
-			AfxMessageBox("对方拒绝接受");
+		for (auto item : m_mapStep) {
+			if (item.second->getName().find(STEP_EQ_P1_CASSETTE_CTRL_CMD) == 0
+				|| item.second->getName().find(STEP_EQ_P2_CASSETTE_CTRL_CMD) == 0
+				|| item.second->getName().find(STEP_EQ_P3_CASSETTE_CTRL_CMD) == 0
+				|| item.second->getName().find(STEP_EQ_P4_CASSETTE_CTRL_CMD) == 0) {
+				pStep = item.second;
+			}
 		}
-		else if (nRet == FLOW_ACCEPT) {
-			m_panelList.pop_front();
-			pContext->release();		// 添加到列队时addRef, 取出时release
-		}
-
-		pContext->release();
 		Unlock();
+
+		return pStep;
+	}
+
+	BOOL CLoadPort::isEnable()
+	{
+		return m_bEnable;
+	}
+
+	int CLoadPort::getPortType()
+	{
+		return m_nType;
+	}
+
+	int CLoadPort::getPortMode()
+	{
+		return m_nMode;
+	}
+
+	int CLoadPort::getCessetteType()
+	{
+		return m_nCassetteType;
+	}
+
+	int CLoadPort::getTransferMode()
+	{
+		return m_nTransferMode;
+	}
+
+	BOOL CLoadPort::isAutoChange()
+	{
+		return m_bAutoChangeEnable;
+	}
+
+	/*
+	 1: Loading Port
+	 2: Unloading Port
+	 3: Both Port
+	 4: Buffer Port-Buffer Type
+	 5: Buffer Port-Loader in Buffer Type
+	 6: Buffer Port-Un-loader in Buffer Type
+	 7: Unloading Partial Port
+	 */
+	std::string& CLoadPort::getPortTypeDescription(int portType, std::string& strDescription)
+	{
+		switch (portType) {
+		case 1:
+			strDescription = _T("Loading Port");
+			break;
+		case 2:
+			strDescription = _T("Unloading Port");
+			break;
+		case 3:
+			strDescription = _T("Both Port");
+			break;
+		case 4:
+			strDescription = _T("Buffer Port - Buffer Type");
+			break;
+		case 5:
+			strDescription = _T("Buffer Port - Loader in Buffer Type");
+			break;
+		case 6:
+			strDescription = _T("Buffer Port - Un-loader in Buffer Type");
+			break;
+		case 7:
+			strDescription = _T("Unloading Partial Port");
+			break;
+		default:
+			strDescription = _T("");
+			break;
+		}
+
+		return strDescription;
+	}
+
+	/*
+	 0: OutOfService
+	 1: TransferBlocked
+	 2: ReadyToLoad
+	 3: ReadyToUnload
+	 4: InService
+	 5: TransferReady
+	 */
+	std::string& CLoadPort::getPortModeDescription(int portMode, std::string& strDescription)
+	{
+		switch (portMode) {
+		case 0:
+			strDescription = _T("OutOfService");
+			break;
+		case 1:
+			strDescription = _T("TransferBlocked");
+			break;
+		case 2:
+			strDescription = _T("ReadyToLoad");
+			break;
+		case 3:
+			strDescription = _T("ReadyToUnload");
+			break;
+		case 4:
+			strDescription = _T("InService");
+			break;
+		case 5:
+			strDescription = _T("TransferReady");
+			break;
+		default:
+			strDescription = _T("");
+			break;
+		}
+
+		return strDescription;
+	}
+
+	/*
+	 1: G1
+	 2: G2
+	 3: G1&G2
+	 */
+	std::string& CLoadPort::getPortCassetteTypeDescription(int casseteType, std::string& strDescription)
+	{
+		switch (casseteType) {
+		case 1:
+			strDescription = _T("G1");
+			break;
+		case 2:
+			strDescription = _T("G2");
+			break;
+		case 3:
+			strDescription = _T("G1&G2");
+			break;
+		default:
+			strDescription = _T("");
+			break;
+		}
+
+		return strDescription;
+	}
+
+	/*
+	 1: MGV Mode
+	 2: AGV Mode
+	 3: Stocker Inline Mode
+	 */
+	std::string& CLoadPort::getPortTransferModeDescription(int mode, std::string& strDescription)
+	{
+		switch (mode) {
+		case 1:
+			strDescription = _T("MGV Mode");
+			break;
+		case 2:
+			strDescription = _T("AGV Mode");
+			break;
+		case 3:
+			strDescription = _T("Stocker Inline Mode");
+			break;
+		default:
+			strDescription = _T("");
+			break;
+		}
+
+		return strDescription;
+	}
+
+
+	/*
+	 1 : Enable
+	 2 : Disable
+	 */
+	std::string& CLoadPort::getEnableModeDescription(int mode, std::string& strDescription)
+	{
+		switch (mode) {
+		case 1:
+			strDescription = _T("Enable");
+			break;
+		case 2:
+			strDescription = _T("Disable");
+			break;
+		default:
+			strDescription = _T("");
+			break;
+		}
+
+		return strDescription;
 	}
 }

--
Gitblit v1.9.3