From c0d56e6ac7ec15e232fb38c457eefc89cf80e9da Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期三, 21 五月 2025 16:02:09 +0800
Subject: [PATCH] 1.Port Command功能实现;

---
 SourceCode/Bond/Servo/CLoadPort.cpp |  111 +++++++++++++++++++++++++++++++++++++
 SourceCode/Bond/Servo/Common.h      |   51 ++++++++++++++++
 2 files changed, 160 insertions(+), 2 deletions(-)

diff --git a/SourceCode/Bond/Servo/CLoadPort.cpp b/SourceCode/Bond/Servo/CLoadPort.cpp
index 0771f18..c7c6040 100644
--- a/SourceCode/Bond/Servo/CLoadPort.cpp
+++ b/SourceCode/Bond/Servo/CLoadPort.cpp
@@ -205,6 +205,96 @@
 		}
 
 		{
+			// port command
+			// Port Type Change Command
+			static char* pszName[] = { STEP_PORT1_TYPE_CHANGE, STEP_PORT2_TYPE_CHANGE, STEP_PORT3_TYPE_CHANGE, STEP_PORT4_TYPE_CHANGE };
+			static int dev[] = { 0x024, 0x02c, 0x034, 0x03c };
+
+			CEqWriteStep* pStep = new CEqWriteStep();
+			pStep->setName(pszName[m_nIndex]);
+			pStep->setWriteSignalDev(0x100 + m_nIndex);
+			pStep->setDataDev(dev[m_nIndex]);
+			if (addStep(STEP_ID_PROT1_TYPE_CHANGE_REPLY + m_nIndex, pStep) != 0) {
+				delete pStep;
+			}
+		}
+
+		{
+			// port command
+			// Port Mode Change Command
+			static char* pszName[] = { STEP_PORT1_MODE_CHANGE, STEP_PORT2_MODE_CHANGE, STEP_PORT3_MODE_CHANGE, STEP_PORT4_MODE_CHANGE };
+			static int dev[] = { 0x025, 0x02d, 0x035, 0x03d };
+
+			CEqWriteStep* pStep = new CEqWriteStep();
+			pStep->setName(pszName[m_nIndex]);
+			pStep->setWriteSignalDev(0x108 + m_nIndex);
+			pStep->setDataDev(dev[m_nIndex]);
+			if (addStep(STEP_ID_PROT1_MODE_CHANGE_REPLY + m_nIndex, pStep) != 0) {
+				delete pStep;
+			}
+		}
+
+		{
+			// port command
+			// Port Transfer Mode Change Command
+			static char* pszName[] = { STEP_PORT1_TRANSFER_MODE_CHANGE, STEP_PORT2_TRANSFER_MODE_CHANGE, STEP_PORT3_TRANSFER_MODE_CHANGE, STEP_PORT4_TRANSFER_MODE_CHANGE };
+			static int dev[] = { 0x028, 0x030, 0x038, 0x040 };
+
+			CEqWriteStep* pStep = new CEqWriteStep();
+			pStep->setName(pszName[m_nIndex]);
+			pStep->setWriteSignalDev(0x110 + m_nIndex);
+			pStep->setDataDev(dev[m_nIndex]);
+			if (addStep(STEP_ID_PROT1_TRANSFER_MODE_CHANGE_REPLY + m_nIndex, pStep) != 0) {
+				delete pStep;
+			}
+		}
+
+		{
+			// port command
+			// Port Enable Mode Change Command
+			static char* pszName[] = { STEP_PORT1_ENABLE_MODE_CHANGE, STEP_PORT2_ENABLE_MODE_CHANGE, STEP_PORT3_ENABLE_MODE_CHANGE, STEP_PORT4_ENABLE_MODE_CHANGE };
+			static int dev[] = { 0x029, 0x031, 0x039, 0x041 };
+
+			CEqWriteStep* pStep = new CEqWriteStep();
+			pStep->setName(pszName[m_nIndex]);
+			pStep->setWriteSignalDev(0x118 + m_nIndex);
+			pStep->setDataDev(dev[m_nIndex]);
+			if (addStep(STEP_ID_PROT1_ENABLE_MODE_CHANGE_REPLY + m_nIndex, pStep) != 0) {
+				delete pStep;
+			}
+		}
+
+		{
+			// port command
+			// Port Type Auto Change Command
+			static char* pszName[] = { STEP_PORT1_TYPE_AUTO_CHANGE, STEP_PORT2_TYPE_AUTO_CHANGE, STEP_PORT3_TYPE_AUTO_CHANGE, STEP_PORT4_TYPE_AUTO_CHANGE };
+			static int dev[] = { 0x02A, 0x032, 0x03A, 0x042 };
+
+			CEqWriteStep* pStep = new CEqWriteStep();
+			pStep->setName(pszName[m_nIndex]);
+			pStep->setWriteSignalDev(0x120 + m_nIndex);
+			pStep->setDataDev(dev[m_nIndex]);
+			if (addStep(STEP_ID_PROT1_TYPE_AUTO_CHANGE_REPLY + m_nIndex, pStep) != 0) {
+				delete pStep;
+			}
+		}
+
+		{
+			// port command
+			// Port Cassette Type Change Command
+			static char* pszName[] = { STEP_PORT1_CASSETTE_TYPE_CHANGE, STEP_PORT2_CASSETTE_TYPE_CHANGE, STEP_PORT3_CASSETTE_TYPE_CHANGE, STEP_PORT4_CASSETTE_TYPE_CHANGE };
+			static int dev[] = { 0x026, 0x02E, 0x036, 0x03E };
+
+			CEqWriteStep* pStep = new CEqWriteStep();
+			pStep->setName(pszName[m_nIndex]);
+			pStep->setWriteSignalDev(0x128 + m_nIndex);
+			pStep->setDataDev(dev[m_nIndex]);
+			if (addStep(STEP_ID_PROT1_TYPE_AUTO_CHANGE_REPLY + m_nIndex, pStep) != 0) {
+				delete pStep;
+			}
+		}
+
+		{
 			char* pszName[6][4] = { 
 				{STEP_EQ_PORT1_EMPTY, STEP_EQ_PORT2_EMPTY, STEP_EQ_PORT3_EMPTY, STEP_EQ_PORT4_EMPTY},
 				{STEP_EQ_PORT1_LOAD_EADY, STEP_EQ_PORT2_LOAD_EADY, STEP_EQ_PORT3_LOAD_EADY, STEP_EQ_PORT4_LOAD_EADY},
@@ -547,6 +637,27 @@
 		CHECK_READ_STEP_SIGNAL2(transferMode[m_nIndex], pszData, size);
 		CHECK_READ_STEP_SIGNAL2(enable[m_nIndex], pszData, size);
 		CHECK_READ_STEP_SIGNAL2(autoType[m_nIndex], pszData, size);
+
+
+		static int typeReply[] = { STEP_ID_PROT1_TYPE_CHANGE_REPLY, STEP_ID_PROT2_TYPE_CHANGE_REPLY,
+			STEP_ID_PROT3_TYPE_CHANGE_REPLY, STEP_ID_PROT4_TYPE_CHANGE_REPLY };
+		static int modeReply[] = { STEP_ID_PROT1_MODE_CHANGE_REPLY, STEP_ID_PROT2_MODE_CHANGE_REPLY,
+			STEP_ID_PROT3_MODE_CHANGE_REPLY, STEP_ID_PROT4_MODE_CHANGE_REPLY };
+		static int transferModeReply[] = { STEP_ID_PROT1_TRANSFER_MODE_CHANGE_REPLY, STEP_ID_PROT2_TRANSFER_MODE_CHANGE_REPLY,
+			STEP_ID_PROT3_TRANSFER_MODE_CHANGE_REPLY, STEP_ID_PROT4_TRANSFER_MODE_CHANGE_REPLY };
+		static int enableModeReply[] = { STEP_ID_PROT1_ENABLE_MODE_CHANGE_REPLY, STEP_ID_PROT2_ENABLE_MODE_CHANGE_REPLY,
+			STEP_ID_PROT3_ENABLE_MODE_CHANGE_REPLY, STEP_ID_PROT4_ENABLE_MODE_CHANGE_REPLY };
+		static int typeAutoReply[] = { STEP_ID_PROT1_TYPE_AUTO_CHANGE_REPLY, STEP_ID_PROT2_TYPE_AUTO_CHANGE_REPLY,
+			STEP_ID_PROT3_TYPE_AUTO_CHANGE_REPLY, STEP_ID_PROT4_TYPE_AUTO_CHANGE_REPLY };
+		static int cassetteTypeReply[] = { STEP_ID_PROT1_CASSETTE_TYPE_CHANGE_REPLY, STEP_ID_PROT2_CASSETTE_TYPE_CHANGE_REPLY,
+			STEP_ID_PROT3_CASSETTE_TYPE_CHANGE_REPLY, STEP_ID_PROT4_CASSETTE_TYPE_CHANGE_REPLY };
+
+		CHECK_READ_STEP_SIGNAL2(typeReply[m_nIndex], pszData, size);
+		CHECK_READ_STEP_SIGNAL2(modeReply[m_nIndex], pszData, size);
+		CHECK_READ_STEP_SIGNAL2(transferModeReply[m_nIndex], pszData, size);
+		CHECK_READ_STEP_SIGNAL2(enableModeReply[m_nIndex], pszData, size);
+		CHECK_READ_STEP_SIGNAL2(typeAutoReply[m_nIndex], pszData, size);
+		CHECK_READ_STEP_SIGNAL2(cassetteTypeReply[m_nIndex], pszData, size);
 	}
 
 	int CLoadPort::decodePortStatusReport(CStep* pStep, const char* pszData, size_t size)
diff --git a/SourceCode/Bond/Servo/Common.h b/SourceCode/Bond/Servo/Common.h
index 3ddf79a..e723756 100644
--- a/SourceCode/Bond/Servo/Common.h
+++ b/SourceCode/Bond/Servo/Common.h
@@ -211,7 +211,30 @@
 #define STEP_EQ_DISPATCHINT_MODE_CHANGE	_T("EQDispatchingModeChangeCommand")
 #define STEP_EFEM_ROBOT_CMD				_T("EFEMRobotCmd")
 #define STEP_EFEM_IN_OP_MODE_CHANGE		_T("EFEMIndexerOperationModeChangeCommand")
-
+#define STEP_PORT1_TYPE_CHANGE			_T("Port1TypeChange")
+#define STEP_PORT2_TYPE_CHANGE			_T("Port2TypeChange")
+#define STEP_PORT3_TYPE_CHANGE			_T("Port3TypeChange")
+#define STEP_PORT4_TYPE_CHANGE			_T("Port4TypeChange")
+#define STEP_PORT1_MODE_CHANGE			_T("Port1ModeChange")
+#define STEP_PORT2_MODE_CHANGE			_T("Port2ModeChange")
+#define STEP_PORT3_MODE_CHANGE			_T("Port3ModeChange")
+#define STEP_PORT4_MODE_CHANGE			_T("Port4ModeChange")
+#define STEP_PORT1_TRANSFER_MODE_CHANGE	_T("Port1TransferModeChange")
+#define STEP_PORT2_TRANSFER_MODE_CHANGE	_T("Port2TransferModeChange")
+#define STEP_PORT3_TRANSFER_MODE_CHANGE	_T("Port3TransferModeChange")
+#define STEP_PORT4_TRANSFER_MODE_CHANGE	_T("Port4TransferModeChange")
+#define STEP_PORT1_ENABLE_MODE_CHANGE	_T("Port1EnableModeChange")
+#define STEP_PORT2_ENABLE_MODE_CHANGE	_T("Port2EnableModeChange")
+#define STEP_PORT3_ENABLE_MODE_CHANGE	_T("Port3EnableModeChange")
+#define STEP_PORT4_ENABLE_MODE_CHANGE	_T("Port4EnableModeChange")
+#define STEP_PORT1_TYPE_AUTO_CHANGE		_T("Port1TypeAutoChange")
+#define STEP_PORT2_TYPE_AUTO_CHANGE		_T("Port2TypeAutoChange")
+#define STEP_PORT3_TYPE_AUTO_CHANGE		_T("Port3TypeAutoChange")
+#define STEP_PORT4_TYPE_AUTO_CHANGE		_T("Port4TypeAutoChange")
+#define STEP_PORT1_CASSETTE_TYPE_CHANGE	_T("Port1CassetteTypeChange")
+#define STEP_PORT2_CASSETTE_TYPE_CHANGE	_T("Port2CassetteTypeChange")
+#define STEP_PORT3_CASSETTE_TYPE_CHANGE	_T("Port3CassetteTypeChange")
+#define STEP_PORT4_CASSETTE_TYPE_CHANGE	_T("Port4CassetteTypeChange")
 
 
 /* Step ID */
@@ -334,7 +357,31 @@
 #define STEP_ID_PORT4_INUSE						0x653
 #define STEP_ID_PORT4_UNLOAD_READY				0x65b
 #define STEP_ID_PORT4_BLOCKED					0x663
-#define STEP_ID_ROBOT_CMD_REPLY					0x6b0
+#define STEP_ID_PROT1_TYPE_CHANGE_REPLY			0x670
+#define STEP_ID_PROT2_TYPE_CHANGE_REPLY			0x671
+#define STEP_ID_PROT3_TYPE_CHANGE_REPLY			0x672
+#define STEP_ID_PROT4_TYPE_CHANGE_REPLY			0x673
+#define STEP_ID_PROT1_MODE_CHANGE_REPLY			0x678
+#define STEP_ID_PROT2_MODE_CHANGE_REPLY			0x679
+#define STEP_ID_PROT3_MODE_CHANGE_REPLY			0x67A
+#define STEP_ID_PROT4_MODE_CHANGE_REPLY			0x67B
+#define STEP_ID_PROT1_TRANSFER_MODE_CHANGE_REPLY	0x680
+#define STEP_ID_PROT2_TRANSFER_MODE_CHANGE_REPLY	0x681
+#define STEP_ID_PROT3_TRANSFER_MODE_CHANGE_REPLY	0x682
+#define STEP_ID_PROT4_TRANSFER_MODE_CHANGE_REPLY	0x683
+#define STEP_ID_PROT1_ENABLE_MODE_CHANGE_REPLY		0x688
+#define STEP_ID_PROT2_ENABLE_MODE_CHANGE_REPLY		0x689
+#define STEP_ID_PROT3_ENABLE_MODE_CHANGE_REPLY		0x68A
+#define STEP_ID_PROT4_ENABLE_MODE_CHANGE_REPLY		0x68B
+#define STEP_ID_PROT1_TYPE_AUTO_CHANGE_REPLY		0x690
+#define STEP_ID_PROT2_TYPE_AUTO_CHANGE_REPLY		0x691
+#define STEP_ID_PROT3_TYPE_AUTO_CHANGE_REPLY		0x692
+#define STEP_ID_PROT4_TYPE_AUTO_CHANGE_REPLY		0x693
+#define STEP_ID_PROT1_CASSETTE_TYPE_CHANGE_REPLY	0x698
+#define STEP_ID_PROT2_CASSETTE_TYPE_CHANGE_REPLY	0x699
+#define STEP_ID_PROT3_CASSETTE_TYPE_CHANGE_REPLY	0x69A
+#define STEP_ID_PROT4_CASSETTE_TYPE_CHANGE_REPLY	0x69B
+#define STEP_ID_ROBOT_CMD_REPLY						0x6b0
 
 
 

--
Gitblit v1.9.3