LAPTOP-SNT8I5JK\Boounion
2025-04-09 bd30f028a163c7293620064fc98744dacd41ceae
1.CassetteControlCommand(cassette控制指令下发,测试页面)
已添加6个文件
已修改15个文件
444 ■■■■■ 文件已修改
SourceCode/Bond/Servo/CEFEM.cpp 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CEFEM.h 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CEqCassetteCtrlCmdStep.cpp 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CEqCassetteCtrlCmdStep.h 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CEquipment.cpp 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CEquipment.h 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CJobDataB.cpp 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CJobDataB.h 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CLoadPort.cpp 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CLoadPort.h 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CMaster.cpp 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CPageCassetteCtrlCmd.cpp 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CPageCassetteCtrlCmd.h 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CPageGraph2.cpp 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CStep.cpp 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CStep.h 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/Common.h 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/Servo.rc 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/Servo.vcxproj 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/Servo.vcxproj.filters 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/resource.h 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CEFEM.cpp
@@ -36,6 +36,29 @@
        LOGI("<CEFEM>initPins");
    }
    int CEFEM::onStepEvent(CStep* pStep, int code)
    {
        if (code == STEP_EVENT_READDATA) {
            if (isCassetteTransferStateStep(pStep)) {
                SERVO::CEqCassetteTransferStateStep* pEqCassetteStep = (SERVO::CEqCassetteTransferStateStep*)pStep;
                int id = pEqCassetteStep->getID();
                if (id == STEP_ID_PORT1_CASSETTIE_EMPTY) {
                }
/*
    #define STEP_ID_PORT1_CASSETTIE_LOAD_READY        0x420
    #define STEP_ID_PORT1_CASSETTIE_LOADED            0x428
    #define STEP_ID_PORT1_CASSETTIE_INUSE            0x430
    #define STEP_ID_PORT1_CASSETTIE_UNLOAD_READY    0x438
    #define STEP_ID_PORT1_CASSETTIE_BLOCKED            0x440
*/
            }
        }
        return 0;
    }
    void CEFEM::onTimer(UINT nTimerid)
    {
        CEquipment::onTimer(nTimerid);
SourceCode/Bond/Servo/CEFEM.h
@@ -15,6 +15,7 @@
        virtual void init();
        virtual void term();
        virtual void initPins();
        virtual int onStepEvent(CStep* pStep, int code);
        virtual void onTimer(UINT nTimerid);
        virtual void serialize(CArchive& ar);
        virtual void getAttributeVector(CAttributeVector& attrubutes);
SourceCode/Bond/Servo/CEqCassetteCtrlCmdStep.cpp
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,49 @@
#include "stdafx.h"
#include "CEqCassetteCtrlCmdStep.h"
namespace SERVO {
    CEqCassetteCtrlCmdStep::CEqCassetteCtrlCmdStep() : CWriteStep()
    {
        m_nCtrlCmdDev = 0;
    }
    CEqCassetteCtrlCmdStep::~CEqCassetteCtrlCmdStep()
    {
    }
    void CEqCassetteCtrlCmdStep::setCtrlCmdDev(int nDev)
    {
        m_nCtrlCmdDev = nDev;
    }
    int CEqCassetteCtrlCmdStep::sendCtrlCmd(short cmd,
        short* jobExistence,
        int jobExistenceSize,
        short slotProcess,
        short jopCount,
        CJobDataB* pJobDataB)
    {
        ASSERT(jobExistenceSize == 12);
        ASSERT(pJobDataB);
        char szBuffer[1024] = { 0 };
        memcpy(&szBuffer[0], &cmd, sizeof(short));
        memcpy(&szBuffer[2], jobExistence, sizeof(short) * jobExistenceSize);
        memcpy(&szBuffer[26], &slotProcess, sizeof(short));
        memcpy(&szBuffer[36], &jopCount, sizeof(short));
        int nLen = pJobDataB->serialize(&szBuffer[38], 1024 - 38);
        return writeData(m_nCtrlCmdDev, (const char*)szBuffer, 38 + nLen);
    }
    void CEqCassetteCtrlCmdStep::getAttributeVector(CAttributeVector& attrubutes)
    {
        CWriteStep::getAttributeVector(attrubutes);
        std::string strTemp;
        attrubutes.addAttribute(new CAttribute("Control Command Dev",
            ("W" + CToolUnits::toHexString(m_nCtrlCmdDev, strTemp)).c_str(), ""));
    }
}
SourceCode/Bond/Servo/CEqCassetteCtrlCmdStep.h
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
#pragma once
#include "CWriteStep.h"
#include "CJobDataB.h"
namespace SERVO {
    class CEqCassetteCtrlCmdStep : public CWriteStep
    {
    public:
        CEqCassetteCtrlCmdStep();
        ~CEqCassetteCtrlCmdStep();
    public:
        void setCtrlCmdDev(int nDev);
        int sendCtrlCmd(short cmd,
            short* jobExistence,
            int jobExistenceSize,
            short slotProcess,
            short jopCount,
            CJobDataB* pJobDataB);
        void getAttributeVector(CAttributeVector& attrubutes);
    private:
        int m_nCtrlCmdDev;
    };
}
SourceCode/Bond/Servo/CEquipment.cpp
@@ -121,6 +121,7 @@
        auto iter = m_mapStep.find(addr);
        if (iter != m_mapStep.end()) return -1;
        pStep->setEquipment(this);
        pStep->setID(addr);
        pStep->setCcLink(m_pCclink);
        m_mapStep[addr] = pStep;
        return 0;
@@ -742,4 +743,9 @@
        return CToolUnits::startsWith(pStep->getName(), STEP_ALARM_START);
    }
    bool CEquipment::isCassetteTransferStateStep(SERVO::CStep* pStep)
    {
        return CToolUnits::startsWith(pStep->getName(), "EQPort")
            && pStep->getName().find("Cassette") != std::string::npos;
    }
}
SourceCode/Bond/Servo/CEquipment.h
@@ -16,6 +16,7 @@
#include "CEqPortChangeStep.h"
#include "CEqReadIntStep.h"
#include "CEqCassetteTransferStateStep.h"
#include "CEqCassetteCtrlCmdStep.h"
#include <vector>
#include <map>
#include <list>
@@ -104,6 +105,8 @@
        CGlass* getFrontGlass();
        BOOL removeClass(CGlass* pGlass);
        bool isAlarmStep(SERVO::CStep* pStep);
        bool isCassetteTransferStateStep(SERVO::CStep* pStep);
    // ä»¥ä¸‹ä¸ºä»ŽCC-Link读取到的Bit标志位检测函数
    public:
