From 9fbd7479ce17f76f72cc0e5a675336261ec76472 Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期一, 12 五月 2025 15:39:53 +0800
Subject: [PATCH] 1.使用CEqReadStep替换CEqJobEventStep, 实现ReceivedJob 2.实现SentOutJob
---
SourceCode/Bond/Servo/CPageGraph2.cpp | 2
SourceCode/Bond/Servo/CEqJobEventStep.cpp | 93 -------------
SourceCode/Bond/Servo/CStep.h | 1
SourceCode/Bond/Servo/CJobDataS.h | 2
SourceCode/Bond/Servo/CEquipment.cpp | 64 ++++++++-
SourceCode/Bond/Servo/CEFEM.cpp | 20 +-
SourceCode/Bond/Servo/CJobDataS.cpp | 114 +++++++++++++++-
SourceCode/Bond/Servo/CEFEM.h | 4
SourceCode/Bond/Servo/CEquipment.h | 10 +
SourceCode/Bond/Servo/CBonder.cpp | 50 +++++++
SourceCode/Bond/Servo/CStep.cpp | 9 +
SourceCode/Bond/Servo/Common.h | 30 ++++
12 files changed, 275 insertions(+), 124 deletions(-)
diff --git a/SourceCode/Bond/Servo/CBonder.cpp b/SourceCode/Bond/Servo/CBonder.cpp
index fb29c2e..9d18867 100644
--- a/SourceCode/Bond/Servo/CBonder.cpp
+++ b/SourceCode/Bond/Servo/CBonder.cpp
@@ -235,6 +235,55 @@
}
}
+ // 使用CEqReadStep替换CEqJobEventStep
+ {
+ // Received Job Report Upstream #1~9
+ char szBuffer[256];
+ for (int i = 0; i < 9; i++) {
+ CEqReadStep* pStep = new CEqReadStep((m_nIndex == 0 ? 0x8c90 : 0xcc90) + 320 * i, 320 * 2,
+ [&](void* pFrom, int code, const char* pszData, size_t size) -> int {
+ if (code == ROK && pszData != nullptr && size > 0) {
+ int port = (int)(__int64)((CEqReadStep*)pFrom)->getProp("Port");
+ if (port > 0) {
+ decodeReceivedJobReport((CStep*)pFrom, port, pszData, size);
+ }
+ }
+ return -1;
+ });
+ sprintf_s(szBuffer, "%s%d", STEP_EQ_RECEIVED_JOB_UPSn, i + 1);
+ pStep->setName(szBuffer);
+ pStep->setProp("Port", (void*)(__int64)(i + 1));
+ pStep->setWriteSignalDev((m_nIndex == 0 ? 0x300 : 0x600) + i);
+ if (addStep(STEP_ID_RECIVE_JOB_UPS1 + i, pStep) != 0) {
+ delete pStep;
+ }
+ }
+ }
+ {
+ // Sent Out Job Report Downstream #1~9
+ char szBuffer[256];
+ for (int i = 0; i < 9; i++) {
+ CEqReadStep* pStep = new CEqReadStep((m_nIndex == 0 ? 0x8000 : 0xc000) + 320 * i, 320 * 2,
+ [&](void* pFrom, int code, const char* pszData, size_t size) -> int {
+ if (code == ROK && pszData != nullptr && size > 0) {
+ int port = (int)(__int64)((CEqReadStep*)pFrom)->getProp("Port");
+ if (port > 0) {
+ decodeReceivedJobReport((CStep*)pFrom, port, pszData, size);
+ }
+ }
+ return -1;
+ });
+ sprintf_s(szBuffer, "%s%d", STEP_EQ_SENT_OUT_JOB_DOWNSn, i + 1);
+ pStep->setName(szBuffer);
+ pStep->setProp("Port", (void*)(__int64)(i + 1));
+ pStep->setWriteSignalDev((m_nIndex == 0 ? 0x30a : 0x60a) + i);
+ if (addStep(STEP_ID_SENT_OUT_JOB_DOWNS1 + i, pStep) != 0) {
+ delete pStep;
+ }
+ }
+ }
+
+ /*
{
CEqJobEventStep* pStep = new CEqJobEventStep();
pStep->setName(STEP_EQ_RECEIVED_JOB_UPS1);
@@ -271,6 +320,7 @@
delete pStep;
}
}
+ */
{
// Fetched Out Job Report #1~15
diff --git a/SourceCode/Bond/Servo/CEFEM.cpp b/SourceCode/Bond/Servo/CEFEM.cpp
index 32e9233..6b28e45 100644
--- a/SourceCode/Bond/Servo/CEFEM.cpp
+++ b/SourceCode/Bond/Servo/CEFEM.cpp
@@ -426,37 +426,37 @@
}
}
- int CEFEM::onFetchedOut(int port, const char* pszGlassId)
+ int CEFEM::onFetchedOutJob(int port, const char* pszGlassId)
{
if (port == 1) {
- return m_pPort[0]->fetchedOut(pszGlassId);
+ return m_pPort[0]->fetchedOutJob(pszGlassId);
}
if (port == 2) {
- return m_pPort[1]->fetchedOut(pszGlassId);
+ return m_pPort[1]->fetchedOutJob(pszGlassId);
}
if (port == 3) {
- return m_pPort[2]->fetchedOut(pszGlassId);
+ return m_pPort[2]->fetchedOutJob(pszGlassId);
}
if (port == 4) {
- return m_pPort[3]->fetchedOut(pszGlassId);
+ return m_pPort[3]->fetchedOutJob(pszGlassId);
}
if (port == 5) {
- return m_pArmTray[0]->fetchedOut(pszGlassId);
+ return m_pArmTray[0]->fetchedOutJob(pszGlassId);
}
if (port == 6) {
- return m_pArmTray[1]->fetchedOut(pszGlassId);
+ return m_pArmTray[1]->fetchedOutJob(pszGlassId);
}
if (port == 7) {
- return m_pAligner->fetchedOut(pszGlassId);
+ return m_pAligner->fetchedOutJob(pszGlassId);
}
if (port == 8) {
- return m_pFliper->fetchedOut(pszGlassId);
+ return m_pFliper->fetchedOutJob(pszGlassId);
}
return -1;
}
- int CEFEM::onStore(int port, const char* pszGlassId)
+ int CEFEM::onStoreJob(int port, const char* pszGlassId)
{
if (port == 1) {
return m_pPort[0]->storedJob(pszGlassId);
diff --git a/SourceCode/Bond/Servo/CEFEM.h b/SourceCode/Bond/Servo/CEFEM.h
index 39b89d0..5bc4c0c 100644
--- a/SourceCode/Bond/Servo/CEFEM.h
+++ b/SourceCode/Bond/Servo/CEFEM.h
@@ -27,8 +27,8 @@
virtual int recvIntent(CPin* pPin, CIntent* pIntent);
virtual BOOL glassWillArrive(CGlass* pGlass);
virtual void onReceiveLBData(const char* pszData, size_t size);
- virtual int onFetchedOut(int port, const char* pszGlassId);
- virtual int onStore(int port, const char* pszGlassId);
+ virtual int onFetchedOutJob(int port, const char* pszGlassId);
+ virtual int onStoreJob(int port, const char* pszGlassId);
public:
void setPort(unsigned int index, CLoadPort* pPort);
diff --git a/SourceCode/Bond/Servo/CEqJobEventStep.cpp b/SourceCode/Bond/Servo/CEqJobEventStep.cpp
index 2bdc84a..7a084fe 100644
--- a/SourceCode/Bond/Servo/CEqJobEventStep.cpp
+++ b/SourceCode/Bond/Servo/CEqJobEventStep.cpp
@@ -21,102 +21,11 @@
void CEqJobEventStep::getAttributeVector(CAttributeVector& attrubutes)
{
- CReadStep::getAttributeVector(attrubutes);
-
unsigned int weight = 31;
std::string strTemp;
attrubutes.addAttribute(new CAttribute("Dev",
("W" + CToolUnits::toHexString(m_nJobDataADev, strTemp)).c_str(), "", weight++));
-
- attrubutes.addAttribute(new CAttribute("CassetteSequenceNo",
- std::to_string(m_jobDataS.getCassetteSequenceNo()).c_str(), "", weight++));
-
- attrubutes.addAttribute(new CAttribute("JobSequenceNo",
- std::to_string(m_jobDataS.getJobSequenceNo()).c_str(), "", weight++));
-
- attrubutes.addAttribute(new CAttribute("LotId",
- m_jobDataS.getLotId().c_str(), "", weight++));
-
- attrubutes.addAttribute(new CAttribute("ProductId",
- m_jobDataS.getProductId().c_str(), "", weight++));
-
- attrubutes.addAttribute(new CAttribute("OperationId",
- m_jobDataS.getOperationId().c_str(), "", weight++));
-
- attrubutes.addAttribute(new CAttribute("Glass1Id",
- m_jobDataS.getGlass1Id().c_str(), "", weight++));
-
- attrubutes.addAttribute(new CAttribute("Glass2Id",
- m_jobDataS.getGlass2Id().c_str(), "", weight++));
-
- attrubutes.addAttribute(new CAttribute("JobType",
- std::to_string(m_jobDataS.getJobType()).c_str(), "", weight++));
-
- attrubutes.addAttribute(new CAttribute("MaterialsType",
- std::to_string(m_jobDataS.getMaterialsType()).c_str(), "", weight++));
-
- attrubutes.addAttribute(new CAttribute("ProductType",
- std::to_string(m_jobDataS.getProductType()).c_str(), "", weight++));
-
- attrubutes.addAttribute(new CAttribute("DummyType",
- std::to_string(m_jobDataS.getDummyType()).c_str(), "", weight++));
-
- attrubutes.addAttribute(new CAttribute("SkipFlag",
- std::to_string(m_jobDataS.getSkipFlag()).c_str(), "", weight++));
-
- attrubutes.addAttribute(new CAttribute("ProcessFlag",
- std::to_string(m_jobDataS.getProcessFlag()).c_str(), "", weight++));
-
- attrubutes.addAttribute(new CAttribute("ProcessResonCode",
- std::to_string(m_jobDataS.getProcessResonCode()).c_str(), "", weight++));
-
- attrubutes.addAttribute(new CAttribute("LastGlassFlag",
- std::to_string(m_jobDataS.getLastGlassFlag()).c_str(), "", weight++));
-
- attrubutes.addAttribute(new CAttribute("FirstGlassFlag",
- std::to_string(m_jobDataS.getFirstGlassFlag()).c_str(), "", weight++));
-
- attrubutes.addAttribute(new CAttribute("QTime1",
- std::to_string(m_jobDataS.getQTime(0)).c_str(), "", weight++));
-
- attrubutes.addAttribute(new CAttribute("QTime2",
- std::to_string(m_jobDataS.getQTime(1)).c_str(), "", weight++));
-
- attrubutes.addAttribute(new CAttribute("QTime3",
- std::to_string(m_jobDataS.getQTime(2)).c_str(), "", weight++));
-
- attrubutes.addAttribute(new CAttribute("QTimeOverFlag",
- std::to_string(m_jobDataS.getQTimeOverFlag()).c_str(), "", weight++));
-
- attrubutes.addAttribute(new CAttribute("MasterRecipe",
- std::to_string(m_jobDataS.getMasterRecipe()).c_str(), "", weight++));
-
- attrubutes.addAttribute(new CAttribute("ProductRecipeId",
- m_jobDataS.getProductRecipeId().c_str(), "", weight++));
-
- attrubutes.addAttribute(new CAttribute("PCode",
- m_jobDataS.getPCode().c_str(), "", weight++));
-
- attrubutes.addAttribute(new CAttribute("UseType",
- m_jobDataS.getUseType().c_str(), "", weight++));
-
- attrubutes.addAttribute(new CAttribute("PanelMeasure",
- m_jobDataS.getPanelMeasure().c_str(), "", weight++));
-
- attrubutes.addAttribute(new CAttribute("SlotUnitSelectFlag",
- std::to_string(m_jobDataS.getSlotUnitSelectFlag()).c_str(), "", weight++));
-
- attrubutes.addAttribute(new CAttribute("SourcePortNo",
- std::to_string(m_jobDataS.getSourcePortNo()).c_str(), "", weight++));
-
- attrubutes.addAttribute(new CAttribute("SourceSlotNo",
- std::to_string(m_jobDataS.getSourceSlotNo()).c_str(), "", weight++));
-
- attrubutes.addAttribute(new CAttribute("TargetPortNo",
- std::to_string(m_jobDataS.getTargetPortNo()).c_str(), "", weight++));
-
- attrubutes.addAttribute(new CAttribute("TargetSlotNo",
- std::to_string(m_jobDataS.getTargetSlotNo()).c_str(), "", weight++));
+ m_jobDataS.getAttributeVector(attrubutes, weight);
}
int CEqJobEventStep::onReadData()
diff --git a/SourceCode/Bond/Servo/CEquipment.cpp b/SourceCode/Bond/Servo/CEquipment.cpp
index 0bf4132..3b15620 100644
--- a/SourceCode/Bond/Servo/CEquipment.cpp
+++ b/SourceCode/Bond/Servo/CEquipment.cpp
@@ -822,7 +822,7 @@
return pGlass;
}
- int CEquipment::fetchedOut(const char* pszGlassId)
+ int CEquipment::fetchedOutJob(const char* pszGlassId)
{
if (m_pArm == nullptr) {
return -1;
@@ -1061,6 +1061,56 @@
return m_recipesManager.decodeRecipeParameterReport(pszData, size);
}
+ int CEquipment::decodeReceivedJobReport(CStep* pStep, int port, const char* pszData, size_t size)
+ {
+ CJobDataS jobDataS;
+ int nRet = jobDataS.unserialize(&pszData[0], (int)size);
+ if (nRet < 0) return nRet;
+
+ // 缓存Attribute,用于调试时显示信息
+ unsigned int weight = 201;
+ CAttributeVector attrubutes;
+ jobDataS.getAttributeVector(attrubutes, weight);
+ pStep->addAttributeVector(attrubutes);
+
+
+ onReceivedJob(port, &jobDataS);
+
+ return nRet;
+ }
+
+ int CEquipment::onReceivedJob(int port, CJobDataS* pJobDataS)
+ {
+ LOGI("<CEquipment-%s>onReceivedJob.", m_strName.c_str());
+ // return fetchedOutJob(pszGlassId);
+ return 0;
+ }
+
+ int CEquipment::decodeSentOutJobReport(CStep* pStep, int port, const char* pszData, size_t size)
+ {
+ CJobDataS jobDataS;
+ int nRet = jobDataS.unserialize(&pszData[0], (int)size);
+ if (nRet < 0) return nRet;
+
+ // 缓存Attribute,用于调试时显示信息
+ unsigned int weight = 201;
+ CAttributeVector attrubutes;
+ jobDataS.getAttributeVector(attrubutes, weight);
+ pStep->addAttributeVector(attrubutes);
+
+
+ onReceivedJob(port, &jobDataS);
+
+ return nRet;
+ }
+
+ int CEquipment::onSentOutJob(int port, CJobDataS* pJobDataS)
+ {
+ LOGI("<CEquipment-%s>onSentOutJob.", m_strName.c_str());
+ // return fetchedOutJob(pszGlassId);
+ return 0;
+ }
+
int CEquipment::decodeFetchedOutJobReport(CStep* pStep, int port, const char* pszData, size_t size)
{
int index = 0;
@@ -1098,16 +1148,16 @@
jobDataB.getGlassId().c_str(), "", weight++));
- onFetchedOut(port, jobDataB.getGlassId().c_str());
+ onFetchedOutJob(port, jobDataB.getGlassId().c_str());
return index;
}
- int CEquipment::onFetchedOut(int port, const char* pszGlassId)
+ int CEquipment::onFetchedOutJob(int port, const char* pszGlassId)
{
- LOGI("<CEquipment-%s>onFetchedOut:port:%d|GlassId:%s",
+ LOGI("<CEquipment-%s>onFetchedOutJob:port:%d|GlassId:%s",
m_strName.c_str(), port, pszGlassId);
- return fetchedOut(pszGlassId);
+ return fetchedOutJob(pszGlassId);
}
int CEquipment::decodeStoredJobReport(CStep* pStep, int port, const char* pszData, size_t size)
@@ -1147,12 +1197,12 @@
jobDataB.getGlassId().c_str(), "", weight++));
- onStore(port, jobDataB.getGlassId().c_str());
+ onStoreJob(port, jobDataB.getGlassId().c_str());
return index;
}
- int CEquipment::onStore(int port, const char* pszGlassId)
+ int CEquipment::onStoreJob(int port, const char* pszGlassId)
{
LOGI("<CEquipment-%s>onStore:port:%d|GlassId:%s",
m_strName.c_str(), port, pszGlassId);
diff --git a/SourceCode/Bond/Servo/CEquipment.h b/SourceCode/Bond/Servo/CEquipment.h
index 22a6a52..24eb6ff 100644
--- a/SourceCode/Bond/Servo/CEquipment.h
+++ b/SourceCode/Bond/Servo/CEquipment.h
@@ -116,8 +116,10 @@
virtual BOOL glassWillArrive(CGlass* pGlass);
virtual int outputGlass(int port);
virtual int glassArrived(CGlass* pGlass);
- virtual int onFetchedOut(int port, const char* pszGlassId);
- virtual int onStore(int port, const char* pszGlassId);
+ virtual int onReceivedJob(int port, CJobDataS* pJobDataS);
+ virtual int onSentOutJob(int port, CJobDataS* pJobDataS);
+ virtual int onFetchedOutJob(int port, const char* pszGlassId);
+ virtual int onStoreJob(int port, const char* pszGlassId);
void getGlassList(std::list<CGlass*>& list);
CGlass* getFrontGlass();
BOOL removeClass(CGlass* pGlass);
@@ -148,7 +150,7 @@
int recipeParameterRequest(short masterRecipeId, short localRecipeId, short unitNo);
public:
- int fetchedOut(const char* pszGlassId);
+ int fetchedOutJob(const char* pszGlassId);
int storedJob(const char* pszGlassId);
BOOL isGlassListEmpty();
@@ -171,6 +173,8 @@
void addGlassToList(CGlass* pGlass);
short decodeRecipeListReport(const char* pszData, size_t size);
short decodeRecipeParameterReport(const char* pszData, size_t size);
+ int decodeReceivedJobReport(CStep* pStep, int port, const char* pszData, size_t size);
+ int decodeSentOutJobReport(CStep* pStep, int port, const char* pszData, size_t size);
int decodeFetchedOutJobReport(CStep* pStep, int port, const char* pszData, size_t size);
int decodeStoredJobReport(CStep* pStep, int port, const char* pszData, size_t size);
diff --git a/SourceCode/Bond/Servo/CJobDataS.cpp b/SourceCode/Bond/Servo/CJobDataS.cpp
index 0b2b4f7..54d0689 100644
--- a/SourceCode/Bond/Servo/CJobDataS.cpp
+++ b/SourceCode/Bond/Servo/CJobDataS.cpp
@@ -340,23 +340,23 @@
memcpy(&pszBuffer[index], &m_nJobSequenceNo, sizeof(short));
index += sizeof(short);
- int strLen = min(40, m_strLotId.size());
+ int strLen = min(40, (int)m_strLotId.size());
memcpy(&pszBuffer[index], m_strLotId.c_str(), strLen);
index += 40;
- strLen = min(20, m_strProductId.size());
+ strLen = min(20, (int)m_strProductId.size());
memcpy(&pszBuffer[index], m_strProductId.c_str(), strLen);
index += 20;
- strLen = min(20, m_strOperationId.size());
+ strLen = min(20, (int)m_strOperationId.size());
memcpy(&pszBuffer[index], m_strOperationId.c_str(), strLen);
index += 20;
- strLen = min(20, m_strGlass1Id.size());
+ strLen = min(20, (int)m_strGlass1Id.size());
memcpy(&pszBuffer[index], m_strGlass1Id.c_str(), strLen);
index += 20;
- strLen = min(20, m_strGlass2Id.size());
+ strLen = min(20, (int)m_strGlass2Id.size());
memcpy(&pszBuffer[index], m_strGlass2Id.c_str(), strLen);
index += 20;
@@ -405,19 +405,19 @@
memcpy(&pszBuffer[index], &m_nMasterRecipe, sizeof(short));
index += sizeof(short);
- strLen = min(10, m_strProductRecipeId.size());
+ strLen = min(10, (int)m_strProductRecipeId.size());
memcpy(&pszBuffer[index], m_strProductRecipeId.c_str(), strLen);
index += 10;
- strLen = min(10, m_strPCode.size());
+ strLen = min(10, (int)m_strPCode.size());
memcpy(&pszBuffer[index], m_strPCode.c_str(), strLen);
index += 10;
- strLen = min(10, m_strUseType.size());
+ strLen = min(10, (int)m_strUseType.size());
memcpy(&pszBuffer[index], m_strUseType.c_str(), strLen);
index += 10;
- strLen = min(80, m_strPanelMeasure.size());
+ strLen = min(80, (int)m_strPanelMeasure.size());
memcpy(&pszBuffer[index], m_strPanelMeasure.c_str(), strLen);
index += 80;
@@ -543,4 +543,100 @@
return 256 * 2;
}
+
+ void CJobDataS::getAttributeVector(CAttributeVector& attrubutes, int beginWeight)
+ {
+ unsigned int weight = beginWeight;
+ std::string strTemp;
+
+ attrubutes.addAttribute(new CAttribute("CassetteSequenceNo",
+ std::to_string(getCassetteSequenceNo()).c_str(), "", weight++));
+
+ attrubutes.addAttribute(new CAttribute("JobSequenceNo",
+ std::to_string(getJobSequenceNo()).c_str(), "", weight++));
+
+ attrubutes.addAttribute(new CAttribute("LotId",
+ getLotId().c_str(), "", weight++));
+
+ attrubutes.addAttribute(new CAttribute("ProductId",
+ getProductId().c_str(), "", weight++));
+
+ attrubutes.addAttribute(new CAttribute("OperationId",
+ getOperationId().c_str(), "", weight++));
+
+ attrubutes.addAttribute(new CAttribute("Glass1Id",
+ getGlass1Id().c_str(), "", weight++));
+
+ attrubutes.addAttribute(new CAttribute("Glass2Id",
+ getGlass2Id().c_str(), "", weight++));
+
+ attrubutes.addAttribute(new CAttribute("JobType",
+ std::to_string(getJobType()).c_str(), "", weight++));
+
+ attrubutes.addAttribute(new CAttribute("MaterialsType",
+ std::to_string(getMaterialsType()).c_str(), "", weight++));
+
+ attrubutes.addAttribute(new CAttribute("ProductType",
+ std::to_string(getProductType()).c_str(), "", weight++));
+
+ attrubutes.addAttribute(new CAttribute("DummyType",
+ std::to_string(getDummyType()).c_str(), "", weight++));
+
+ attrubutes.addAttribute(new CAttribute("SkipFlag",
+ std::to_string(getSkipFlag()).c_str(), "", weight++));
+
+ attrubutes.addAttribute(new CAttribute("ProcessFlag",
+ std::to_string(getProcessFlag()).c_str(), "", weight++));
+
+ attrubutes.addAttribute(new CAttribute("ProcessResonCode",
+ std::to_string(getProcessResonCode()).c_str(), "", weight++));
+
+ attrubutes.addAttribute(new CAttribute("LastGlassFlag",
+ std::to_string(getLastGlassFlag()).c_str(), "", weight++));
+
+ attrubutes.addAttribute(new CAttribute("FirstGlassFlag",
+ std::to_string(getFirstGlassFlag()).c_str(), "", weight++));
+
+ attrubutes.addAttribute(new CAttribute("QTime1",
+ std::to_string(getQTime(0)).c_str(), "", weight++));
+
+ attrubutes.addAttribute(new CAttribute("QTime2",
+ std::to_string(getQTime(1)).c_str(), "", weight++));
+
+ attrubutes.addAttribute(new CAttribute("QTime3",
+ std::to_string(getQTime(2)).c_str(), "", weight++));
+
+ attrubutes.addAttribute(new CAttribute("QTimeOverFlag",
+ std::to_string(getQTimeOverFlag()).c_str(), "", weight++));
+
+ attrubutes.addAttribute(new CAttribute("MasterRecipe",
+ std::to_string(getMasterRecipe()).c_str(), "", weight++));
+
+ attrubutes.addAttribute(new CAttribute("ProductRecipeId",
+ getProductRecipeId().c_str(), "", weight++));
+
+ attrubutes.addAttribute(new CAttribute("PCode",
+ getPCode().c_str(), "", weight++));
+
+ attrubutes.addAttribute(new CAttribute("UseType",
+ getUseType().c_str(), "", weight++));
+
+ attrubutes.addAttribute(new CAttribute("PanelMeasure",
+ getPanelMeasure().c_str(), "", weight++));
+
+ attrubutes.addAttribute(new CAttribute("SlotUnitSelectFlag",
+ std::to_string(getSlotUnitSelectFlag()).c_str(), "", weight++));
+
+ attrubutes.addAttribute(new CAttribute("SourcePortNo",
+ std::to_string(getSourcePortNo()).c_str(), "", weight++));
+
+ attrubutes.addAttribute(new CAttribute("SourceSlotNo",
+ std::to_string(getSourceSlotNo()).c_str(), "", weight++));
+
+ attrubutes.addAttribute(new CAttribute("TargetPortNo",
+ std::to_string(getTargetPortNo()).c_str(), "", weight++));
+
+ attrubutes.addAttribute(new CAttribute("TargetSlotNo",
+ std::to_string(getTargetSlotNo()).c_str(), "", weight++));
+ }
}
diff --git a/SourceCode/Bond/Servo/CJobDataS.h b/SourceCode/Bond/Servo/CJobDataS.h
index 62087b4..4cf456a 100644
--- a/SourceCode/Bond/Servo/CJobDataS.h
+++ b/SourceCode/Bond/Servo/CJobDataS.h
@@ -1,4 +1,5 @@
#pragma once
+#include "CAttributeVector.h"
namespace SERVO {
@@ -69,6 +70,7 @@
void setTargetSlotNo(int no);
int serialize(char* pszBuffer, int nBufferSize);
int unserialize(const char* pszBuffer, int nBufferSize);
+ void getAttributeVector(CAttributeVector& attrubutes, int beginWeight);
private:
diff --git a/SourceCode/Bond/Servo/CPageGraph2.cpp b/SourceCode/Bond/Servo/CPageGraph2.cpp
index 6ef9a57..cc44782 100644
--- a/SourceCode/Bond/Servo/CPageGraph2.cpp
+++ b/SourceCode/Bond/Servo/CPageGraph2.cpp
@@ -193,7 +193,7 @@
if (pEquipment->getID() == EQ_ID_LOADPORT1) {
pEquipment->outputGlass(1);
}
- pEquipment->fetchedOut("P20250320A1A2");
+ pEquipment->fetchedOutJob("P20250320A1A2");
}
else if (nCmd == ID_EQSGRAPHITEM_TEST2) {
SERVO::CEquipment* pEquipment = (SERVO::CEquipment*)pItem->pData;
diff --git a/SourceCode/Bond/Servo/CStep.cpp b/SourceCode/Bond/Servo/CStep.cpp
index 0597e6e..d1907c7 100644
--- a/SourceCode/Bond/Servo/CStep.cpp
+++ b/SourceCode/Bond/Servo/CStep.cpp
@@ -91,6 +91,15 @@
m_attributeVector.addAttribute(pAttribute, TRUE);
}
+ void CStep::addAttributeVector(CAttributeVector& attributeVector)
+ {
+ // 添加attribute时,要前删除存在的同名的attribute
+ unsigned int size = attributeVector.size();
+ for (unsigned int i = 0; i < size; i++) {
+ m_attributeVector.addAttribute(attributeVector.getAttribute(i), TRUE);
+ }
+ }
+
void CStep::convertString(const char* pszBuffer, int size, std::string& strOut)
{
strOut.clear();
diff --git a/SourceCode/Bond/Servo/CStep.h b/SourceCode/Bond/Servo/CStep.h
index fee9d57..20520f3 100644
--- a/SourceCode/Bond/Servo/CStep.h
+++ b/SourceCode/Bond/Servo/CStep.h
@@ -30,6 +30,7 @@
void setProp(const char* pszKey, void* pValue);
void* getProp(const char* pszKey);
void addAttribute(CAttribute* pAttribute);
+ void addAttributeVector(CAttributeVector& attributeVector);
protected:
inline void Lock() { EnterCriticalSection(&m_criticalSection); }
diff --git a/SourceCode/Bond/Servo/Common.h b/SourceCode/Bond/Servo/Common.h
index 5cf76f2..b4b4a75 100644
--- a/SourceCode/Bond/Servo/Common.h
+++ b/SourceCode/Bond/Servo/Common.h
@@ -137,10 +137,26 @@
#define STEP_EQ_P3_CASSETTE_CTRL_CMD _T("EQPort3CassetteCtrlCmd")
#define STEP_EQ_P4_CASSETTE_CTRL_CMD _T("EQPort4CassetteCtrlCmd")
#define STEP_EQ_CIM_MESSAGE_CONFIRM _T("EQCimMessageConfirm")
+#define STEP_EQ_RECEIVED_JOB_UPSn _T("EQJEReceivedJobUps")
#define STEP_EQ_RECEIVED_JOB_UPS1 _T("EQJEReceivedJobUps1")
#define STEP_EQ_RECEIVED_JOB_UPS2 _T("EQJEReceivedJobUps2")
+#define STEP_EQ_RECEIVED_JOB_UPS3 _T("EQJEReceivedJobUps3")
+#define STEP_EQ_RECEIVED_JOB_UPS4 _T("EQJEReceivedJobUps4")
+#define STEP_EQ_RECEIVED_JOB_UPS5 _T("EQJEReceivedJobUps5")
+#define STEP_EQ_RECEIVED_JOB_UPS6 _T("EQJEReceivedJobUps6")
+#define STEP_EQ_RECEIVED_JOB_UPS7 _T("EQJEReceivedJobUps7")
+#define STEP_EQ_RECEIVED_JOB_UPS8 _T("EQJEReceivedJobUps8")
+#define STEP_EQ_RECEIVED_JOB_UPS9 _T("EQJEReceivedJobUps9")
+#define STEP_EQ_SENT_OUT_JOB_DOWNSn _T("EQJESentOutJobDowns")
#define STEP_EQ_SENT_OUT_JOB_DOWNS1 _T("EQJESentOutJobDowns1")
#define STEP_EQ_SENT_OUT_JOB_DOWNS2 _T("EQJESentOutJobDowns2")
+#define STEP_EQ_SENT_OUT_JOB_DOWNS3 _T("EQJESentOutJobDowns3")
+#define STEP_EQ_SENT_OUT_JOB_DOWNS4 _T("EQJESentOutJobDowns4")
+#define STEP_EQ_SENT_OUT_JOB_DOWNS5 _T("EQJESentOutJobDowns5")
+#define STEP_EQ_SENT_OUT_JOB_DOWNS6 _T("EQJESentOutJobDowns6")
+#define STEP_EQ_SENT_OUT_JOB_DOWNS7 _T("EQJESentOutJobDowns7")
+#define STEP_EQ_SENT_OUT_JOB_DOWNS8 _T("EQJESentOutJobDowns8")
+#define STEP_EQ_SENT_OUT_JOB_DOWNS9 _T("EQJESentOutJobDowns9")
#define STEP_EQ_VCR1_EVENT_REPORT _T("EQVcr1EventReport")
#define STEP_EQ_RURRENT_RECIPE_CHANGE _T("EQCurrentRecipeChange")
#define STEP_EQ_MASTER_RECIPE_LIST_REQ _T("EQMasterRecipeListReq")
@@ -216,8 +232,22 @@
#define STEP_ID_RECIPE_PARAMETER_REPORT 0x56C
#define STEP_ID_RECIVE_JOB_UPS1 0x580
#define STEP_ID_RECIVE_JOB_UPS2 0x581
+#define STEP_ID_RECIVE_JOB_UPS3 0x582
+#define STEP_ID_RECIVE_JOB_UPS4 0x583
+#define STEP_ID_RECIVE_JOB_UPS5 0x584
+#define STEP_ID_RECIVE_JOB_UPS6 0x585
+#define STEP_ID_RECIVE_JOB_UPS7 0x586
+#define STEP_ID_RECIVE_JOB_UPS8 0x587
+#define STEP_ID_RECIVE_JOB_UPS9 0x588
#define STEP_ID_SENT_OUT_JOB_DOWNS1 0x590
#define STEP_ID_SENT_OUT_JOB_DOWNS2 0x591
+#define STEP_ID_SENT_OUT_JOB_DOWNS3 0x592
+#define STEP_ID_SENT_OUT_JOB_DOWNS4 0x593
+#define STEP_ID_SENT_OUT_JOB_DOWNS5 0x594
+#define STEP_ID_SENT_OUT_JOB_DOWNS6 0x595
+#define STEP_ID_SENT_OUT_JOB_DOWNS7 0x596
+#define STEP_ID_SENT_OUT_JOB_DOWNS8 0x597
+#define STEP_ID_SENT_OUT_JOB_DOWNS9 0x598
#define STEP_ID_STORE_JOB_REPORT1 0x5A0
#define STEP_ID_STORE_JOB_REPORT2 0x5A1
#define STEP_ID_STORE_JOB_REPORT3 0x5A2
--
Gitblit v1.9.3