From 3426d4e0ee09c61ce379cfd1fe9a6e82de346d90 Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期二, 29 四月 2025 10:58:51 +0800
Subject: [PATCH] 1.增加CEqCurrentRecipeChangeStep

---
 SourceCode/Bond/Servo/Servo.vcxproj                  |    2 
 SourceCode/Bond/Servo/Servo.vcxproj.filters          |    2 
 SourceCode/Bond/Servo/CEqCurrentRecipeChangeStep.h   |   29 +++++++++
 SourceCode/Bond/Servo/CEqCurrentRecipeChangeStep.cpp |   86 ++++++++++++++++++++++++++++
 SourceCode/Bond/Servo/CMaster.cpp                    |   19 ++++++
 SourceCode/Bond/Servo/CEquipment.h                   |    1 
 SourceCode/Bond/Servo/Common.h                       |    2 
 7 files changed, 140 insertions(+), 1 deletions(-)

diff --git a/SourceCode/Bond/Servo/CEqCurrentRecipeChangeStep.cpp b/SourceCode/Bond/Servo/CEqCurrentRecipeChangeStep.cpp
new file mode 100644
index 0000000..37a7abe
--- /dev/null
+++ b/SourceCode/Bond/Servo/CEqCurrentRecipeChangeStep.cpp
@@ -0,0 +1,86 @@
+#include "stdafx.h"
+#include "CEqCurrentRecipeChangeStep.h"
+#include "Log.h"
+#include "ToolUnits.h"
+
+
+namespace SERVO {
+	CEqCurrentRecipeChangeStep::CEqCurrentRecipeChangeStep() : CReadStep()
+	{
+		m_nDataDev = 0;
+	}
+
+	CEqCurrentRecipeChangeStep::~CEqCurrentRecipeChangeStep()
+	{
+
+	}
+
+	void CEqCurrentRecipeChangeStep::setDataDev(int nDev)
+	{
+		m_nDataDev = nDev;
+	}
+
+	void CEqCurrentRecipeChangeStep::getAttributeVector(CAttributeVector& attrubutes)
+	{
+		CReadStep::getAttributeVector(attrubutes);
+
+		attrubutes.addAttribute(new CAttribute("UnitNo",
+			std::to_string(m_nUnitNo).c_str(), ""));
+		attrubutes.addAttribute(new CAttribute("CurrentMasterRecipeId",
+			std::to_string(m_nCurrentMasterRecipeId).c_str(), ""));
+		attrubutes.addAttribute(new CAttribute("LocalRecipeId",
+			std::to_string(m_nLocalRecipeId).c_str(), ""));
+	}
+
+	int CEqCurrentRecipeChangeStep::onReadData()
+	{
+		CReadStep::onReadData();
+
+		char szBuffer[64];
+		int nRet = m_pCclink->ReadData2(m_station, DeviceType::W,
+			m_nDataDev, 6, szBuffer);
+		if (0 != nRet) {
+			return -1;
+		}
+
+		m_nUnitNo = (unsigned int)CToolUnits::toInt16(&szBuffer[0]);
+		m_nCurrentMasterRecipeId = (unsigned int)CToolUnits::toInt16(&szBuffer[2]);
+		m_nLocalRecipeId = (unsigned int)CToolUnits::toInt16(&szBuffer[4]);
+
+		LOGI("<CEqCurrentRecipeChangeStep> Current Recipe Changed<UnitNo:%d, CurrentMasterRecipeId:%d, LocalRecipeId:%d>\n",
+			m_nUnitNo, m_nCurrentMasterRecipeId, m_nLocalRecipeId);
+
+		return 0;
+	}
+
+	int CEqCurrentRecipeChangeStep::onComplete()
+	{
+		CReadStep::onComplete();
+		LOGI("<CEqCurrentRecipeChangeStep> onComplete.");
+
+		return 0;
+	}
+
+	int CEqCurrentRecipeChangeStep::onTimeout()
+	{
+		CReadStep::onTimeout();
+		LOGI("<CEqCurrentRecipeChangeStep> onTimeout.");
+
+		return 0;
+	}
+
+	int CEqCurrentRecipeChangeStep::getUnitNo()
+	{
+		return m_nUnitNo;
+	}
+
+	int CEqCurrentRecipeChangeStep::getCurrentMasterRecipeId()
+	{
+		return m_nCurrentMasterRecipeId;
+	}
+
+	int CEqCurrentRecipeChangeStep::getLocalRecipeId()
+	{
+		return m_nLocalRecipeId;
+	}
+}
diff --git a/SourceCode/Bond/Servo/CEqCurrentRecipeChangeStep.h b/SourceCode/Bond/Servo/CEqCurrentRecipeChangeStep.h
new file mode 100644
index 0000000..7e05701
--- /dev/null
+++ b/SourceCode/Bond/Servo/CEqCurrentRecipeChangeStep.h
@@ -0,0 +1,29 @@
+#pragma once
+#include "CReadStep.h"
+
+
+namespace SERVO {
+	class CEqCurrentRecipeChangeStep : public CReadStep
+	{
+	public:
+		CEqCurrentRecipeChangeStep();
+		~CEqCurrentRecipeChangeStep();
+
+	public:
+		virtual void getAttributeVector(CAttributeVector& attrubutes);
+		virtual int onReadData();
+		virtual int onComplete();
+		virtual int onTimeout();
+		void setDataDev(int nDev);
+		int getUnitNo();
+		int getCurrentMasterRecipeId();
+		int getLocalRecipeId();
+
+	private:
+		int m_nDataDev;
+		int m_nUnitNo;
+		int m_nCurrentMasterRecipeId;
+		int m_nLocalRecipeId;
+	};
+}
+
diff --git a/SourceCode/Bond/Servo/CEquipment.h b/SourceCode/Bond/Servo/CEquipment.h
index c4a9ab5..ba1416f 100644
--- a/SourceCode/Bond/Servo/CEquipment.h
+++ b/SourceCode/Bond/Servo/CEquipment.h
@@ -19,6 +19,7 @@
 #include "CEqCassetteCtrlCmdStep.h"
 #include "CEqJobEventStep.h"
 #include "CEqVcrEventStep.h"