@@ -140,7 +143,7 @@
        // ä»¥ä¸‹ä¸ºä»ŽCC-Link读取到的Bit标志位
    private:
    protected:
        ALIVE m_alive;
        BOOL m_bCimState;            // ON/OFF
        BOOL m_bUpstreamInline;
@@ -149,7 +152,7 @@
        BOOL m_bAutoRecipeChange;
        BOOL m_bVCREnable[VCR_MAX];
    private:
    protected:
        CCCLinkIEControl* m_pCclink;
        std::map<unsigned int, CStep*> m_mapStep;
        int m_nBaseAlarmId;
SourceCode/Bond/Servo/CJobDataB.cpp
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,48 @@
#include "stdafx.h"
#include "CJobDataB.h"
namespace SERVO {
    CJobDataB::CJobDataB()
    {
    }
    CJobDataB::~CJobDataB()
    {
    }
    int CJobDataB::serialize(char* pszBuffer, int nBufferSize)
    {
        int index = 0;
        memcpy(&pszBuffer[index], &m_nPortNo, sizeof(short));
        index += sizeof(short);
        int strLen = min(20, m_strCarrierId.size());
        memcpy(&pszBuffer[index], m_strCarrierId.c_str(), strLen);
        index += strLen;
        strLen = min(20, m_pruductId.size());
        memcpy(&pszBuffer[index], m_pruductId.c_str(), strLen);
        index += strLen;
        memcpy(&pszBuffer[index], &m_nCarrierState, sizeof(short));
        index += sizeof(short);
        memcpy(&pszBuffer[index], &m_nSlotMapping, sizeof(int));
        index += sizeof(int);
        memcpy(&pszBuffer[index], &m_nSlotSelectedFlag, sizeof(int));
        index += sizeof(int);
        for (int i = 0; i < min(25, m_glassIds.size()); i++) {
            std::string& strGlassId = m_glassIds.at(i);
            strLen = min(20, strGlassId.size());
            memcpy(&pszBuffer[index], strGlassId.c_str(), strLen);
            index += strLen;
        }
        return 320 * 2;
    }
}
SourceCode/Bond/Servo/CJobDataB.h
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
#pragma once
#include <vector>
#include <string>
namespace SERVO {
    class CJobDataB
    {
    public:
        CJobDataB();
        ~CJobDataB();
    public:
        int serialize(char* pszBuffer, int nBufferSize);
    private:
        short m_nPortNo;
        std::string m_strCarrierId;
        std::string m_pruductId;
        short m_nCarrierState;
        int m_nSlotMapping;
        int m_nSlotSelectedFlag;
        std::vector<std::string> m_glassIds;
    };
}
SourceCode/Bond/Servo/CLoadPort.cpp
@@ -86,4 +86,39 @@
        return (m_glassList.size() < 8);
    }
    int CLoadPort::sendCassetteCtrlCmd(short cmd,
        short* jobExistence,
        int jobExistenceSize,
        short slotProcess,
        short jopCount,
        CJobDataB* pJobDataB)
    {
        int id = getID();
        if ( !(id == EQ_ID_LOADPORT1 || id == EQ_ID_LOADPORT2) ) {
            return -1;
        }
        SERVO::CEqCassetteCtrlCmdStep* pStep = (SERVO::CEqCassetteCtrlCmdStep*)getCassetteCtrlCmdStep();
        ASSERT(pStep);
        return pStep->sendCtrlCmd(cmd, jobExistence, jobExistenceSize, slotProcess, jopCount, pJobDataB);
    }
    CStep* CLoadPort::getCassetteCtrlCmdStep()
    {
        CStep* pStep = nullptr;
        Lock();
        for (auto item : m_mapStep) {
            if (item.second->getName().find(STEP_EQ_P1_CASSETTE_CTRL_CMD) == 0
                || item.second->getName().find(STEP_EQ_P2_CASSETTE_CTRL_CMD) == 0
                || item.second->getName().find(STEP_EQ_P3_CASSETTE_CTRL_CMD) == 0
                || item.second->getName().find(STEP_EQ_P4_CASSETTE_CTRL_CMD) == 0) {
                pStep = item.second;
            }
        }
        Unlock();
        return pStep;
    }
}
SourceCode/Bond/Servo/CLoadPort.h
@@ -23,6 +23,13 @@
    public:
        virtual int outputGlass(int port);
        int sendCassetteCtrlCmd(short cmd,
            short* jobExistence,
            int jobExistenceSize,
            short slotProcess,
            short jopCount,
            CJobDataB* pJobDataB);
        CStep* getCassetteCtrlCmdStep();
    };
}
SourceCode/Bond/Servo/CMaster.cpp
@@ -166,6 +166,17 @@
    int CMaster::addLoadPort(int index)
    {
        ASSERT(index == 0 || index == 1 || index == 2 || index == 3);
        static char* pszCassetteCtrlCmd[] = {
            STEP_EQ_P1_CASSETTE_CTRL_CMD,
            STEP_EQ_P2_CASSETTE_CTRL_CMD,
            STEP_EQ_P3_CASSETTE_CTRL_CMD,
            STEP_EQ_P4_CASSETTE_CTRL_CMD
        };
        int nWriteSignalDev[] = {0x120, 0x121, 0x122, 0x123};
        int nCtrlCmdDev[] = {0x45, 0x1a5, 0x305, 0x465};
        int nStepDev[] = { 0x480, 0x481, 0x482, 0x483 };
        char szName[64];
        sprintf_s(szName, 64, "LoadPort %d", index + 1);
        CLoadPort* pEquipment = new CLoadPort();
@@ -174,6 +185,19 @@
        pEquipment->setDescription(szName);
        addToEquipmentList(pEquipment);
        // step
        {
            CEqCassetteCtrlCmdStep* pStep = new CEqCassetteCtrlCmdStep();
            pStep->setName(pszCassetteCtrlCmd[index]);
            pStep->setWriteSignalDev(nWriteSignalDev[index]);
            pStep->setCtrlCmdDev(nCtrlCmdDev[index]);
            if (pEquipment->addStep(nStepDev[index], pStep) != 0) {
                delete pStep;
            }
        }
        pEquipment->init();
        LOGE("已添加“%s”.", pEquipment->getName().c_str());
SourceCode/Bond/Servo/CPageCassetteCtrlCmd.cpp
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,116 @@
// CPageCassetteCtrlCmd.cpp: å®žçŽ°æ–‡ä»¶
//
#include "stdafx.h"
#include "Servo.h"
#include "CPageCassetteCtrlCmd.h"
#include "afxdialogex.h"
// CPageCassetteCtrlCmd å¯¹è¯æ¡†
IMPLEMENT_DYNAMIC(CPageCassetteCtrlCmd, CHMPropertyPage)
CPageCassetteCtrlCmd::CPageCassetteCtrlCmd(CWnd* pParent /*=nullptr*/)
    : CHMPropertyPage(IDD_PAGE_CASSETTE_CTRL_CMD, pParent)
{
    m_pEquipment = nullptr;
}
CPageCassetteCtrlCmd::~CPageCassetteCtrlCmd()
{
}
void CPageCassetteCtrlCmd::DoDataExchange(CDataExchange* pDX)
{
    CHMPropertyPage::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CPageCassetteCtrlCmd, CHMPropertyPage)
    ON_WM_CTLCOLOR()
    ON_WM_DESTROY()
    ON_WM_SIZE()
    ON_BN_CLICKED(IDC_BUTTON_SEND_CMD, &CPageCassetteCtrlCmd::OnBnClickedButtonSendCmd)
END_MESSAGE_MAP()
// CPageCassetteCtrlCmd æ¶ˆæ¯å¤„理程序
void CPageCassetteCtrlCmd::OnApply()
{
    __super::OnApply();
}
void CPageCassetteCtrlCmd::setEquipment(SERVO::CEquipment* pEquipment)
{
    m_pEquipment = pEquipment;
}
BOOL CPageCassetteCtrlCmd::OnInitDialog()
{
    CHMPropertyPage::OnInitDialog();
    const char* pszText[] = {"Cassette Map Download", "Clamp", "Unclamp",
        "Reclamp", "Cassette Process Start", "Cassette Process Start By Count",
        "Cassette Process Pause", "Cassette Process Resume", "Cassette Process Abort",
        "Cassette Process Cancel", "Cassette Process End"};
    CComboBox* pComboBox = (CComboBox*)GetDlgItem(IDC_COMBO_CASSETTE_CTRL_CMD);
    for (int i = 0; i < 11; i++) {
        pComboBox->InsertString(i, pszText[i]);
    }
    pComboBox->SetCurSel(0);
    return TRUE;  // return TRUE unless you set the focus to a control
                  // å¼‚常: OCX å±žæ€§é¡µåº”返回 FALSE
}
HBRUSH CPageCassetteCtrlCmd::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
    HBRUSH hbr = CHMPropertyPage::OnCtlColor(pDC, pWnd, nCtlColor);
    // TODO:  åœ¨æ­¤æ›´æ”¹ DC çš„任何特性
    // TODO:  å¦‚果默认的不是所需画笔,则返回另一个画笔
    return hbr;
}
void CPageCassetteCtrlCmd::OnDestroy()
{
    CHMPropertyPage::OnDestroy();
}
void CPageCassetteCtrlCmd::OnSize(UINT nType, int cx, int cy)
{
    CHMPropertyPage::OnSize(nType, cx, cy);
}
void CPageCassetteCtrlCmd::OnBnClickedButtonSendCmd()
{
    ASSERT(m_pEquipment != nullptr);
    ASSERT(m_pEquipment->getID() == EQ_ID_LOADPORT1
        || m_pEquipment->getID() == EQ_ID_LOADPORT2);
    SERVO::CLoadPort* pLoadPort = (SERVO::CLoadPort*)m_pEquipment;
    short cmd = 0;
    short jobExistence[12] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
    int jobExistenceSize = 12;
    short slotProcess = 0;
    short jobCount = 0;
    SERVO::CJobDataB* pJobDataB = new SERVO::CJobDataB();
    CComboBox* pComboBox = (CComboBox*)GetDlgItem(IDC_COMBO_CASSETTE_CTRL_CMD);
    cmd = pComboBox->GetCurSel() + 1;
    for (int i = 0; i < 12; i++) {
        jobExistence[i] = (short)GetDlgItemInt(IDC_EDIT_EXISTENCE1 + i);
    }
    slotProcess = (short)GetDlgItemInt(IDC_EDIT_SLOT_TO_PROCESS);
    jobCount = (short)GetDlgItemInt(IDC_EDIT_JOB_COUNT);
    pLoadPort->sendCassetteCtrlCmd(cmd, &jobExistence[0], jobExistenceSize, slotProcess,
        jobCount, pJobDataB);
}
SourceCode/Bond/Servo/CPageCassetteCtrlCmd.h
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,36 @@
#pragma once
#include "CHMPropertyPage.h"
// CPageCassetteCtrlCmd å¯¹è¯æ¡†
class CPageCassetteCtrlCmd : public CHMPropertyPage
{
    DECLARE_DYNAMIC(CPageCassetteCtrlCmd)
public:
    CPageCassetteCtrlCmd(CWnd* pParent = nullptr);   // æ ‡å‡†æž„造函数
    virtual ~CPageCassetteCtrlCmd();
    virtual void OnApply();
    void setEquipment(SERVO::CEquipment* pEquipment);
private:
    SERVO::CEquipment* m_pEquipment;
// å¯¹è¯æ¡†æ•°æ®
#ifdef AFX_DESIGN_TIME
    enum { IDD = IDD_PAGE_CASSETTE_CTRL_CMD };
#endif
protected:
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV æ”¯æŒ
    DECLARE_MESSAGE_MAP()
public:
    virtual BOOL OnInitDialog();
    afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
    afx_msg void OnDestroy();
    afx_msg void OnSize(UINT nType, int cx, int cy);
    afx_msg void OnBnClickedButtonSendCmd();
};
SourceCode/Bond/Servo/CPageGraph2.cpp
@@ -8,6 +8,7 @@
#include "CHMPropertyDlg.h"
#include "CEquipmentPage1.h"
#include "CEquipmentPage2.h"
#include "CPageCassetteCtrlCmd.h"
// CPageGraph2 å¯¹è¯æ¡†
@@ -96,6 +97,14 @@
        pPage2->Create(IDD_PAGE_EQUIPMENT2);
        dlg.addPage(pPage2, "Glass");
        if (pEquipment->getID() == EQ_ID_LOADPORT1
            || pEquipment->getID() == EQ_ID_LOADPORT2) {
            CPageCassetteCtrlCmd* pPage = new CPageCassetteCtrlCmd();
            pPage->setEquipment(pEquipment);
            pPage->Create(IDD_PAGE_CASSETTE_CTRL_CMD);
            dlg.addPage(pPage, "Cassette control command");
        }
        dlg.DoModal();
        return true;
    };
