1.开始编写流程控件模块,添加LoadPort, 烘烤等其它机器。
2.实现pin接口,准备加入到各个机器中;
已添加16个文件
已修改13个文件
890 ■■■■■ 文件已修改
SourceCode/Bond/Servo/CAligner.cpp 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CAligner.h 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CBakeCooling.cpp 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CBakeCooling.h 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CBonder.cpp 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CBonder.h 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CEFEM.cpp 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CEFEM.h 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CEquipment.cpp 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CEquipment.h 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CFliper.cpp 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CFliper.h 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CLoadPort.cpp 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CLoadPort.h 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CMaster.cpp 195 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CMaster.h 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CMeasurement.cpp 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CMeasurement.h 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CPanelAttributes.cpp 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CPanelEquipment.cpp 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CPanelMaster.cpp 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CPin.cpp 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CPin.h 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CSample.cpp 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CSample.h 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CVacuumBake.cpp 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CVacuumBake.h 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/Servo.vcxproj 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/Servo.vcxproj.filters 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CAligner.cpp
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,47 @@
#include "stdafx.h"
#include "CAligner.h"
namespace SERVO {
    CAligner::CAligner() : CEquipment()
    {
    }
    CAligner::~CAligner()
    {
    }
    const char* CAligner::getClassName()
    {
        static char* pszName = "CAligner";
        return pszName;
    }
    void CAligner::init()
    {
        CEquipment::init();
    }
    void CAligner::term()
    {
        CEquipment::term();
    }
    // å¿…须要实现的虚函数,在此初始化Pin列表
    void CAligner::initPins()
    {
        // åŠ å…¥Pin初始化代码
        LOGI("<CAligner>initPins");
    }
    void CAligner::onTimer(UINT nTimerid)
    {
        CEquipment::onTimer(nTimerid);
    }
    void CAligner::serialize(CArchive& ar)
    {
        CEquipment::serialize(ar);
    }
}
SourceCode/Bond/Servo/CAligner.h
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
#pragma once
#include "CEquipment.h"
namespace SERVO {
    class CAligner :
        public CEquipment
    {
    public:
        CAligner();
        virtual ~CAligner();
    public:
        virtual const char* getClassName();
        virtual void init();
        virtual void term();
        virtual void initPins();
        virtual void onTimer(UINT nTimerid);
        virtual void serialize(CArchive& ar);
    };
}
SourceCode/Bond/Servo/CBakeCooling.cpp
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,47 @@
#include "stdafx.h"
#include "CBakeCooling.h"
namespace SERVO {
    CBakeCooling::CBakeCooling() : CEquipment()
    {
    }
    CBakeCooling::~CBakeCooling()
    {
    }
    const char* CBakeCooling::getClassName()
    {
        static char* pszName = "CBakeCooling";
        return pszName;
    }
    void CBakeCooling::init()
    {
        CEquipment::init();
    }
    void CBakeCooling::term()
    {
        CEquipment::term();
    }
    // å¿…须要实现的虚函数,在此初始化Pin列表
    void CBakeCooling::initPins()
    {
        // åŠ å…¥Pin初始化代码
        LOGI("<CBakeCooling>initPins");
    }
    void CBakeCooling::onTimer(UINT nTimerid)
    {
        CEquipment::onTimer(nTimerid);
    }
    void CBakeCooling::serialize(CArchive& ar)
    {
        CEquipment::serialize(ar);
    }
}
SourceCode/Bond/Servo/CBakeCooling.h
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
#pragma once
#include "CEquipment.h"
namespace SERVO {
    class CBakeCooling :
        public CEquipment
    {
    public:
        CBakeCooling();
        virtual ~CBakeCooling();
    public:
        virtual const char* getClassName();
        virtual void init();
        virtual void term();
        virtual void initPins();
        virtual void onTimer(UINT nTimerid);
        virtual void serialize(CArchive& ar);
    };
}
SourceCode/Bond/Servo/CBonder.cpp
@@ -1,8 +1,9 @@
#include "stdafx.h"
#include "CBonder.h"
namespace SERVO {
    CBonder::CBonder()
    CBonder::CBonder() : CEquipment()
    {
    }
@@ -28,6 +29,13 @@
        CEquipment::term();
    }
    // å¿…须要实现的虚函数,在此初始化Pin列表
    void CBonder::initPins()
    {
        // åŠ å…¥Pin初始化代码
        LOGI("<CBonder>initPins");
    }
    void CBonder::onTimer(UINT nTimerid)
    {
        CEquipment::onTimer(nTimerid);
SourceCode/Bond/Servo/CBonder.h
@@ -1,18 +1,20 @@
#pragma once
#include "CEquipment.h"
namespace SERVO {
    class CBonder :
        public CEquipment
    {
    public:
        CBonder();
        ~CBonder();
        virtual ~CBonder();
    public:
        virtual const char* getClassName();
        virtual void init();
        virtual void term();
        virtual void initPins();
        virtual void onTimer(UINT nTimerid);
        virtual void serialize(CArchive& ar);
    };
SourceCode/Bond/Servo/CEFEM.cpp
@@ -1,8 +1,9 @@
#include "stdafx.h"
#include "CEFEM.h"
namespace SERVO {
    CEFEM::CEFEM()
    CEFEM::CEFEM() : CEquipment()
    {
    }
@@ -28,6 +29,13 @@
        CEquipment::term();
    }
    // å¿…须要实现的虚函数,在此初始化Pin列表
    void CEFEM::initPins()
    {
        // åŠ å…¥Pin初始化代码
        LOGI("<CEFEM>initPins");
    }
    void CEFEM::onTimer(UINT nTimerid)
    {
        CEquipment::onTimer(nTimerid);
SourceCode/Bond/Servo/CEFEM.h
@@ -1,18 +1,20 @@
#pragma once
#include "CEquipment.h"
namespace SERVO {
    class CEFEM :
        public CEquipment
    {
    public:
        CEFEM();
        ~CEFEM();
        virtual ~CEFEM();
    public:
        virtual const char* getClassName();
        virtual void init();
        virtual void term();
        virtual void initPins();
        virtual void onTimer(UINT nTimerid);
        virtual void serialize(CArchive& ar);
        virtual void getAttributeVector(CAttributeVector& attrubutes);
SourceCode/Bond/Servo/CEquipment.cpp
@@ -95,6 +95,7 @@
    void CEquipment::init()
    {
        initPins();
        for (auto item : m_mapStep) {
            item.second->init();
        }
@@ -372,4 +373,10 @@
        if (index >= VCR_MAX) return FALSE;
        return m_bVCREnable[index];
    }
    int CEquipment::recvSample(CPin* pPin, CSample* pSample)
    {
        LOGI("<CEquipment>recvSample, pin:%s", pPin->getName().c_str());
        return 0;
    }
}
SourceCode/Bond/Servo/CEquipment.h
@@ -1,6 +1,8 @@
#pragma once
#include "Log.h"
#include "CCLinkIEControl.h"
#include "CSample.h"
#include "CPin.h"
#include "CEqModeStep.h"
#include "CEqStatusStep.h"
#include "CEqAlarmStep.h"
@@ -75,9 +77,11 @@
        std::map<unsigned int, CStep*>& getSteps();
        virtual void init();
        virtual void term();
        virtual void initPins() = 0;
        virtual void onTimer(UINT nTimerid);
        virtual void serialize(CArchive& ar);
        virtual void onReceiveLBData(const char* pszData, size_t size);
        virtual int recvSample(CPin* pPin, CSample* pSample);
    // ä»¥ä¸‹ä¸ºä»ŽCC-Link读取到的Bit标志位检测函数
SourceCode/Bond/Servo/CFliper.cpp
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,47 @@
#include "stdafx.h"
#include "CFliper.h"
namespace SERVO {
    CFliper::CFliper() : CEquipment()
    {
    }
    CFliper::~CFliper()
    {
    }
    const char* CFliper::getClassName()
    {
        static char* pszName = "CFliper";
        return pszName;
    }
    void CFliper::init()
    {
        CEquipment::init();
    }
    void CFliper::term()
    {
        CEquipment::term();
    }
    // å¿…须要实现的虚函数,在此初始化Pin列表
    void CFliper::initPins()
    {
        // åŠ å…¥Pin初始化代码
        LOGI("<CFliper>initPins");
    }
    void CFliper::onTimer(UINT nTimerid)
    {
        CEquipment::onTimer(nTimerid);
    }
    void CFliper::serialize(CArchive& ar)
    {
        CEquipment::serialize(ar);
    }
}
SourceCode/Bond/Servo/CFliper.h
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
#pragma once
#include "CEquipment.h"
namespace SERVO {
    class CFliper :
        public CEquipment
    {
    public:
        CFliper();
        virtual ~CFliper();
    public:
        virtual const char* getClassName();
        virtual void init();
        virtual void term();
        virtual void initPins();
        virtual void onTimer(UINT nTimerid);
        virtual void serialize(CArchive& ar);
    };
}
SourceCode/Bond/Servo/CLoadPort.cpp
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,48 @@
#include "stdafx.h"
#include "CLoadPort.h"
namespace SERVO {
    CLoadPort::CLoadPort() : CEquipment()
    {
    }
    CLoadPort::~CLoadPort()
    {
    }
    const char* CLoadPort::getClassName()
    {
        static char* pszName = "CLoadPort";
        return pszName;
    }
    void CLoadPort::init()
    {
        CEquipment::init();
    }
    void CLoadPort::term()
    {
        CEquipment::term();
    }
    // å¿…须要实现的虚函数,在此初始化Pin列表
    void CLoadPort::initPins()
    {
        // åŠ å…¥Pin初始化代码
        LOGI("<CLoadPort>initPins");
    }
    void CLoadPort::onTimer(UINT nTimerid)
    {
        CEquipment::onTimer(nTimerid);
    }
    void CLoadPort::serialize(CArchive& ar)
    {
        CEquipment::serialize(ar);
    }
}
SourceCode/Bond/Servo/CLoadPort.h
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
#pragma once
#include "CEquipment.h"
namespace SERVO {
    class CLoadPort :
        public CEquipment
    {
    public:
        CLoadPort();
        virtual ~CLoadPort();
    public:
        virtual const char* getClassName();
        virtual void init();
        virtual void term();
        virtual void initPins();
        virtual void onTimer(UINT nTimerid);
        virtual void serialize(CArchive& ar);
    };
}
SourceCode/Bond/Servo/CMaster.cpp
@@ -73,18 +73,9 @@
        // åˆå§‹åŒ–添加各子设备
        addEFEM(listener);
        addBonder(0, listener);
        addBonder(1, listener);
        /*
        {
            CBonder* pBonder = new CBonder();
            pBonder->setName("Bonder 1");
            pBonder->setDescription("Bonder 1.");
            pBonder->setReadBitBlock(0x4600, 0x4bff);
            pBonder->setStation(1, 3);
            addEquipment(pBonder);
            LOGE("已添加“Bonder 1”.");
        }
        */
        // å®šæ—¶å™¨
        g_pMaster = this;
@@ -105,7 +96,7 @@
        return 0;
    }
    int CMaster::addEquipment(CEquipment* pEquipment)
    int CMaster::addToEquipmentList(CEquipment* pEquipment)
    {
        EquipmentListener listener;
        listener.onAlive = [&](void* pEquipment, BOOL bAlive) -> void {
@@ -141,6 +132,26 @@
        return nullptr;
    }
    /* æ·»åŠ LoadPort1
     * index -- 0~3
     */
    int CMaster::addLoadPort(int index, StepListener& listener)
    {
        ASSERT(index == 0 || index == 1 || index == 2 || index == 3);
        char szName[62];
        sprintf_s(szName, 64, "LoadPort %d", index + 1);
        CLoadPort* pEquipment = new CLoadPort();
        pEquipment->setName(szName);
        pEquipment->setDescription(szName);
        addToEquipmentList(pEquipment);
        pEquipment->init();
        LOGE("已添加“%s”.", pEquipment->getName().c_str());
        return 0;
    }
    int CMaster::addEFEM(StepListener& listener)
    {
        CEFEM* pEquipment = new CEFEM();
@@ -150,7 +161,7 @@
        pEquipment->setDescription("EFEM(ROBOT).");
        pEquipment->setReadBitBlock(0x4000, 0x45ff);
        pEquipment->setStation(0, 255);
        addEquipment(pEquipment);
        addToEquipmentList(pEquipment);
        // æ·»åŠ  step
@@ -229,7 +240,7 @@
            pStep->setName(STEP_PROCESS);
            pStep->setListener(listener);
            pStep->setWriteSignalDev(0x37);
            pStep->setProcessDev(0x1864);
            pStep->setProcessDev(0x5864);
            if (pEquipment->addStep(0x367, pStep) != 0) {
                delete pStep;
            }
@@ -300,6 +311,162 @@
        return 0;
    }
    /* æ·»åŠ bonder1 æˆ– bonder2
     * index -- 0, bonder1
     * index -- 1, bonder2
     */
    int CMaster::addBonder(int index, StepListener& listener)
    {
        ASSERT(index == 0 || index == 1);
        CBonder* pEquipment = new CBonder();
        pEquipment->setName(index == 0 ? "Bonder 1" : "Bonder 2");
        pEquipment->setDescription(index == 0 ? "Bonder 1." : "Bonder 2.");
        pEquipment->setStation(1, index == 0 ? 3 : 4);
        pEquipment->setReadBitBlock(index == 0 ? 0x4600 : 0x4c00,
            index == 0 ? 0x4c00 : 0x5200);
        addToEquipmentList(pEquipment);
        // æ·»åŠ  step
        {
            CEqModeStep* pStep = new CEqModeStep();
            pStep->setName(STEP_MODE);
            pStep->setListener(listener);
            pStep->setWriteSignalDev(index == 0 ? 0x330 : 0x630);
            pStep->setModeDev(index == 0 ? 0x6a8c : 0x848c);
            if (pEquipment->addStep(0x360, pStep) != 0) {
                delete pStep;
            }
        }
        {
            CEqStatusStep* pStep = new CEqStatusStep();
            pStep->setName(STEP_STATUS);
            pStep->setListener(listener);
            pStep->setWriteSignalDev(index == 0 ? 0x331 : 0x631);
            pStep->setStatusDev(index == 0 ? 0x6a68 : 0x8a68);
            if (pEquipment->addStep(0x361, pStep) != 0) {
                delete pStep;
            }
        }
        {
            CEqAlarmStep* pStep = new CEqAlarmStep();
            pStep->setName(STEP_ALARM_BLOCK1);
            pStep->setListener(listener);
            pStep->setWriteSignalDev(index == 0 ? 0x332 : 0x632);
            pStep->setAlarmDev(index == 0 ? 0x6c1d : 0x8c1d);
            if (pEquipment->addStep(0x362, pStep) != 0) {
                delete pStep;
            }
        }
        {
            CEqAlarmStep* pStep = new CEqAlarmStep();
            pStep->setName(STEP_ALARM_BLOCK2);
            pStep->setListener(listener);
            pStep->setWriteSignalDev(index == 0 ? 0x333 : 0x633);
            pStep->setAlarmDev(index == 0 ? 0x6c4a : 0x8c4a);
            if (pEquipment->addStep(0x363, pStep) != 0) {
                delete pStep;
            }
        }
        {
            CEqAlarmStep* pStep = new CEqAlarmStep();
            pStep->setName(STEP_ALARM_BLOCK3);
            pStep->setListener(listener);
            pStep->setWriteSignalDev(index == 0 ? 0x334 : 0x634);
            pStep->setAlarmDev(index == 0 ? 0x6c77 : 0x8c77);
            if (pEquipment->addStep(0x364, pStep) != 0) {
                delete pStep;
            }
        }
        {
            CEqAlarmStep* pStep = new CEqAlarmStep();
            pStep->setName(STEP_ALARM_BLOCK4);
            pStep->setListener(listener);
            pStep->setWriteSignalDev(index == 0 ? 0x335 : 0x635);
            pStep->setAlarmDev(index == 0 ? 0x6ca4 : 0x8ca4);
            if (pEquipment->addStep(0x365, pStep) != 0) {
                delete pStep;
            }
        }
        {
            CEqAlarmStep* pStep = new CEqAlarmStep();
            pStep->setName(STEP_ALARM_BLOCK5);
            pStep->setListener(listener);
            pStep->setWriteSignalDev(index == 0 ? 0x336 : 0x636);
            pStep->setAlarmDev(index == 0 ? 0x6cd1 : 0x8cd1);
            if (pEquipment->addStep(0x366, pStep) != 0) {
                delete pStep;
            }
        }
        {
            CEqProcessStep* pStep = new CEqProcessStep();
            pStep->setName(STEP_PROCESS);
            pStep->setListener(listener);
            pStep->setWriteSignalDev(index == 0 ? 0x337 : 0x637);
            pStep->setProcessDev(index == 0 ? 0x7864 : 0x9864);
            if (pEquipment->addStep(0x367, pStep) != 0) {
                delete pStep;
            }
        }
        {
            CEqCimModeChangeStep* pStep = new CEqCimModeChangeStep();
            pStep->setName(STEP_CIM_MODE_CHANGE);
            pStep->setListener(listener);
            pStep->setWriteSignalDev(index == 0 ? 0x350 : 0x650);
            pStep->setCimModeDev(index == 0 ? 0x965 : 0x12b5);
            if (pEquipment->addStep(0x350, pStep) != 0) {
                delete pStep;
            }
        }
        {
            CEqCimMessageCmdStep* pStep = new CEqCimMessageCmdStep();
            pStep->setName(STEP_CIM_MESSAGE_CMD);
            pStep->setListener(listener);
            pStep->setWriteSignalDev(index == 0 ? 0x351 : 0x651);
            pStep->setCimMessageDev(index == 0 ? 0x950 : 0x12a0);
            if (pEquipment->addStep(0x351, pStep) != 0) {
                delete pStep;
            }
        }
        {
            CEqCimMessageClearStep* pStep = new CEqCimMessageClearStep();
            pStep->setName(STEP_CIM_MESSAGE_CLEAR);
            pStep->setListener(listener);
            pStep->setWriteSignalDev(index == 0 ? 0x352 : 0x652);
            pStep->setClearCimMessageDev(index == 0 ? 0x963 : 0x12b3);
            if (pEquipment->addStep(0x352, pStep) != 0) {
                delete pStep;
            }
        }
        {
            CEqDateTimeSetCmdStep* pStep = new CEqDateTimeSetCmdStep();
            pStep->setName(STEP_DATETIME_SET_CMD);
            pStep->setListener(listener);
            pStep->setWriteSignalDev(index == 0 ? 0x353 : 0x653);
            pStep->setDateTimeDev(index == 0 ? 0x966 : 0x12b6);
            if (pEquipment->addStep(0x353, pStep) != 0) {
                delete pStep;
            }
        }
        {
            CEqModeChangeStep* pStep = new CEqModeChangeStep();
            pStep->setName(STEP_EQ_MODE_CHANGE);
            pStep->setListener(listener);
            pStep->setWriteSignalDev(index == 0 ? 0x355 : 0x655);
            pStep->setEqModeDev(index == 0 ? 0x96E : 0x12be);
            if (pEquipment->addStep(0x355, pStep) != 0) {
                delete pStep;
            }
        }
        pEquipment->init();
        LOGE("已添加“%s”.", pEquipment->getName().c_str());
        return 0;
    }
    void CMaster::onTimer(UINT nTimerid)
    {
        for (auto item : m_listEquipment) {
SourceCode/Bond/Servo/CMaster.h
@@ -3,6 +3,7 @@
#include "CEquipment.h"
#include "CEFEM.h"
#include "CBonder.h"
#include "CLoadPort.h"
#include "CCLinkIEControl.h"
@@ -32,8 +33,10 @@
        CEquipment* getEquipment(int id);
    private:
        int addEquipment(CEquipment* pEquipment);
        int addToEquipmentList(CEquipment* pEquipment);
        int addLoadPort(int index, StepListener& listener);
        int addEFEM(StepListener& listener);
        int addBonder(int index, StepListener& listener);
    private:
        MasterListener m_listener;
SourceCode/Bond/Servo/CMeasurement.cpp
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,47 @@
#include "stdafx.h"
#include "CMeasurement.h"
namespace SERVO {
    CMeasurement::CMeasurement() : CEquipment()
    {
    }
    CMeasurement::~CMeasurement()
    {
    }
    const char* CMeasurement::getClassName()
    {
        static char* pszName = "CMeasurement";
        return pszName;
    }
    void CMeasurement::init()
    {
        CEquipment::init();
    }
    void CMeasurement::term()
    {
        CEquipment::term();
    }
    // å¿…须要实现的虚函数,在此初始化Pin列表
    void CMeasurement::initPins()
    {
        // åŠ å…¥Pin初始化代码
        LOGI("<CMeasurement>initPins");
    }
    void CMeasurement::onTimer(UINT nTimerid)
    {
        CEquipment::onTimer(nTimerid);
    }
    void CMeasurement::serialize(CArchive& ar)
    {
        CEquipment::serialize(ar);
    }
}
SourceCode/Bond/Servo/CMeasurement.h
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
#pragma once
#include "CEquipment.h"
namespace SERVO {
    class CMeasurement :
        public CEquipment
    {
    public:
        CMeasurement();
        virtual ~CMeasurement();
    public:
        virtual const char* getClassName();
        virtual void init();
        virtual void term();
        virtual void initPins();
        virtual void onTimer(UINT nTimerid);
        virtual void serialize(CArchive& ar);
    };
}
SourceCode/Bond/Servo/CPanelAttributes.cpp
@@ -161,7 +161,7 @@
    y += 8;
    GetDlgItem(IDC_MFCPROPERTYGRID1)->MoveWindow(5, y, rcClient.Width() - 13, rcClient.Height() - 3 - y);
    GetDlgItem(IDC_MFCPROPERTYGRID1)->MoveWindow(5, y, rcClient.Width() - 8, rcClient.Height() - 3 - y);
}
#define ATTRIBUTES_PANEL_MIN_WIDTH        88
SourceCode/Bond/Servo/CPanelEquipment.cpp
@@ -173,7 +173,7 @@
    y += rcItem.Height();
    y += 8;
    GetDlgItem(IDC_MFCPROPERTYGRID1)->MoveWindow(5, y, rcClient.Width() - 13, rcClient.Height() - 3 - y);
    GetDlgItem(IDC_MFCPROPERTYGRID1)->MoveWindow(5, y, rcClient.Width() - 8, rcClient.Height() - 3 - y);
}
#define EQUIPMENT_PANEL_MIN_WIDTH        88
SourceCode/Bond/Servo/CPanelMaster.cpp
@@ -118,7 +118,7 @@
    pItem->GetWindowRect(&rcItem);
    pItem->MoveWindow(12, (rcClient.Height() - rcItem.Height()) / 2, rcClient.Width() - 24, rcItem.Height());
    m_treeCtrl.MoveWindow(5, 5, rcClient.Width() - 13, rcClient.Height() - 10);
    m_treeCtrl.MoveWindow(5, 5, rcClient.Width() - 8, rcClient.Height() - 10);
}
SourceCode/Bond/Servo/CPin.cpp
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,130 @@
#include "stdafx.h"
#include "CPin.h"
#include "CEquipment.h"
namespace SERVO {
    CPin::CPin()
    {
        m_pEquipment = nullptr;
        m_pConnectedPin = nullptr;
    }
    CPin::CPin(CEquipment* pEquipment, PinType type, char* pszName)
    {
        m_type = type;
        m_strName = pszName;
        m_pEquipment = pEquipment;
        m_pConnectedPin = nullptr;
    }
    CPin::~CPin()
    {
    }
    std::string& CPin::getName()
    {
        return m_strName;
    }
    int CPin::getType()
    {
        return m_type;
    }
    BOOL CPin::isConnected()
    {
        return m_pConnectedPin != NULL;
    }
    CPin* CPin::getConnectedPin()
    {
        return m_pConnectedPin;
    }
    CEquipment* CPin::getEquipment()
    {
        return m_pEquipment;
    }
    // æŽ¥å—连接
    // pPin -- æŒ‡å®šè¦è¿žæŽ¥çš„pin
    // è¿”回 >= 0连接成功
    int CPin::accpetConnect(CPin* pPin)
    {
        assert(pPin);
        // æ˜¯å¦å·²ç»è¿žæŽ¥
        if (m_pConnectedPin != NULL) {
            return -1;
        }
        // å¿…须是一个输入一个输出(一个公一个母)
        if (m_type == pPin->getType()) {
            return -2;
        }
        m_pConnectedPin = pPin;
        return 0;
    }
    int CPin::connectPin(CPin* pPin)
    {
        assert(pPin);
        // æ˜¯å¦å·²ç»è¿žæŽ¥
        if (m_pConnectedPin != NULL) {
            return -1;
        }
        // å¿…须是一个输入一个输出(一个公一个母)
        if (m_type == pPin->getType()) {
            return -2;
        }
        // å¯¹æ–¹æŽ¥å—连接?
        int nRet = pPin->accpetConnect(this);
        if (nRet < 0) {
            return nRet;
        }
        m_pConnectedPin = pPin;
        return 0;
    }
    int CPin::disconnect()
    {
        if (m_pConnectedPin == NULL) {
            return -1;
        }
        assert(m_pConnectedPin->m_pConnectedPin == this);
        m_pConnectedPin->m_pConnectedPin = NULL;
        m_pConnectedPin = NULL;
        return 0;
    }
    int CPin::sendSample(CSample* pSample)
    {
        if (m_pConnectedPin != NULL) {
            m_pConnectedPin->recvSample(pSample);
        }
        return 0;
    }
    int CPin::recvSample(CSample* pSample)
    {
        assert(m_pEquipment);
        m_pEquipment->recvSample(this, pSample);
        return 0;
    }
}
SourceCode/Bond/Servo/CPin.h
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
#pragma once
#include "CSample.h"
namespace SERVO {
    // PIN类型
    enum PinType {
        OUTPUT = 0,
        INPUT = 1,
    };
    class CEquipment;
    class CPin
    {
    public:
        CPin();
        CPin(CEquipment* pEquipment, PinType type, char* pszName);
        virtual ~CPin();
    public:
        virtual std::string& getName();
        int getType();
        virtual int disconnect();
        virtual int accpetConnect(CPin* pPin);
        virtual int connectPin(CPin* pPin);
        virtual BOOL isConnected();
        virtual CPin* getConnectedPin();
        virtual CEquipment* getEquipment();
    public:
        int recvSample(CSample* pSample);
        int sendSample(CSample* pSample);
    private:
        std::string m_strName;
        PinType m_type;
        CEquipment* m_pEquipment;
        CPin* m_pConnectedPin;
    };
}
SourceCode/Bond/Servo/CSample.cpp
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
#include "stdafx.h"
#include "CSample.h"
namespace SERVO {
    CSample::CSample()
    {
    }
    CSample::~CSample()
    {
    }
}
SourceCode/Bond/Servo/CSample.h
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
#pragma once
namespace SERVO {
    class CSample
    {
    public:
        CSample();
        virtual ~CSample();
    };
}
SourceCode/Bond/Servo/CVacuumBake.cpp
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,47 @@
#include "stdafx.h"
#include "CVacuumBake.h"
namespace SERVO {
    CVacuumBake::CVacuumBake() : CEquipment()
    {
    }
    CVacuumBake::~CVacuumBake()
    {
    }
    const char* CVacuumBake::getClassName()
    {
        static char* pszName = "CVacuumBake";
        return pszName;
    }
    void CVacuumBake::init()
    {
        CEquipment::init();
    }
    void CVacuumBake::term()
    {
        CEquipment::term();
    }
    // å¿…须要实现的虚函数,在此初始化Pin列表
    void CVacuumBake::initPins()
    {
        // åŠ å…¥Pin初始化代码
        LOGI("<CVacuumBake>initPins");
    }
    void CVacuumBake::onTimer(UINT nTimerid)
    {
        CEquipment::onTimer(nTimerid);
    }
    void CVacuumBake::serialize(CArchive& ar)
    {
        CEquipment::serialize(ar);
    }
}
SourceCode/Bond/Servo/CVacuumBake.h
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
#pragma once
#include "CEquipment.h"
namespace SERVO {
    class CVacuumBake :
        public CEquipment
    {
    public:
        CVacuumBake();
        virtual ~CVacuumBake();
    public:
        virtual const char* getClassName();
        virtual void init();
        virtual void term();
        virtual void initPins();
        virtual void onTimer(UINT nTimerid);
        virtual void serialize(CArchive& ar);
    };
}
SourceCode/Bond/Servo/Servo.vcxproj
@@ -199,8 +199,10 @@
    <ClInclude Include="AlarmManager.h" />
    <ClInclude Include="ApredTreeCtrl2.h" />
    <ClInclude Include="BlButton.h" />
    <ClInclude Include="CAligner.h" />
    <ClInclude Include="CAttribute.h" />
    <ClInclude Include="CAttributeVector.h" />
    <ClInclude Include="CBakeCooling.h" />
    <ClInclude Include="CBonder.h" />
    <ClInclude Include="CCLinkPerformance\CCLinkIEControl.h" />
    <ClInclude Include="CCLinkPerformance\PerformanceMelsec.h" />
@@ -214,11 +216,17 @@
    <ClInclude Include="CEqProcessStep.h" />
    <ClInclude Include="CEqStatusStep.h" />
    <ClInclude Include="CEqVCREnableStep.h" />
    <ClInclude Include="CFliper.h" />
    <ClInclude Include="CLoadPort.h" />
    <ClInclude Include="CMeasurement.h" />
    <ClInclude Include="CPanelAttributes.h" />
    <ClInclude Include="CPanelEquipment.h" />
    <ClInclude Include="CPanelMaster.h" />
    <ClInclude Include="CPin.h" />
    <ClInclude Include="CReadStep.h" />
    <ClInclude Include="CSample.h" />
    <ClInclude Include="CStep.h" />
    <ClInclude Include="CVacuumBake.h" />
    <ClInclude Include="CWriteStep.h" />
    <ClInclude Include="DevicePropertyDlg.h" />
    <ClInclude Include="CEFEM.h" />
@@ -251,8 +259,10 @@
    <ClCompile Include="AlarmManager.cpp" />
    <ClCompile Include="ApredTreeCtrl2.cpp" />
    <ClCompile Include="BlButton.cpp" />
    <ClCompile Include="CAligner.cpp" />
    <ClCompile Include="CAttribute.cpp" />
    <ClCompile Include="CAttributeVector.cpp" />
    <ClCompile Include="CBakeCooling.cpp" />
    <ClCompile Include="CBonder.cpp" />
    <ClCompile Include="CCLinkPerformance\CCLinkIEControl.cpp" />
    <ClCompile Include="CCLinkPerformance\PerformanceMelsec.cpp" />
@@ -266,11 +276,17 @@
    <ClCompile Include="CEqProcessStep.cpp" />
    <ClCompile Include="CEqStatusStep.cpp" />
    <ClCompile Include="CEqVCREnableStep.cpp" />
    <ClCompile Include="CFliper.cpp" />
    <ClCompile Include="CLoadPort.cpp" />
    <ClCompile Include="CMeasurement.cpp" />
    <ClCompile Include="CPanelAttributes.cpp" />
    <ClCompile Include="CPanelEquipment.cpp" />
    <ClCompile Include="CPanelMaster.cpp" />
    <ClCompile Include="CPin.cpp" />
    <ClCompile Include="CReadStep.cpp" />
    <ClCompile Include="CSample.cpp" />
    <ClCompile Include="CStep.cpp" />
    <ClCompile Include="CVacuumBake.cpp" />
    <ClCompile Include="CWriteStep.cpp" />
    <ClCompile Include="DevicePropertyDlg.cpp" />
    <ClCompile Include="CEFEM.cpp" />
SourceCode/Bond/Servo/Servo.vcxproj.filters
@@ -58,6 +58,14 @@
    <ClCompile Include="CEqCimMessageClearStep.cpp" />
    <ClCompile Include="CEqDateTimeSetCmdStep.cpp" />
    <ClCompile Include="CEqVCREnableStep.cpp" />
    <ClCompile Include="CPin.cpp" />
    <ClCompile Include="CSample.cpp" />
    <ClCompile Include="CLoadPort.cpp" />
    <ClCompile Include="CAligner.cpp" />
    <ClCompile Include="CFliper.cpp" />
    <ClCompile Include="CMeasurement.cpp" />
    <ClCompile Include="CBakeCooling.cpp" />
    <ClCompile Include="CVacuumBake.cpp" />
  </ItemGroup>
  <ItemGroup>
    <ClInclude Include="AlarmManager.h" />
@@ -114,6 +122,14 @@
    <ClInclude Include="CEqCimMessageClearStep.h" />
    <ClInclude Include="CEqDateTimeSetCmdStep.h" />
    <ClInclude Include="CEqVCREnableStep.h" />
    <ClInclude Include="CPin.h" />
    <ClInclude Include="CSample.h" />
    <ClInclude Include="CLoadPort.h" />
    <ClInclude Include="CAligner.h" />
    <ClInclude Include="CFliper.h" />
    <ClInclude Include="CMeasurement.h" />
    <ClInclude Include="CBakeCooling.h" />
    <ClInclude Include="CVacuumBake.h" />
  </ItemGroup>
  <ItemGroup>
    <ResourceCompile Include="Servo.rc" />