From da9df9d46ed3fc50e0c03497bd9f76b8aa1a4595 Mon Sep 17 00:00:00 2001
From: chenluhua1980 <Chenluhua@qq.com>
Date: 星期三, 14 一月 2026 15:37:48 +0800
Subject: [PATCH] 1.修复以下问题: 作业前置条件不足导致 PJ 验证失败:onPRJobMultiCreate 调 CMaster::setProcessJobs,CProcessJob::validate 要求“当前没有其它 PJ”(issue 1000),且 carrierPresent/slotUsable 必须为真。只要本地还有未结批的 PJ/CJ 或载具/槽位状态未就绪(ID 未绑、Slot 未使能),Host 发送的 CreateMultiPJ 会直接被丢弃(返回 size=0),但当前代码没有向 Host 回 ACK/NAK,Host 会误以为创建成功。

---
 SourceCode/Bond/Servo/CEqProcessStep.cpp |   35 +++++++++++++++++++----------------
 1 files changed, 19 insertions(+), 16 deletions(-)

diff --git a/SourceCode/Bond/Servo/CEqProcessStep.cpp b/SourceCode/Bond/Servo/CEqProcessStep.cpp
index e64e92b..b7d4b85 100644
--- a/SourceCode/Bond/Servo/CEqProcessStep.cpp
+++ b/SourceCode/Bond/Servo/CEqProcessStep.cpp
@@ -3,10 +3,11 @@
 #include "CEqProcessStep.h"
 #include "Log.h"
 #include "ToolUnits.h"
+#include "CEquipment.h"
 
 
 namespace SERVO {
-	CEqProcessStep::CEqProcessStep()
+	CEqProcessStep::CEqProcessStep() : CReadStep()
 	{
 		m_nProcessDev = 0;
 		m_nTotalParameter = 0;
@@ -19,34 +20,35 @@
 
 	void CEqProcessStep::getAttributeVector(CAttributeVector& attrubutes)
 	{
-		CStep::getAttributeVector(attrubutes);
+		CReadStep::getAttributeVector(attrubutes);
 
+		unsigned int weight = 31;
 		attrubutes.addAttribute(new CAttribute("Glass ID",
-			m_strGlassId.c_str(), ""));
+			m_strGlassId.c_str(), "", weight++));
 		attrubutes.addAttribute(new CAttribute("Start Time",
-			m_strStartTime.c_str(), ""));
+			m_strStartTime.c_str(), "", weight++));
 		attrubutes.addAttribute(new CAttribute("End Time",
-			m_strEndTime.c_str(), ""));
+			m_strEndTime.c_str(), "", weight++));
 		attrubutes.addAttribute(new CAttribute("Total Parameter",
-			std::to_string(m_nTotalParameter).c_str(), ""));
+			std::to_string(m_nTotalParameter).c_str(), "", weight++));
 		attrubutes.addAttribute(new CAttribute("Total Group",
-			std::to_string(m_nTotalGroup).c_str(), ""));
+			std::to_string(m_nTotalGroup).c_str(), "", weight++));
 		attrubutes.addAttribute(new CAttribute("Current Group",
-			std::to_string(m_nCurrentGroup).c_str(), ""));
+			std::to_string(m_nCurrentGroup).c_str(), "", weight++));
 
 		char szName[256];
 		int index = 0;
 		for (auto item : m_params) {
 			sprintf_s(szName, 256, "Parameter %d", ++index);
 			attrubutes.addAttribute(new CAttribute(szName,
-				item.c_str(), ""));
+				item.c_str(), "", weight++));
 		}
 	}
 
 #define PROGRESS_BUF_SIZE		(1024 + 64)
 	int CEqProcessStep::onReadData()
 	{
-		CStep::onReadData();
+		CReadStep::onReadData();
 
 		// W1864 ~ W1A74, 529个word, 1058 bytes
 		char szBuffer[PROGRESS_BUF_SIZE];
@@ -59,7 +61,7 @@
 		// 解释数据
 		// Glass ID(1864~186D)
 		int index = 0;
-		convertString(&szBuffer[index], (0x186d - 0x1864 + 1) * 2, m_strStartTime);
+		convertString(&szBuffer[index], (0x186d - 0x1864 + 1) * 2, m_strGlassId);
 		index += (0x186d - 0x1864 + 1) * 2;
 
 		// Process Start Time(186e~1875)
@@ -94,8 +96,9 @@
 			index += 20;
 		}
 
-		if (m_nCurrentGroup == m_nTotalGroup && m_listener.onEvent != nullptr) {
-			m_listener.onEvent(this, STEP_EVENT_PROCESS_DATA, nullptr);
+		if (m_nCurrentGroup == m_nTotalGroup) {
+			ASSERT(m_pEquipment);
+			m_pEquipment->onStepEvent(this, STEP_EVENT_PROCESS_DATA);
 		}
 
 
@@ -107,7 +110,7 @@
 
 	int CEqProcessStep::onComplete()
 	{
-		CStep::onComplete();
+		CReadStep::onComplete();
 		LOGI("<CEqProcessStep> onComplete.");
 
 		return 0;
@@ -115,8 +118,8 @@
 
 	int CEqProcessStep::onTimeout()
 	{
-		CStep::onTimeout();
-		LOGI("<CEqProcessStep> onTimeout.");
+		CReadStep::onTimeout();
+		LOGE("<CEqProcessStep> onTimeout.");
 
 		return 0;
 	}

--
Gitblit v1.9.3