From 5b6e648814aa829706cb94e6c44766ee9a6d9f12 Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期三, 28 五月 2025 11:06:47 +0800
Subject: [PATCH] 1.机器槽位信息设计(CSlot)
---
SourceCode/Bond/Servo/CArmTray.h | 1
SourceCode/Bond/Servo/CArm.cpp | 6
SourceCode/Bond/Servo/CVacuumBake.cpp | 10 +
SourceCode/Bond/Servo/CEqDateTimeSetCmdStep.h | 2
SourceCode/Bond/Servo/CEFEM.h | 1
SourceCode/Bond/Servo/CBakeCooling.cpp | 9 +
SourceCode/Bond/Servo/CPath.h | 2
SourceCode/Bond/Servo/CPortStatusReport.h | 2
SourceCode/Bond/Servo/CAligner.h | 1
SourceCode/Bond/Servo/CBonder.h | 1
SourceCode/Bond/Servo/CEqStatusStep.h | 2
SourceCode/Bond/Servo/CEqCurrentRecipeChangeStep.h | 2
SourceCode/Bond/Servo/CEqCimModeChangeStep.h | 2
SourceCode/Bond/Servo/CEqPortChangeStep.h | 2
SourceCode/Bond/Servo/CLoadPort.cpp | 17 ++
SourceCode/Bond/Servo/CMeasurement.h | 1
SourceCode/Bond/Servo/CSlot.h | 42 ++++++
SourceCode/Bond/Servo/CEqModeChangeStep.h | 2
SourceCode/Bond/Servo/CEqWriteStep.h | 2
SourceCode/Bond/Servo/CMeasurement.cpp | 9 +
SourceCode/Bond/Servo/Servo.vcxproj.filters | 2
SourceCode/Bond/Servo/CJobDataB.h | 2
SourceCode/Bond/Servo/CVcrEventReport.h | 2
SourceCode/Bond/Servo/CEFEM.cpp | 6
SourceCode/Bond/Servo/CEquipment.h | 14 +
SourceCode/Bond/Servo/ServoCommo.h | 6
SourceCode/Bond/Servo/CEqCassetteCtrlCmdStep.h | 2
SourceCode/Bond/Servo/CEqCimMessageCmdStep.h | 2
SourceCode/Bond/Servo/Servo.vcxproj | 2
SourceCode/Bond/Servo/CEqReadIntStep.h | 2
SourceCode/Bond/Servo/CEqVcrEventStep.h | 2
SourceCode/Bond/Servo/CJobDataS.h | 2
SourceCode/Bond/Servo/CFliper.cpp | 10 +
SourceCode/Bond/Servo/CEqModeStep.h | 2
SourceCode/Bond/Servo/CMaster.h | 2
SourceCode/Bond/Servo/CEqAlarmStep.h | 2
SourceCode/Bond/Servo/CSlot.cpp | 104 ++++++++++++++
SourceCode/Bond/Servo/CBakeCooling.h | 1
SourceCode/Bond/Servo/CEquipment.cpp | 48 ++++++
SourceCode/Bond/Servo/CEqJobEventStep.h | 2
SourceCode/Bond/Servo/CEqVCREnableStep.h | 2
SourceCode/Bond/Servo/CArm.h | 1
SourceCode/Bond/Servo/CEqReadStep.h | 2
SourceCode/Bond/Servo/CGlassPool.h | 2
SourceCode/Bond/Servo/CLoadPort.h | 1
SourceCode/Bond/Servo/CProcessData.h | 2
SourceCode/Bond/Servo/CVacuumBake.h | 1
SourceCode/Bond/Servo/CAttributeVector.h | 2
SourceCode/Bond/Servo/CAttribute.h | 2
SourceCode/Bond/Servo/CRobotTask.h | 2
SourceCode/Bond/Servo/CJobDataA.h | 2
SourceCode/Bond/Servo/CEqCimMessageClearStep.h | 2
SourceCode/Bond/Servo/CAligner.cpp | 9 +
SourceCode/Bond/Servo/CJobDataC.h | 2
SourceCode/Bond/Servo/CArmTray.cpp | 9 +
SourceCode/Bond/Servo/CEqProcessStep.h | 2
SourceCode/Bond/Servo/CEqCassetteTransferStateStep.h | 2
SourceCode/Bond/Servo/CBonder.cpp | 15 ++
SourceCode/Bond/Servo/CFliper.h | 1
SourceCode/Bond/Servo/Common.h | 28 ++--
60 files changed, 370 insertions(+), 50 deletions(-)
diff --git a/SourceCode/Bond/Servo/CAligner.cpp b/SourceCode/Bond/Servo/CAligner.cpp
index e07f04e..f656bf6 100644
--- a/SourceCode/Bond/Servo/CAligner.cpp
+++ b/SourceCode/Bond/Servo/CAligner.cpp
@@ -39,6 +39,15 @@
addPin(SERVO::PinType::OUTPUT, _T("Out2"));
}
+ // 必须要实现的虚函数,在此初始化Slot信息
+ void CAligner::initSlots()
+ {
+ m_slot[0].enable();
+ m_slot[0].setPosition(m_nID);
+ m_slot[0].setNo(1);
+ m_slot[0].setName("Slot 1");
+ }
+
void CAligner::onTimer(UINT nTimerid)
{
CEquipment::onTimer(nTimerid);
diff --git a/SourceCode/Bond/Servo/CAligner.h b/SourceCode/Bond/Servo/CAligner.h
index 66ac974..d48eb87 100644
--- a/SourceCode/Bond/Servo/CAligner.h
+++ b/SourceCode/Bond/Servo/CAligner.h
@@ -15,6 +15,7 @@
virtual void init();
virtual void term();
virtual void initPins();
+ virtual void initSlots();
virtual void onTimer(UINT nTimerid);
virtual void serialize(CArchive& ar);
virtual void getAttributeVector(CAttributeVector& attrubutes);
diff --git a/SourceCode/Bond/Servo/CArm.cpp b/SourceCode/Bond/Servo/CArm.cpp
index 064ab30..77e43d3 100644
--- a/SourceCode/Bond/Servo/CArm.cpp
+++ b/SourceCode/Bond/Servo/CArm.cpp
@@ -34,6 +34,12 @@
}
+ // 必须要实现的虚函数,在此初始化Slot信息
+ void CArm::initSlots()
+ {
+
+ }
+
void CArm::onTimer(UINT nTimerid)
{
CEquipment::onTimer(nTimerid);
diff --git a/SourceCode/Bond/Servo/CArm.h b/SourceCode/Bond/Servo/CArm.h
index 4a12834..cedb751 100644
--- a/SourceCode/Bond/Servo/CArm.h
+++ b/SourceCode/Bond/Servo/CArm.h
@@ -15,6 +15,7 @@
virtual void init();
virtual void term();
virtual void initPins();
+ virtual void initSlots();
virtual void onTimer(UINT nTimerid);
virtual void serialize(CArchive& ar);
virtual void getAttributeVector(CAttributeVector& attrubutes);
diff --git a/SourceCode/Bond/Servo/CArmTray.cpp b/SourceCode/Bond/Servo/CArmTray.cpp
index ddb8b30..6e74681 100644
--- a/SourceCode/Bond/Servo/CArmTray.cpp
+++ b/SourceCode/Bond/Servo/CArmTray.cpp
@@ -34,6 +34,15 @@
}
+ // 必须要实现的虚函数,在此初始化Slot信息
+ void CArmTray::initSlots()
+ {
+ m_slot[0].enable();
+ m_slot[0].setPosition(m_nID);
+ m_slot[0].setNo(1);
+ m_slot[0].setName("Slot 1");
+ }
+
void CArmTray::onTimer(UINT nTimerid)
{
CEquipment::onTimer(nTimerid);
diff --git a/SourceCode/Bond/Servo/CArmTray.h b/SourceCode/Bond/Servo/CArmTray.h
index 8a08cf0..7da5d54 100644
--- a/SourceCode/Bond/Servo/CArmTray.h
+++ b/SourceCode/Bond/Servo/CArmTray.h
@@ -14,6 +14,7 @@
virtual void init();
virtual void term();
virtual void initPins();
+ virtual void initSlots();
virtual void onTimer(UINT nTimerid);
virtual void serialize(CArchive& ar);
virtual void getAttributeVector(CAttributeVector& attrubutes);
diff --git a/SourceCode/Bond/Servo/CAttribute.h b/SourceCode/Bond/Servo/CAttribute.h
index ee5098b..b91e6cc 100644
--- a/SourceCode/Bond/Servo/CAttribute.h
+++ b/SourceCode/Bond/Servo/CAttribute.h
@@ -7,7 +7,7 @@
public:
CAttribute();
CAttribute(const char* pszName, const char* pszValue, const char* pszDescription, unsigned int weight);
- ~CAttribute();
+ virtual ~CAttribute();
public:
std::string& getName();
diff --git a/SourceCode/Bond/Servo/CAttributeVector.h b/SourceCode/Bond/Servo/CAttributeVector.h
index fdbb30a..f4cb330 100644
--- a/SourceCode/Bond/Servo/CAttributeVector.h
+++ b/SourceCode/Bond/Servo/CAttributeVector.h
@@ -8,7 +8,7 @@
{
public:
CAttributeVector();
- ~CAttributeVector();
+ virtual ~CAttributeVector();
public:
void addAttribute(CAttribute* pAttribute, BOOL bReplace = FALSE);
diff --git a/SourceCode/Bond/Servo/CBakeCooling.cpp b/SourceCode/Bond/Servo/CBakeCooling.cpp
index 96367ba..7d91de0 100644
--- a/SourceCode/Bond/Servo/CBakeCooling.cpp
+++ b/SourceCode/Bond/Servo/CBakeCooling.cpp
@@ -38,6 +38,15 @@
addPin(SERVO::PinType::OUTPUT, _T("Out"));
}
+ // 必须要实现的虚函数,在此初始化Slot信息
+ void CBakeCooling::initSlots()
+ {
+ m_slot[0].enable();
+ m_slot[0].setPosition(m_nID);
+ m_slot[0].setNo(1);
+ m_slot[0].setName("Slot 1");
+ }
+
void CBakeCooling::onTimer(UINT nTimerid)
{
CEquipment::onTimer(nTimerid);
diff --git a/SourceCode/Bond/Servo/CBakeCooling.h b/SourceCode/Bond/Servo/CBakeCooling.h
index bea7a17..6ecf093 100644
--- a/SourceCode/Bond/Servo/CBakeCooling.h
+++ b/SourceCode/Bond/Servo/CBakeCooling.h
@@ -15,6 +15,7 @@
virtual void init();
virtual void term();
virtual void initPins();
+ virtual void initSlots();
virtual void onTimer(UINT nTimerid);
virtual void serialize(CArchive& ar);
virtual void getAttributeVector(CAttributeVector& attrubutes);
diff --git a/SourceCode/Bond/Servo/CBonder.cpp b/SourceCode/Bond/Servo/CBonder.cpp
index f485a94..87f4a7d 100644
--- a/SourceCode/Bond/Servo/CBonder.cpp
+++ b/SourceCode/Bond/Servo/CBonder.cpp
@@ -336,6 +336,21 @@
}
}
+ // 必须要实现的虚函数,在此初始化Slot信息
+ void CBonder::initSlots()
+ {
+ m_slot[0].enable();
+ m_slot[0].setPosition(m_nID);
+ m_slot[0].setNo(1);
+ m_slot[0].setName("Slot 1(G1)");
+ m_slot[0].setType(MaterialsType::G1);
+ m_slot[1].enable();
+ m_slot[1].setPosition(m_nID);
+ m_slot[1].setNo(2);
+ m_slot[1].setName("Slot 2(G2)");
+ m_slot[1].setType(MaterialsType::G2);
+ }
+
void CBonder::onTimer(UINT nTimerid)
{
CEquipment::onTimer(nTimerid);
diff --git a/SourceCode/Bond/Servo/CBonder.h b/SourceCode/Bond/Servo/CBonder.h
index f24e05b..90acdfc 100644
--- a/SourceCode/Bond/Servo/CBonder.h
+++ b/SourceCode/Bond/Servo/CBonder.h
@@ -16,6 +16,7 @@
virtual void term();
virtual void initPins();
virtual void initSteps();
+ virtual void initSlots();
virtual void onTimer(UINT nTimerid);
virtual void serialize(CArchive& ar);
virtual void getAttributeVector(CAttributeVector& attrubutes);
diff --git a/SourceCode/Bond/Servo/CEFEM.cpp b/SourceCode/Bond/Servo/CEFEM.cpp
index 3918098..ec044d2 100644
--- a/SourceCode/Bond/Servo/CEFEM.cpp
+++ b/SourceCode/Bond/Servo/CEFEM.cpp
@@ -628,6 +628,12 @@
}
}
+ // 必须要实现的虚函数,在此初始化Slot信息
+ void CEFEM::initSlots()
+ {
+
+ }
+
void CEFEM::onTimer(UINT nTimerid)
{
CEquipment::onTimer(nTimerid);
diff --git a/SourceCode/Bond/Servo/CEFEM.h b/SourceCode/Bond/Servo/CEFEM.h
index 997f22d..3e10d3f 100644
--- a/SourceCode/Bond/Servo/CEFEM.h
+++ b/SourceCode/Bond/Servo/CEFEM.h
@@ -20,6 +20,7 @@
virtual void term();
virtual void initPins();
virtual void initSteps();
+ virtual void initSlots();
virtual void onTimer(UINT nTimerid);
virtual void serialize(CArchive& ar);
virtual void getAttributeVector(CAttributeVector& attrubutes);
diff --git a/SourceCode/Bond/Servo/CEqAlarmStep.h b/SourceCode/Bond/Servo/CEqAlarmStep.h
index 7c33958..b00c538 100644
--- a/SourceCode/Bond/Servo/CEqAlarmStep.h
+++ b/SourceCode/Bond/Servo/CEqAlarmStep.h
@@ -7,7 +7,7 @@
{
public:
CEqAlarmStep();
- ~CEqAlarmStep();
+ virtual ~CEqAlarmStep();
public:
virtual void getAttributeVector(CAttributeVector& attrubutes);
diff --git a/SourceCode/Bond/Servo/CEqCassetteCtrlCmdStep.h b/SourceCode/Bond/Servo/CEqCassetteCtrlCmdStep.h
index e86ca92..97e2d62 100644
--- a/SourceCode/Bond/Servo/CEqCassetteCtrlCmdStep.h
+++ b/SourceCode/Bond/Servo/CEqCassetteCtrlCmdStep.h
@@ -8,7 +8,7 @@
{
public:
CEqCassetteCtrlCmdStep();
- ~CEqCassetteCtrlCmdStep();
+ virtual ~CEqCassetteCtrlCmdStep();
public:
void setCtrlCmdDev(int nDev);
diff --git a/SourceCode/Bond/Servo/CEqCassetteTransferStateStep.h b/SourceCode/Bond/Servo/CEqCassetteTransferStateStep.h
index a069226..c136522 100644
--- a/SourceCode/Bond/Servo/CEqCassetteTransferStateStep.h
+++ b/SourceCode/Bond/Servo/CEqCassetteTransferStateStep.h
@@ -7,7 +7,7 @@
{
public:
CEqCassetteTransferStateStep();
- ~CEqCassetteTransferStateStep();
+ virtual ~CEqCassetteTransferStateStep();
public:
virtual void getAttributeVector(CAttributeVector& attrubutes);
diff --git a/SourceCode/Bond/Servo/CEqCimMessageClearStep.h b/SourceCode/Bond/Servo/CEqCimMessageClearStep.h
index b4306f9..3f2f391 100644
--- a/SourceCode/Bond/Servo/CEqCimMessageClearStep.h
+++ b/SourceCode/Bond/Servo/CEqCimMessageClearStep.h
@@ -7,7 +7,7 @@
{
public:
CEqCimMessageClearStep();
- ~CEqCimMessageClearStep();
+ virtual ~CEqCimMessageClearStep();
public:
void setClearCimMessageDev(int nDev);
diff --git a/SourceCode/Bond/Servo/CEqCimMessageCmdStep.h b/SourceCode/Bond/Servo/CEqCimMessageCmdStep.h
index 61378ed..fb29f6c 100644
--- a/SourceCode/Bond/Servo/CEqCimMessageCmdStep.h
+++ b/SourceCode/Bond/Servo/CEqCimMessageCmdStep.h
@@ -7,7 +7,7 @@
{
public:
CEqCimMessageCmdStep();
- ~CEqCimMessageCmdStep();
+ virtual ~CEqCimMessageCmdStep();
public:
void setCimMessageDev(int nDev);
diff --git a/SourceCode/Bond/Servo/CEqCimModeChangeStep.h b/SourceCode/Bond/Servo/CEqCimModeChangeStep.h
index 22afc6a..c014de0 100644
--- a/SourceCode/Bond/Servo/CEqCimModeChangeStep.h
+++ b/SourceCode/Bond/Servo/CEqCimModeChangeStep.h
@@ -7,7 +7,7 @@
{
public:
CEqCimModeChangeStep();
- ~CEqCimModeChangeStep();
+ virtual ~CEqCimModeChangeStep();
public:
void setCimModeDev(int nDev);
diff --git a/SourceCode/Bond/Servo/CEqCurrentRecipeChangeStep.h b/SourceCode/Bond/Servo/CEqCurrentRecipeChangeStep.h
index 7e05701..54cd8e1 100644
--- a/SourceCode/Bond/Servo/CEqCurrentRecipeChangeStep.h
+++ b/SourceCode/Bond/Servo/CEqCurrentRecipeChangeStep.h
@@ -7,7 +7,7 @@
{
public:
CEqCurrentRecipeChangeStep();
- ~CEqCurrentRecipeChangeStep();
+ virtual ~CEqCurrentRecipeChangeStep();
public:
virtual void getAttributeVector(CAttributeVector& attrubutes);
diff --git a/SourceCode/Bond/Servo/CEqDateTimeSetCmdStep.h b/SourceCode/Bond/Servo/CEqDateTimeSetCmdStep.h
index b110a05..ea7a070 100644
--- a/SourceCode/Bond/Servo/CEqDateTimeSetCmdStep.h
+++ b/SourceCode/Bond/Servo/CEqDateTimeSetCmdStep.h
@@ -7,7 +7,7 @@
{
public:
CEqDateTimeSetCmdStep();
- ~CEqDateTimeSetCmdStep();
+ virtual ~CEqDateTimeSetCmdStep();
public:
void setDateTimeDev(int nDev);
diff --git a/SourceCode/Bond/Servo/CEqJobEventStep.h b/SourceCode/Bond/Servo/CEqJobEventStep.h
index 71eb425..c0cbace 100644
--- a/SourceCode/Bond/Servo/CEqJobEventStep.h
+++ b/SourceCode/Bond/Servo/CEqJobEventStep.h
@@ -8,7 +8,7 @@
{
public:
CEqJobEventStep();
- ~CEqJobEventStep();
+ virtual ~CEqJobEventStep();
public:
virtual void getAttributeVector(CAttributeVector& attrubutes);
diff --git a/SourceCode/Bond/Servo/CEqModeChangeStep.h b/SourceCode/Bond/Servo/CEqModeChangeStep.h
index 420014d..6531261 100644
--- a/SourceCode/Bond/Servo/CEqModeChangeStep.h
+++ b/SourceCode/Bond/Servo/CEqModeChangeStep.h
@@ -7,7 +7,7 @@
{
public:
CEqModeChangeStep();
- ~CEqModeChangeStep();
+ virtual ~CEqModeChangeStep();
public:
void setEqModeDev(int nDev);
diff --git a/SourceCode/Bond/Servo/CEqModeStep.h b/SourceCode/Bond/Servo/CEqModeStep.h
index 1bc611d..cfd461c 100644
--- a/SourceCode/Bond/Servo/CEqModeStep.h
+++ b/SourceCode/Bond/Servo/CEqModeStep.h
@@ -7,7 +7,7 @@
{
public:
CEqModeStep();
- ~CEqModeStep();
+ virtual ~CEqModeStep();
public:
virtual void getAttributeVector(CAttributeVector& attrubutes);
diff --git a/SourceCode/Bond/Servo/CEqPortChangeStep.h b/SourceCode/Bond/Servo/CEqPortChangeStep.h
index 27f7a99..b1b3598 100644
--- a/SourceCode/Bond/Servo/CEqPortChangeStep.h
+++ b/SourceCode/Bond/Servo/CEqPortChangeStep.h
@@ -6,7 +6,7 @@
{
public:
CEqPortChangeStep();
- ~CEqPortChangeStep();
+ virtual ~CEqPortChangeStep();
public:
virtual void getAttributeVector(CAttributeVector& attrubutes);
diff --git a/SourceCode/Bond/Servo/CEqProcessStep.h b/SourceCode/Bond/Servo/CEqProcessStep.h
index d16a5a0..972b6c2 100644
--- a/SourceCode/Bond/Servo/CEqProcessStep.h
+++ b/SourceCode/Bond/Servo/CEqProcessStep.h
@@ -8,7 +8,7 @@
{
public:
CEqProcessStep();
- ~CEqProcessStep();
+ virtual ~CEqProcessStep();
public:
void getAttributeVector(CAttributeVector& attrubutes);
diff --git a/SourceCode/Bond/Servo/CEqReadIntStep.h b/SourceCode/Bond/Servo/CEqReadIntStep.h
index b3206c0..6c6589a 100644
--- a/SourceCode/Bond/Servo/CEqReadIntStep.h
+++ b/SourceCode/Bond/Servo/CEqReadIntStep.h
@@ -11,7 +11,7 @@
public:
CEqReadIntStep();
CEqReadIntStep(int dataType, int dev);
- ~CEqReadIntStep();
+ virtual ~CEqReadIntStep();
public:
virtual void getAttributeVector(CAttributeVector& attrubutes);
diff --git a/SourceCode/Bond/Servo/CEqReadStep.h b/SourceCode/Bond/Servo/CEqReadStep.h
index 567f1cf..bab69cd 100644
--- a/SourceCode/Bond/Servo/CEqReadStep.h
+++ b/SourceCode/Bond/Servo/CEqReadStep.h
@@ -18,7 +18,7 @@
public:
CEqReadStep();
CEqReadStep(int dev, size_t readSize, ONREAD onReadBlock);
- ~CEqReadStep();
+ virtual ~CEqReadStep();
public:
virtual void getAttributeVector(CAttributeVector& attrubutes);
diff --git a/SourceCode/Bond/Servo/CEqStatusStep.h b/SourceCode/Bond/Servo/CEqStatusStep.h
index f99e813..3423e84 100644
--- a/SourceCode/Bond/Servo/CEqStatusStep.h
+++ b/SourceCode/Bond/Servo/CEqStatusStep.h
@@ -10,7 +10,7 @@
{
public:
CEqStatusStep();
- ~CEqStatusStep();
+ virtual ~CEqStatusStep();
public:
virtual void getAttributeVector(CAttributeVector& attrubutes);
diff --git a/SourceCode/Bond/Servo/CEqVCREnableStep.h b/SourceCode/Bond/Servo/CEqVCREnableStep.h
index ebd605d..c4065eb 100644
--- a/SourceCode/Bond/Servo/CEqVCREnableStep.h
+++ b/SourceCode/Bond/Servo/CEqVCREnableStep.h
@@ -7,7 +7,7 @@
{
public:
CEqVCREnableStep();
- ~CEqVCREnableStep();
+ virtual ~CEqVCREnableStep();
public:
void setEqVCRModeDev(int nDev);
diff --git a/SourceCode/Bond/Servo/CEqVcrEventStep.h b/SourceCode/Bond/Servo/CEqVcrEventStep.h
index b7b64a4..6e510a0 100644
--- a/SourceCode/Bond/Servo/CEqVcrEventStep.h
+++ b/SourceCode/Bond/Servo/CEqVcrEventStep.h
@@ -8,7 +8,7 @@
{
public:
CEqVcrEventStep();
- ~CEqVcrEventStep();
+ virtual ~CEqVcrEventStep();
public:
virtual void getAttributeVector(CAttributeVector& attrubutes);
diff --git a/SourceCode/Bond/Servo/CEqWriteStep.h b/SourceCode/Bond/Servo/CEqWriteStep.h
index 602408b..2ec74ba 100644
--- a/SourceCode/Bond/Servo/CEqWriteStep.h
+++ b/SourceCode/Bond/Servo/CEqWriteStep.h
@@ -13,7 +13,7 @@
{
public:
CEqWriteStep();
- ~CEqWriteStep();
+ virtual ~CEqWriteStep();
public:
void setDataDev(int nDev);
diff --git a/SourceCode/Bond/Servo/CEquipment.cpp b/SourceCode/Bond/Servo/CEquipment.cpp
index 9a6ebfc..d8cad41 100644
--- a/SourceCode/Bond/Servo/CEquipment.cpp
+++ b/SourceCode/Bond/Servo/CEquipment.cpp
@@ -1170,6 +1170,54 @@
return 0;
}
+ CSlot* CEquipment::getAvailableSlot()
+ {
+ for (int i = 0; i < SLOT_MAX; i++) {
+ if (!m_slot[i].isEnable()) continue;
+ if (m_slot[i].isLock()) continue;
+ if (!m_slot[i].isEmpty()) continue;
+
+ return &m_slot[i];
+ }
+
+ return nullptr;
+ }
+
+ CSlot* CEquipment::getEmptySlot(MaterialsType type)
+ {
+ for (int i = 0; i < SLOT_MAX; i++) {
+ if (!m_slot[i].isEnable()) continue;
+ if (m_slot[i].isLock()) continue;
+ if (!m_slot[i].isEmpty()) continue;
+
+ MaterialsType slotType = m_slot[i].getType();
+ if (type == MaterialsType::G1 && slotType == MaterialsType::G2) continue;
+ if (type == MaterialsType::G2 && slotType == MaterialsType::G1) continue;
+
+ return &m_slot[i];
+ }
+
+ return nullptr;
+ }
+
+ CSlot* CEquipment::getNonEmptySlot(MaterialsType putSlotType)
+ {
+ for (int i = 0; i < SLOT_MAX; i++) {
+ if (!m_slot[i].isEnable()) continue;
+ if (m_slot[i].isLock()) continue;
+ CGlass* pGlass = (CGlass*)m_slot[i].getContext();
+ if (pGlass == nullptr) continue;
+
+ MaterialsType glassType = pGlass->getType();
+ if (glassType == MaterialsType::G1 && putSlotType == MaterialsType::G2) continue;
+ if (glassType == MaterialsType::G2 && putSlotType == MaterialsType::G1) continue;
+
+ return &m_slot[i];
+ }
+
+ return nullptr;
+ }
+
short CEquipment::decodeRecipeListReport(const char* pszData, size_t size)
{
return m_recipesManager.decodeRecipeListReport(pszData, size);
diff --git a/SourceCode/Bond/Servo/CEquipment.h b/SourceCode/Bond/Servo/CEquipment.h
index c1d73c7..7bdc2b8 100644
--- a/SourceCode/Bond/Servo/CEquipment.h
+++ b/SourceCode/Bond/Servo/CEquipment.h
@@ -34,9 +34,11 @@
#include "CJobDataS.h"
#include "CProcessData.h"
#include "CPortStatusReport.h"
+#include "CSlot.h"
namespace SERVO {
+#define SLOT_MAX 12
typedef std::function<void(void* pEiuipment, BOOL bAlive)> ONALIVE;
typedef std::function<void(void* pEiuipment, int code)> ONDATACHANGED;
@@ -89,6 +91,7 @@
virtual void term();
virtual void initPins() = 0;
virtual void initSteps();
+ virtual void initSlots() = 0;
virtual void onTimer(UINT nTimerid);
virtual void serialize(CArchive& ar);
virtual void onReceiveLBData(const char* pszData, size_t size);
@@ -145,9 +148,17 @@
// unitNo: 0:local; Others:unit No
int recipeParameterRequest(short masterRecipeId, short localRecipeId, short unitNo);
+ // 获取一个可用的槽位
+ CSlot* getAvailableSlot();
+
+ // 获取一个指定物料类型(G1,G2,G1&G2)的空槽位
+ CSlot* getEmptySlot(MaterialsType type);
+
+ // 获取一个指定物料类型(G1,G2,G1&G2)的非空槽位
+ CSlot* getNonEmptySlot(MaterialsType type);
+
public:
BOOL isGlassListEmpty();
-
// 以下为从CC-Link读取到的Bit标志位检测函数
public:
@@ -209,6 +220,7 @@
std::map<unsigned int, CStep*> m_mapStep;
int m_nBaseAlarmId;
CRecipesManager m_recipesManager;
+ CSlot m_slot[SLOT_MAX];
private:
CEquipment* m_pArm;
diff --git a/SourceCode/Bond/Servo/CFliper.cpp b/SourceCode/Bond/Servo/CFliper.cpp
index 891aac4..7322d95 100644
--- a/SourceCode/Bond/Servo/CFliper.cpp
+++ b/SourceCode/Bond/Servo/CFliper.cpp
@@ -38,6 +38,16 @@
addPin(SERVO::PinType::OUTPUT, _T("Out"));
}
+ // 必须要实现的虚函数,在此初始化Slot信息
+ void CFliper::initSlots()
+ {
+ m_slot[0].enable();
+ m_slot[0].setPosition(m_nID);
+ m_slot[0].setNo(1);
+ m_slot[0].setName("Slot 1(G2)");
+ m_slot[0].setType(MaterialsType::G2);
+ }
+
void CFliper::onTimer(UINT nTimerid)
{
CEquipment::onTimer(nTimerid);
diff --git a/SourceCode/Bond/Servo/CFliper.h b/SourceCode/Bond/Servo/CFliper.h
index 4d3c859..fb4df7e 100644
--- a/SourceCode/Bond/Servo/CFliper.h
+++ b/SourceCode/Bond/Servo/CFliper.h
@@ -15,6 +15,7 @@
virtual void init();
virtual void term();
virtual void initPins();
+ virtual void initSlots();
virtual void onTimer(UINT nTimerid);
virtual void serialize(CArchive& ar);
virtual void getAttributeVector(CAttributeVector& attrubutes);
diff --git a/SourceCode/Bond/Servo/CGlassPool.h b/SourceCode/Bond/Servo/CGlassPool.h
index c6e53a9..79cfda6 100644
--- a/SourceCode/Bond/Servo/CGlassPool.h
+++ b/SourceCode/Bond/Servo/CGlassPool.h
@@ -9,7 +9,7 @@
{
public:
CGlassPool();
- ~CGlassPool();
+ virtual ~CGlassPool();
public:
void initPool();
diff --git a/SourceCode/Bond/Servo/CJobDataA.h b/SourceCode/Bond/Servo/CJobDataA.h
index c3879d4..4599707 100644
--- a/SourceCode/Bond/Servo/CJobDataA.h
+++ b/SourceCode/Bond/Servo/CJobDataA.h
@@ -8,7 +8,7 @@
{
public:
CJobDataA();
- ~CJobDataA();
+ virtual ~CJobDataA();
public:
short getPortNo();
diff --git a/SourceCode/Bond/Servo/CJobDataB.h b/SourceCode/Bond/Servo/CJobDataB.h
index 34945c5..703eae5 100644
--- a/SourceCode/Bond/Servo/CJobDataB.h
+++ b/SourceCode/Bond/Servo/CJobDataB.h
@@ -8,7 +8,7 @@
public:
CJobDataB();
CJobDataB::CJobDataB(CJobDataB&& other) noexcept;
- ~CJobDataB();
+ virtual ~CJobDataB();
public:
void copy(CJobDataB* pScr);
diff --git a/SourceCode/Bond/Servo/CJobDataC.h b/SourceCode/Bond/Servo/CJobDataC.h
index 6b8189f..5562466 100644
--- a/SourceCode/Bond/Servo/CJobDataC.h
+++ b/SourceCode/Bond/Servo/CJobDataC.h
@@ -6,7 +6,7 @@
{
public:
CJobDataC();
- ~CJobDataC();
+ virtual ~CJobDataC();
public:
int getCassetteSequenceNo();
diff --git a/SourceCode/Bond/Servo/CJobDataS.h b/SourceCode/Bond/Servo/CJobDataS.h
index 8f5bae6..9dda64a 100644
--- a/SourceCode/Bond/Servo/CJobDataS.h
+++ b/SourceCode/Bond/Servo/CJobDataS.h
@@ -9,7 +9,7 @@
public:
CJobDataS();
CJobDataS::CJobDataS(CJobDataS&& other) noexcept;
- ~CJobDataS();
+ virtual ~CJobDataS();
public:
void copy(CJobDataS* pScr);
diff --git a/SourceCode/Bond/Servo/CLoadPort.cpp b/SourceCode/Bond/Servo/CLoadPort.cpp
index a61e86e..c98dede 100644
--- a/SourceCode/Bond/Servo/CLoadPort.cpp
+++ b/SourceCode/Bond/Servo/CLoadPort.cpp
@@ -55,6 +55,23 @@
addPin(SERVO::PinType::OUTPUT, _T("Out2"));
}
+ // 必须要实现的虚函数,在此初始化Slot信息
+ void CLoadPort::initSlots()
+ {
+ m_slot[0].enable();
+ m_slot[0].setPosition(m_nID);
+ m_slot[0].setNo(1);
+ m_slot[0].setName("Slot 1");
+ m_slot[1].enable();
+ m_slot[1].setPosition(m_nID);
+ m_slot[1].setNo(2);
+ m_slot[1].setName("Slot 2");
+ m_slot[2].setPosition(m_nID);
+ m_slot[2].enable();
+ m_slot[2].setNo(3);
+ m_slot[2].setName("Slot 3");
+ }
+
void CLoadPort::initSteps()
{
CEquipment::initSteps();
diff --git a/SourceCode/Bond/Servo/CLoadPort.h b/SourceCode/Bond/Servo/CLoadPort.h
index 3156830..92adfc8 100644
--- a/SourceCode/Bond/Servo/CLoadPort.h
+++ b/SourceCode/Bond/Servo/CLoadPort.h
@@ -17,6 +17,7 @@
virtual void term();
virtual void initPins();
virtual void initSteps();
+ virtual void initSlots();
virtual void onTimer(UINT nTimerid);
virtual void serialize(CArchive& ar);
virtual void getAttributeVector(CAttributeVector& attrubutes);
diff --git a/SourceCode/Bond/Servo/CMaster.h b/SourceCode/Bond/Servo/CMaster.h
index e6cf6fa..2a2b9c0 100644
--- a/SourceCode/Bond/Servo/CMaster.h
+++ b/SourceCode/Bond/Servo/CMaster.h
@@ -43,7 +43,7 @@
{
public:
CMaster();
- ~CMaster();
+ virtual ~CMaster();
public:
diff --git a/SourceCode/Bond/Servo/CMeasurement.cpp b/SourceCode/Bond/Servo/CMeasurement.cpp
index f659453..c74db1e 100644
--- a/SourceCode/Bond/Servo/CMeasurement.cpp
+++ b/SourceCode/Bond/Servo/CMeasurement.cpp
@@ -38,6 +38,15 @@
addPin(SERVO::PinType::OUTPUT, _T("Out2"));
}
+ // 必须要实现的虚函数,在此初始化Slot信息
+ void CMeasurement::initSlots()
+ {
+ m_slot[0].enable();
+ m_slot[0].setPosition(m_nID);
+ m_slot[0].setNo(1);
+ m_slot[0].setName("Slot 1");
+ }
+
void CMeasurement::onTimer(UINT nTimerid)
{
CEquipment::onTimer(nTimerid);
diff --git a/SourceCode/Bond/Servo/CMeasurement.h b/SourceCode/Bond/Servo/CMeasurement.h
index b6d87bb..896d889 100644
--- a/SourceCode/Bond/Servo/CMeasurement.h
+++ b/SourceCode/Bond/Servo/CMeasurement.h
@@ -15,6 +15,7 @@
virtual void init();
virtual void term();
virtual void initPins();
+ virtual void initSlots();
virtual void onTimer(UINT nTimerid);
virtual void serialize(CArchive& ar);
virtual void getAttributeVector(CAttributeVector& attrubutes);
diff --git a/SourceCode/Bond/Servo/CPath.h b/SourceCode/Bond/Servo/CPath.h
index b9dcf5f..f61c4c3 100644
--- a/SourceCode/Bond/Servo/CPath.h
+++ b/SourceCode/Bond/Servo/CPath.h
@@ -7,7 +7,7 @@
public:
CPath();
CPath(unsigned int nSiteId);
- ~CPath();
+ virtual ~CPath();
public:
void getDescription(std::string& strOut);
diff --git a/SourceCode/Bond/Servo/CPortStatusReport.h b/SourceCode/Bond/Servo/CPortStatusReport.h
index 4aede52..21d5048 100644
--- a/SourceCode/Bond/Servo/CPortStatusReport.h
+++ b/SourceCode/Bond/Servo/CPortStatusReport.h
@@ -9,7 +9,7 @@
{
public:
CPortStatusReport();
- ~CPortStatusReport();
+ virtual ~CPortStatusReport();
public:
void copyEx(CPortStatusReport& other);
diff --git a/SourceCode/Bond/Servo/CProcessData.h b/SourceCode/Bond/Servo/CProcessData.h
index 37b0866..2bae1aa 100644
--- a/SourceCode/Bond/Servo/CProcessData.h
+++ b/SourceCode/Bond/Servo/CProcessData.h
@@ -8,7 +8,7 @@
{
public:
CProcessData();
- ~CProcessData();
+ virtual ~CProcessData();
public:
std::string& getGlassId();
diff --git a/SourceCode/Bond/Servo/CRobotTask.h b/SourceCode/Bond/Servo/CRobotTask.h
index 1f109a3..54e847b 100644
--- a/SourceCode/Bond/Servo/CRobotTask.h
+++ b/SourceCode/Bond/Servo/CRobotTask.h
@@ -7,7 +7,7 @@
{
public:
CRobotTask();
- ~CRobotTask();
+ virtual ~CRobotTask();
public:
std::string& getId();
diff --git a/SourceCode/Bond/Servo/CSlot.cpp b/SourceCode/Bond/Servo/CSlot.cpp
new file mode 100644
index 0000000..0a254cb
--- /dev/null
+++ b/SourceCode/Bond/Servo/CSlot.cpp
@@ -0,0 +1,104 @@
+#include "stdafx.h"
+#include "CSlot.h"
+
+
+namespace SERVO {
+ CSlot::CSlot()
+ {
+ m_nNo = 0;
+ m_materialsType = MaterialsType::G1G2;
+ m_pContext = nullptr;
+ m_bEnable = FALSE;
+ m_bLock = FALSE;
+ }
+
+ CSlot::~CSlot()
+ {
+
+ }
+
+ BOOL CSlot::isEnable()
+ {
+ return m_bEnable;
+ }
+
+ void CSlot::enable()
+ {
+ m_bEnable = TRUE;
+ }
+
+ void CSlot::disable()
+ {
+ m_bEnable = FALSE;
+ }
+
+ BOOL CSlot::isLock()
+ {
+ return m_bLock;
+ }
+
+ void CSlot::lock()
+ {
+ m_bLock = TRUE;
+ }
+
+ void CSlot::unlock()
+ {
+ m_bLock = FALSE;
+ }
+
+ int CSlot::getPosition()
+ {
+ return m_nPosition;
+ }
+
+ void CSlot::setPosition(int position)
+ {
+ m_nPosition = position;
+ }
+
+ int CSlot::getNo()
+ {
+ return m_nNo;
+ }
+
+ void CSlot::setNo(int no)
+ {
+ m_nNo = no;
+ }
+
+ MaterialsType CSlot::getType()
+ {
+ return m_materialsType;
+ }
+
+ void CSlot::setType(MaterialsType type)
+ {
+ m_materialsType = type;
+ }
+
+ std::string& CSlot::getName()
+ {
+ return m_strName;
+ }
+
+ void CSlot::setName(const char* pszName)
+ {
+ m_strName = pszName;
+ }
+
+ BOOL CSlot::isEmpty()
+ {
+ return m_pContext == nullptr;
+ }
+
+ CContext* CSlot::getContext()
+ {
+ return m_pContext;
+ }
+
+ void CSlot::setContext(CContext* pContext)
+ {
+ m_pContext = pContext;
+ }
+}
diff --git a/SourceCode/Bond/Servo/CSlot.h b/SourceCode/Bond/Servo/CSlot.h
new file mode 100644
index 0000000..f7445aa
--- /dev/null
+++ b/SourceCode/Bond/Servo/CSlot.h
@@ -0,0 +1,42 @@
+#pragma once
+#include "Context.h"
+#include "ServoCommo.h"
+
+
+namespace SERVO {
+ class CSlot
+ {
+ public:
+ CSlot();
+ virtual ~CSlot();
+
+ public:
+ BOOL isEnable();
+ void enable();
+ void disable();
+ BOOL isLock();
+ void lock();
+ void unlock();
+ int getPosition();
+ void setPosition(int position);
+ int getNo();
+ void setNo(int no);
+ MaterialsType getType();
+ void setType(MaterialsType type);
+ std::string& getName();
+ void setName(const char* pszName);
+ BOOL isEmpty();
+ CContext* getContext();
+ void setContext(CContext* pContext);
+
+ private:
+ int m_nPosition;
+ int m_nNo;
+ MaterialsType m_materialsType;
+ std::string m_strName;
+ CContext* m_pContext;
+ BOOL m_bEnable;
+ BOOL m_bLock;
+ };
+}
+
diff --git a/SourceCode/Bond/Servo/CVacuumBake.cpp b/SourceCode/Bond/Servo/CVacuumBake.cpp
index 790e3e3..e9a1c9c 100644
--- a/SourceCode/Bond/Servo/CVacuumBake.cpp
+++ b/SourceCode/Bond/Servo/CVacuumBake.cpp
@@ -38,6 +38,16 @@
addPin(SERVO::PinType::OUTPUT, _T("Out"));
}
+ // 必须要实现的虚函数,在此初始化Slot信息
+ void CVacuumBake::initSlots()
+ {
+ m_slot[0].enable();
+ m_slot[0].setPosition(m_nID);
+ m_slot[0].setNo(1);
+ m_slot[0].setName("Slot 1(G1)");
+ m_slot[0].setType(MaterialsType::G1);
+ }
+
void CVacuumBake::onTimer(UINT nTimerid)
{
CEquipment::onTimer(nTimerid);
diff --git a/SourceCode/Bond/Servo/CVacuumBake.h b/SourceCode/Bond/Servo/CVacuumBake.h
index ef0e1ea..4530b42 100644
--- a/SourceCode/Bond/Servo/CVacuumBake.h
+++ b/SourceCode/Bond/Servo/CVacuumBake.h
@@ -15,6 +15,7 @@
virtual void init();
virtual void term();
virtual void initPins();
+ virtual void initSlots();
virtual void onTimer(UINT nTimerid);
virtual void serialize(CArchive& ar);
virtual void getAttributeVector(CAttributeVector& attrubutes);
diff --git a/SourceCode/Bond/Servo/CVcrEventReport.h b/SourceCode/Bond/Servo/CVcrEventReport.h
index 8ff3992..409a1f4 100644
--- a/SourceCode/Bond/Servo/CVcrEventReport.h
+++ b/SourceCode/Bond/Servo/CVcrEventReport.h
@@ -8,7 +8,7 @@
{
public:
CVcrEventReport();
- ~CVcrEventReport();
+ virtual ~CVcrEventReport();
public:
std::string& getGlassId();
diff --git a/SourceCode/Bond/Servo/Common.h b/SourceCode/Bond/Servo/Common.h
index 8b7e4c0..df10509 100644
--- a/SourceCode/Bond/Servo/Common.h
+++ b/SourceCode/Bond/Servo/Common.h
@@ -60,22 +60,22 @@
#define BTN_ALARM_BKGND_PRESS RGB(133, 203, 225)
/* Equipment ID */
-#define EQ_ID_EFEM 1
-#define EQ_ID_Bonder1 2
-#define EQ_ID_Bonder2 3
-#define EQ_ID_LOADPORT1 4
-#define EQ_ID_LOADPORT2 5
-#define EQ_ID_LOADPORT3 6
-#define EQ_ID_LOADPORT4 7
+#define EQ_ID_LOADPORT1 1
+#define EQ_ID_LOADPORT2 2
+#define EQ_ID_LOADPORT3 3
+#define EQ_ID_LOADPORT4 4
+#define EQ_ID_ARM_TRAY1 5
+#define EQ_ID_ARM_TRAY2 6
+#define EQ_ID_ALIGNER 7
#define EQ_ID_FLIPER 8
#define EQ_ID_VACUUMBAKE 9
-#define EQ_ID_ALIGNER 10
-#define EQ_ID_BAKE_COOLING 11
-#define EQ_ID_MEASUREMENT 12
-#define EQ_ID_ARM 13
-#define EQ_ID_ARM_TRAY1 14
-#define EQ_ID_ARM_TRAY2 15
-#define EQ_ID_OPERATOR_REMOVE 999
+#define EQ_ID_Bonder1 10
+#define EQ_ID_Bonder2 11
+#define EQ_ID_BAKE_COOLING 12
+#define EQ_ID_MEASUREMENT 13
+#define EQ_ID_EFEM 100
+#define EQ_ID_ARM 101
+#define EQ_ID_OPERATOR_REMOVE 102
/* step name */
diff --git a/SourceCode/Bond/Servo/Servo.vcxproj b/SourceCode/Bond/Servo/Servo.vcxproj
index 795cd89..fd45b3b 100644
--- a/SourceCode/Bond/Servo/Servo.vcxproj
+++ b/SourceCode/Bond/Servo/Servo.vcxproj
@@ -206,6 +206,7 @@
<ClInclude Include="CPagePortStatus.h" />
<ClInclude Include="CPortStatusReport.h" />
<ClInclude Include="CRobotTask.h" />
+ <ClInclude Include="CSlot.h" />
<ClInclude Include="HorizontalLine.h" />
<ClInclude Include="JobSlotGrid.h" />
<ClInclude Include="MsgDlg.h" />
@@ -317,6 +318,7 @@
<ClCompile Include="CPagePortStatus.cpp" />
<ClCompile Include="CPortStatusReport.cpp" />
<ClCompile Include="CRobotTask.cpp" />
+ <ClCompile Include="CSlot.cpp" />
<ClCompile Include="HorizontalLine.cpp" />
<ClCompile Include="JobSlotGrid.cpp" />
<ClCompile Include="MsgDlg.cpp" />
diff --git a/SourceCode/Bond/Servo/Servo.vcxproj.filters b/SourceCode/Bond/Servo/Servo.vcxproj.filters
index 368a060..9823fe9 100644
--- a/SourceCode/Bond/Servo/Servo.vcxproj.filters
+++ b/SourceCode/Bond/Servo/Servo.vcxproj.filters
@@ -116,6 +116,7 @@
<ClCompile Include="HorizontalLine.cpp" />
<ClCompile Include="CMyStatusbar.cpp" />
<ClCompile Include="CRobotTask.cpp" />
+ <ClCompile Include="CSlot.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="AlarmManager.h" />
@@ -231,6 +232,7 @@
<ClInclude Include="HorizontalLine.h" />
<ClInclude Include="CMyStatusbar.h" />
<ClInclude Include="CRobotTask.h" />
+ <ClInclude Include="CSlot.h" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="Servo.rc" />
diff --git a/SourceCode/Bond/Servo/ServoCommo.h b/SourceCode/Bond/Servo/ServoCommo.h
index 5cfc30d..2444aca 100644
--- a/SourceCode/Bond/Servo/ServoCommo.h
+++ b/SourceCode/Bond/Servo/ServoCommo.h
@@ -27,9 +27,9 @@
};
enum class MaterialsType {
- G1 = 0,
- G2 = 1,
- G1G2 = 2
+ G1 = 1,
+ G2 = 2,
+ G1G2 = 3
};
typedef MaterialsType CassetteType;
--
Gitblit v1.9.3