+#include "CEqCurrentRecipeChangeStep.h"
 #include <vector>
 #include <map>
 #include <list>
diff --git a/SourceCode/Bond/Servo/CMaster.cpp b/SourceCode/Bond/Servo/CMaster.cpp
index e38b2b2..d663e6f 100644
--- a/SourceCode/Bond/Servo/CMaster.cpp
+++ b/SourceCode/Bond/Servo/CMaster.cpp
@@ -587,7 +587,15 @@
 				delete pStep;
 			}
 		}
-
+		{
+			CEqCurrentRecipeChangeStep* pStep = new CEqCurrentRecipeChangeStep();
+			pStep->setName(STEP_EQ_RURRENT_RECIPE_CHANGE);
+			pStep->setWriteSignalDev(0x48);
+			pStep->setDataDev(0x6850);
+			if (pEquipment->addStep(STEP_ID_CURRENT_RECIPE_CHANGE_REPORT, pStep) != 0) {
+				delete pStep;
+			}
+		}
 
 		// CEqCassetteTranserStateStep
 		ADD_EQ_CASSETTE_TRANSFER_STATE_STEP(STEP_EQ_P1_CASSETTE_EMPTY, 0xd8, 
@@ -754,6 +762,15 @@
 			}
 		}
 		{
+			CEqCurrentRecipeChangeStep* pStep = new CEqCurrentRecipeChangeStep();
+			pStep->setName(STEP_EQ_RURRENT_RECIPE_CHANGE);
+			pStep->setWriteSignalDev(index == 0 ? 0x348 : 0x648);
+			pStep->setDataDev(index == 0 ? 0xa850 : 0xe850);
+			if (pEquipment->addStep(STEP_ID_CURRENT_RECIPE_CHANGE_REPORT, pStep) != 0) {
+				delete pStep;
+			}
+		}
+		{
 			// CIM Message Confirm
 			CEqReadIntStep* pStep = new CEqReadIntStep(__INT32, index == 0 ? 0x9d80 : 0xdd80);
 			pStep->setName(STEP_EQ_CIM_MESSAGE_CONFIRM);
diff --git a/SourceCode/Bond/Servo/Common.h b/SourceCode/Bond/Servo/Common.h
index c42851a..78351fa 100644
--- a/SourceCode/Bond/Servo/Common.h
+++ b/SourceCode/Bond/Servo/Common.h
@@ -138,6 +138,7 @@
 #define STEP_EQ_SENT_OUT_JOB_DOWNS1		_T("EQJESentOutJobDowns1")
 #define STEP_EQ_SENT_OUT_JOB_DOWNS2		_T("EQJESentOutJobDowns2")
 #define STEP_EQ_VCR1_EVENT_REPORT		_T("EQVcr1EventReport")
+#define STEP_EQ_RURRENT_RECIPE_CHANGE	_T("EQCurrentRecipeChange")
 
 
 /* Step ID */
@@ -155,6 +156,7 @@
 #define STEP_ID_EQALARM4						0x565
 #define STEP_ID_EQALARM5						0x566
 #define STEP_ID_PROCESS_DATA_REPORT				0x567
+#define STEP_ID_CURRENT_RECIPE_CHANGE_REPORT	0x568
 #define STEP_ID_CIM_MSG_CONFIRM_REPORT			0x569
 #define STEP_ID_VCR1_EVENT_REPORT				0x56A
 #define STEP_ID_RECIVE_JOB_UPS1					0x580
diff --git a/SourceCode/Bond/Servo/Servo.vcxproj b/SourceCode/Bond/Servo/Servo.vcxproj
index e94146c..cddacfd 100644
--- a/SourceCode/Bond/Servo/Servo.vcxproj
+++ b/SourceCode/Bond/Servo/Servo.vcxproj
@@ -245,6 +245,7 @@
     <ClInclude Include="CPath.h" />
     <ClInclude Include="CPin.h" />
     <ClInclude Include="CReadStep.h" />
+    <ClInclude Include="CEqCurrentRecipeChangeStep.h" />
     <ClInclude Include="CSample.h" />
     <ClInclude Include="CStep.h" />
     <ClInclude Include="CVacuumBake.h" />
@@ -331,6 +332,7 @@
     <ClCompile Include="CPath.cpp" />
     <ClCompile Include="CPin.cpp" />
     <ClCompile Include="CReadStep.cpp" />
+    <ClCompile Include="CEqCurrentRecipeChangeStep.cpp" />
     <ClCompile Include="CSample.cpp" />
     <ClCompile Include="CStep.cpp" />
     <ClCompile Include="CVacuumBake.cpp" />
diff --git a/SourceCode/Bond/Servo/Servo.vcxproj.filters b/SourceCode/Bond/Servo/Servo.vcxproj.filters
index de28b85..f6f2606 100644
--- a/SourceCode/Bond/Servo/Servo.vcxproj.filters
+++ b/SourceCode/Bond/Servo/Servo.vcxproj.filters
@@ -92,6 +92,7 @@
     <ClCompile Include="CVcrEventReport.cpp" />
     <ClCompile Include="CEqVcrEventStep.cpp" />
     <ClCompile Include="CPagePortProperty.cpp" />
+    <ClCompile Include="CEqCurrentRecipeChangeStep.cpp" />
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="AlarmManager.h" />
@@ -182,6 +183,7 @@
     <ClInclude Include="CVcrEventReport.h" />
     <ClInclude Include="CEqVcrEventStep.h" />
     <ClInclude Include="CPagePortProperty.h" />
+    <ClInclude Include="CEqCurrentRecipeChangeStep.h" />
   </ItemGroup>
   <ItemGroup>
     <ResourceCompile Include="Servo.rc" />

--
Gitblit v1.9.3