LAPTOP-SNT8I5JK\Boounion
2025-05-28 5b6e648814aa829706cb94e6c44766ee9a6d9f12
1.机器槽位信息设计(CSlot)
已添加2个文件
已修改58个文件
420 ■■■■ 文件已修改
SourceCode/Bond/Servo/CAligner.cpp 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CAligner.h 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CArm.cpp 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CArm.h 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CArmTray.cpp 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CArmTray.h 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CAttribute.h 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CAttributeVector.h 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CBakeCooling.cpp 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CBakeCooling.h 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CBonder.cpp 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CBonder.h 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CEFEM.cpp 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CEFEM.h 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CEqAlarmStep.h 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CEqCassetteCtrlCmdStep.h 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CEqCassetteTransferStateStep.h 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CEqCimMessageClearStep.h 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CEqCimMessageCmdStep.h 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CEqCimModeChangeStep.h 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CEqCurrentRecipeChangeStep.h 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CEqDateTimeSetCmdStep.h 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CEqJobEventStep.h 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CEqModeChangeStep.h 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CEqModeStep.h 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CEqPortChangeStep.h 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CEqProcessStep.h 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CEqReadIntStep.h 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CEqReadStep.h 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CEqStatusStep.h 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CEqVCREnableStep.h 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CEqVcrEventStep.h 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CEqWriteStep.h 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CEquipment.cpp 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CEquipment.h 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CFliper.cpp 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CFliper.h 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CGlassPool.h 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CJobDataA.h 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CJobDataB.h 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CJobDataC.h 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CJobDataS.h 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CLoadPort.cpp 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CLoadPort.h 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CMaster.h 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CMeasurement.cpp 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CMeasurement.h 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CPath.h 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CPortStatusReport.h 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CProcessData.h 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CRobotTask.h 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CSlot.cpp 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CSlot.h 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CVacuumBake.cpp 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CVacuumBake.h 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CVcrEventReport.h 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/Common.h 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/Servo.vcxproj 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/Servo.vcxproj.filters 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/ServoCommo.h 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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);
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);
SourceCode/Bond/Servo/CArm.cpp
@@ -34,6 +34,12 @@
    }
    // å¿…须要实现的虚函数,在此初始化Slot信息
    void CArm::initSlots()
    {
    }
    void CArm::onTimer(UINT nTimerid)
    {
        CEquipment::onTimer(nTimerid);
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);
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);
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);
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();
SourceCode/Bond/Servo/CAttributeVector.h
@@ -8,7 +8,7 @@
    {
    public:
        CAttributeVector();
        ~CAttributeVector();
        virtual ~CAttributeVector();
    public:
        void addAttribute(CAttribute* pAttribute, BOOL bReplace = FALSE);
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);
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);
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);
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);
SourceCode/Bond/Servo/CEFEM.cpp
@@ -628,6 +628,12 @@
        }
    }
    // å¿…须要实现的虚函数,在此初始化Slot信息
    void CEFEM::initSlots()
    {
    }
    void CEFEM::onTimer(UINT nTimerid)
    {
        CEquipment::onTimer(nTimerid);
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);
SourceCode/Bond/Servo/CEqAlarmStep.h
@@ -7,7 +7,7 @@
    {
    public:
        CEqAlarmStep();
        ~CEqAlarmStep();
        virtual ~CEqAlarmStep();
    public:
        virtual void getAttributeVector(CAttributeVector& attrubutes);
SourceCode/Bond/Servo/CEqCassetteCtrlCmdStep.h
@@ -8,7 +8,7 @@
    {
    public:
        CEqCassetteCtrlCmdStep();
        ~CEqCassetteCtrlCmdStep();
        virtual ~CEqCassetteCtrlCmdStep();
    public:
        void setCtrlCmdDev(int nDev);
SourceCode/Bond/Servo/CEqCassetteTransferStateStep.h
@@ -7,7 +7,7 @@
    {
    public:
        CEqCassetteTransferStateStep();
        ~CEqCassetteTransferStateStep();
        virtual ~CEqCassetteTransferStateStep();
    public:
        virtual void getAttributeVector(CAttributeVector& attrubutes);
SourceCode/Bond/Servo/CEqCimMessageClearStep.h
@@ -7,7 +7,7 @@
    {
    public:
        CEqCimMessageClearStep();
        ~CEqCimMessageClearStep();
        virtual ~CEqCimMessageClearStep();
    public:
        void setClearCimMessageDev(int nDev);
SourceCode/Bond/Servo/CEqCimMessageCmdStep.h
@@ -7,7 +7,7 @@
    {
    public:
        CEqCimMessageCmdStep();
        ~CEqCimMessageCmdStep();
        virtual ~CEqCimMessageCmdStep();
    public:
        void setCimMessageDev(int nDev);
SourceCode/Bond/Servo/CEqCimModeChangeStep.h
@@ -7,7 +7,7 @@
    {
    public:
        CEqCimModeChangeStep();
        ~CEqCimModeChangeStep();
        virtual ~CEqCimModeChangeStep();
    public:
        void setCimModeDev(int nDev);
SourceCode/Bond/Servo/CEqCurrentRecipeChangeStep.h
@@ -7,7 +7,7 @@
    {
    public:
        CEqCurrentRecipeChangeStep();
        ~CEqCurrentRecipeChangeStep();
        virtual ~CEqCurrentRecipeChangeStep();
    public:
        virtual void getAttributeVector(CAttributeVector& attrubutes);
SourceCode/Bond/Servo/CEqDateTimeSetCmdStep.h
@@ -7,7 +7,7 @@
    {
    public:
        CEqDateTimeSetCmdStep();
        ~CEqDateTimeSetCmdStep();
        virtual ~CEqDateTimeSetCmdStep();
    public:
        void setDateTimeDev(int nDev);
SourceCode/Bond/Servo/CEqJobEventStep.h
@@ -8,7 +8,7 @@
    {
    public:
        CEqJobEventStep();
        ~CEqJobEventStep();
        virtual ~CEqJobEventStep();
    public:
        virtual void getAttributeVector(CAttributeVector& attrubutes);
SourceCode/Bond/Servo/CEqModeChangeStep.h
@@ -7,7 +7,7 @@
    {
    public:
        CEqModeChangeStep();
        ~CEqModeChangeStep();
        virtual ~CEqModeChangeStep();
    public:
        void setEqModeDev(int nDev);
SourceCode/Bond/Servo/CEqModeStep.h
@@ -7,7 +7,7 @@
    {
    public:
        CEqModeStep();
        ~CEqModeStep();
        virtual ~CEqModeStep();
    public:
        virtual void getAttributeVector(CAttributeVector& attrubutes);
SourceCode/Bond/Servo/CEqPortChangeStep.h
@@ -6,7 +6,7 @@
    {
    public:
        CEqPortChangeStep();
        ~CEqPortChangeStep();
        virtual ~CEqPortChangeStep();
    public:
        virtual void getAttributeVector(CAttributeVector& attrubutes);
SourceCode/Bond/Servo/CEqProcessStep.h
@@ -8,7 +8,7 @@
    {
    public:
        CEqProcessStep();
        ~CEqProcessStep();
        virtual ~CEqProcessStep();
    public:
        void getAttributeVector(CAttributeVector& attrubutes);
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);
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);
SourceCode/Bond/Servo/CEqStatusStep.h
@@ -10,7 +10,7 @@
    {
    public:
        CEqStatusStep();
        ~CEqStatusStep();
        virtual ~CEqStatusStep();
    public:
        virtual void getAttributeVector(CAttributeVector& attrubutes);
SourceCode/Bond/Servo/CEqVCREnableStep.h
@@ -7,7 +7,7 @@
    {
    public:
        CEqVCREnableStep();
        ~CEqVCREnableStep();
        virtual ~CEqVCREnableStep();
    public:
        void setEqVCRModeDev(int nDev);
SourceCode/Bond/Servo/CEqVcrEventStep.h
@@ -8,7 +8,7 @@
    {
    public:
        CEqVcrEventStep();
        ~CEqVcrEventStep();
        virtual ~CEqVcrEventStep();
    public:
        virtual void getAttributeVector(CAttributeVector& attrubutes);
SourceCode/Bond/Servo/CEqWriteStep.h
@@ -13,7 +13,7 @@
    {
    public:
        CEqWriteStep();
        ~CEqWriteStep();
        virtual ~CEqWriteStep();
    public:
        void setDataDev(int nDev);
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);
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;
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);
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);
SourceCode/Bond/Servo/CGlassPool.h
@@ -9,7 +9,7 @@
    {
    public:
        CGlassPool();
        ~CGlassPool();
        virtual ~CGlassPool();
    public:
        void initPool();
SourceCode/Bond/Servo/CJobDataA.h
@@ -8,7 +8,7 @@
    {
    public:
        CJobDataA();
        ~CJobDataA();
        virtual ~CJobDataA();
    public:
        short getPortNo();
SourceCode/Bond/Servo/CJobDataB.h
@@ -8,7 +8,7 @@
    public:
        CJobDataB();
        CJobDataB::CJobDataB(CJobDataB&& other) noexcept;
        ~CJobDataB();
        virtual ~CJobDataB();
    public:
        void copy(CJobDataB* pScr);
SourceCode/Bond/Servo/CJobDataC.h
@@ -6,7 +6,7 @@
    {
    public:
        CJobDataC();
        ~CJobDataC();
        virtual ~CJobDataC();
    public:
        int getCassetteSequenceNo();
SourceCode/Bond/Servo/CJobDataS.h
@@ -9,7 +9,7 @@
    public:
        CJobDataS();
        CJobDataS::CJobDataS(CJobDataS&& other) noexcept;
        ~CJobDataS();
        virtual ~CJobDataS();
    public:
        void copy(CJobDataS* pScr);
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();
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);
SourceCode/Bond/Servo/CMaster.h
@@ -43,7 +43,7 @@
    {
    public:
        CMaster();
        ~CMaster();
        virtual ~CMaster();
    public:
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);
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);
SourceCode/Bond/Servo/CPath.h
@@ -7,7 +7,7 @@
    public:
        CPath();
        CPath(unsigned int nSiteId);
        ~CPath();
        virtual ~CPath();
    public:
        void getDescription(std::string& strOut);
SourceCode/Bond/Servo/CPortStatusReport.h
@@ -9,7 +9,7 @@
    {
    public:
        CPortStatusReport();
        ~CPortStatusReport();
        virtual ~CPortStatusReport();
    public:
        void copyEx(CPortStatusReport& other);
SourceCode/Bond/Servo/CProcessData.h
@@ -8,7 +8,7 @@
    {
    public:
        CProcessData();
        ~CProcessData();
        virtual ~CProcessData();
    public:
        std::string& getGlassId();
SourceCode/Bond/Servo/CRobotTask.h
@@ -7,7 +7,7 @@
    {
    public:
        CRobotTask();
        ~CRobotTask();
        virtual ~CRobotTask();
    public:
        std::string& getId();
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;
    }
}
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;
    };
}
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);
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);
SourceCode/Bond/Servo/CVcrEventReport.h
@@ -8,7 +8,7 @@
    {
    public:
        CVcrEventReport();
        ~CVcrEventReport();
        virtual ~CVcrEventReport();
    public:
        std::string& getGlassId();
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 */
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" />
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" />
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;