SourceCode/Bond/Servo/CStep.cpp
@@ -6,6 +6,7 @@
    CStep::CStep()
    {
        m_nID = 0;
        m_pCclink = nullptr;
        InitializeCriticalSection(&m_criticalSection);
    }
@@ -30,6 +31,16 @@
        return m_pEquipment;
    }
    void CStep::setID(int id)
    {
        m_nID = id;
    }
    int CStep::getID()
    {
        return m_nID;
    }
    void CStep::setName(const char* pszName)
    {
        m_strName = pszName;
SourceCode/Bond/Servo/CStep.h
@@ -19,6 +19,8 @@
        void setCcLink(CCCLinkIEControl* pCcLink);
        void setEquipment(CEquipment* pEquipment);
        CEquipment* getEquipment();
        void setID(int id);
        int getID();
        void setName(const char* pszName);
        std::string& getName();
        virtual void getAttributeVector(CAttributeVector& attrubutes);
@@ -32,6 +34,7 @@
        void convertString(const char* pszBuffer, int size, std::string& strOut);
    protected:
        int m_nID;
        StationIdentifier m_station;
        std::string m_strName;
        CEquipment* m_pEquipment;
SourceCode/Bond/Servo/Common.h
@@ -128,6 +128,10 @@
#define STEP_EQ_P4_CASSETTE_INUSE        _T("EQPort4CassetteInUse")
#define STEP_EQ_P4_CASSETTE_UNLOAD_EADY    _T("EQPort4CassetteUnloadReady")
#define STEP_EQ_P4_CASSETTE_BLOCKED        _T("EQPort4CassetteBlocked")
#define STEP_EQ_P1_CASSETTE_CTRL_CMD    _T("EQPort1CassetteCtrlCmd")
#define STEP_EQ_P2_CASSETTE_CTRL_CMD    _T("EQPort2CassetteCtrlCmd")
#define STEP_EQ_P3_CASSETTE_CTRL_CMD    _T("EQPort3CassetteCtrlCmd")
#define STEP_EQ_P4_CASSETTE_CTRL_CMD    _T("EQPort4CassetteCtrlCmd")
/* Step ID */
SourceCode/Bond/Servo/Servo.rc
Binary files differ
SourceCode/Bond/Servo/Servo.vcxproj
@@ -204,6 +204,7 @@
    <ClInclude Include="CAttributeVector.h" />
    <ClInclude Include="CBakeCooling.h" />
    <ClInclude Include="CBonder.h" />
    <ClInclude Include="CEqCassetteCtrlCmdStep.h" />
    <ClInclude Include="CEqCassetteTransferStateStep.h" />
    <ClInclude Include="CCLinkPerformance\CCLinkIEControl.h" />
    <ClInclude Include="CCLinkPerformance\PerformanceMelsec.h" />
@@ -225,9 +226,11 @@
    <ClInclude Include="CGlass.h" />
    <ClInclude Include="CHMPropertyDlg.h" />
    <ClInclude Include="CHMPropertyPage.h" />
    <ClInclude Include="CJobDataB.h" />
    <ClInclude Include="CLoadPort.h" />
    <ClInclude Include="CMeasurement.h" />
    <ClInclude Include="ColorTransfer.h" />
    <ClInclude Include="CPageCassetteCtrlCmd.h" />
    <ClInclude Include="CPageGraph1.h" />
    <ClInclude Include="CPageGraph2.h" />
    <ClInclude Include="CPanelAttributes.h" />
@@ -280,6 +283,7 @@
    <ClCompile Include="CAttributeVector.cpp" />
    <ClCompile Include="CBakeCooling.cpp" />
    <ClCompile Include="CBonder.cpp" />
    <ClCompile Include="CEqCassetteCtrlCmdStep.cpp" />
    <ClCompile Include="CEqCassetteTransferStateStep.cpp" />
    <ClCompile Include="CCLinkPerformance\CCLinkIEControl.cpp" />
    <ClCompile Include="CCLinkPerformance\PerformanceMelsec.cpp" />
@@ -301,9 +305,11 @@
    <ClCompile Include="CGlass.cpp" />
    <ClCompile Include="CHMPropertyDlg.cpp" />
    <ClCompile Include="CHMPropertyPage.cpp" />
    <ClCompile Include="CJobDataB.cpp" />
    <ClCompile Include="CLoadPort.cpp" />
    <ClCompile Include="CMeasurement.cpp" />
    <ClCompile Include="ColorTransfer.cpp" />
    <ClCompile Include="CPageCassetteCtrlCmd.cpp" />
    <ClCompile Include="CPageGraph1.cpp" />
    <ClCompile Include="CPageGraph2.cpp" />
    <ClCompile Include="CPanelAttributes.cpp" />
SourceCode/Bond/Servo/Servo.vcxproj.filters
@@ -82,6 +82,9 @@
    <ClCompile Include="CEqPortChangeStep.cpp" />
    <ClCompile Include="CEqReadIntStep.cpp" />
    <ClCompile Include="CEqCassetteTransferStateStep.cpp" />
    <ClCompile Include="CEqCassetteCtrlCmdStep.cpp" />
    <ClCompile Include="CJobDataB.cpp" />
    <ClCompile Include="CPageCassetteCtrlCmd.cpp" />
  </ItemGroup>
  <ItemGroup>
    <ClInclude Include="AlarmManager.h" />
@@ -162,6 +165,9 @@
    <ClInclude Include="CEqPortChangeStep.h" />
    <ClInclude Include="CEqReadIntStep.h" />
    <ClInclude Include="CEqCassetteTransferStateStep.h" />
    <ClInclude Include="CEqCassetteCtrlCmdStep.h" />
    <ClInclude Include="CJobDataB.h" />
    <ClInclude Include="CPageCassetteCtrlCmd.h" />
  </ItemGroup>
  <ItemGroup>
    <ResourceCompile Include="Servo.rc" />
SourceCode/Bond/Servo/resource.h
Binary files differ