LAPTOP-SNT8I5JK\Boounion
2025-09-20 34f6893ffa45a2eeb3636605d5b7c6289d879aa4
1.修复和测试Bath调度,更新数据应用到Master时出错的问题;
已修改3个文件
34 ■■■■ 文件已修改
SourceCode/Bond/Servo/CControlJobManagerDlg.cpp 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CGlass.cpp 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CMaster.cpp 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CControlJobManagerDlg.cpp
@@ -454,11 +454,11 @@
    }
    SERVO::CLoadPort* pPort[4];
    pPort[0] = (SERVO::CLoadPort*)master.getEquipment(EQ_ID_LOADPORT1);
    pPort[1] = (SERVO::CLoadPort*)master.getEquipment(EQ_ID_LOADPORT2);
    pPort[2] = (SERVO::CLoadPort*)master.getEquipment(EQ_ID_LOADPORT3);
    pPort[3] = (SERVO::CLoadPort*)master.getEquipment(EQ_ID_LOADPORT4);
    SERVO::CLoadPort* pPorts[4];
    pPorts[0] = (SERVO::CLoadPort*)master.getEquipment(EQ_ID_LOADPORT1);
    pPorts[1] = (SERVO::CLoadPort*)master.getEquipment(EQ_ID_LOADPORT2);
    pPorts[2] = (SERVO::CLoadPort*)master.getEquipment(EQ_ID_LOADPORT3);
    pPorts[3] = (SERVO::CLoadPort*)master.getEquipment(EQ_ID_LOADPORT4);
    bool bProcessStart[] = {false, false, false, false};
    std::vector<SERVO::CProcessJob*> pjs;
@@ -480,10 +480,10 @@
        std::vector<SERVO::CarrierSlotInfo> carriers;
        SERVO::CarrierSlotInfo csi;
        csi.carrierId = pPort[item.port]->getCassetteId();
        csi.carrierId = pPorts[item.port]->getCassetteId();
        for (int i = 0; i < 8; i++) {
            if (item.checkSlot[i]) {
                SERVO::CGlass* pGlass = pPort[item.port]->getGlassFromSlot(i+1);
                SERVO::CGlass* pGlass = pPorts[item.port]->getGlassFromSlot(i+1);
                if (pGlass != nullptr) {
                    csi.slots.push_back(i + 1);
                }
@@ -558,8 +558,11 @@
    // 成功,要判断,同步到slot的glass中,类型等
    for (int p = 0; p < 4; p++) {
        if (m_pjWarps[p].port == -1) continue;
        ASSERT(0 <= m_pjWarps[p].port && m_pjWarps[p].port <= 3);
        SERVO::CLoadPort* pLoadPort = pPorts[m_pjWarps[p].port];
        for (int i = 0; i < SLOT_MAX; ++i) {
            SERVO::CSlot* pSlot = pPort[p]->getSlot(i);
            SERVO::CSlot* pSlot = pLoadPort->getSlot(i);
            if (!pSlot) {
                continue;
            }
@@ -613,7 +616,7 @@
    // process start
    for (int p = 0; p < 4; p++) {
        if (bProcessStart[p]) {
            pPort[p]->sendCassetteCtrlCmd(CCC_PROCESS_START, nullptr, 0, 0, 0, nullptr, nullptr);
            pPorts[p]->sendCassetteCtrlCmd(CCC_PROCESS_START, nullptr, 0, 0, 0, nullptr, nullptr);
            Sleep(100);
        }
    }
SourceCode/Bond/Servo/CGlass.cpp
@@ -1,5 +1,6 @@
#include "stdafx.h"
#include "CGlass.h"
#include "Log.h"
namespace SERVO {
@@ -321,8 +322,10 @@
    }
    bool CGlass::queue() {
        LOGI("CGlass::queue 01 %s", m_strID.c_str());
        if (m_state != GlsState::NoState) return false;
        markQueued();
        LOGI("CGlass::queue 02 %s", m_strID.c_str());
        return true;
    }
@@ -347,9 +350,11 @@
    }
    bool CGlass::complete() {
        LOGI("CGlass::complete 01 %s", m_strID.c_str());
        if (m_state != GlsState::InProcess && m_state != GlsState::Paused) return false;
        m_state = GlsState::Completed;
        markEnd();
        LOGI("CGlass::complete 02 %s", m_strID.c_str());
        return true;
    }
SourceCode/Bond/Servo/CMaster.cpp
@@ -2800,6 +2800,14 @@
            m_pControlJob = nullptr;
        }
        // 注意要释放引用
        m_inProcesJobs.clear();
        m_completeProcessJobs.clear();
        m_queueGlasses.clear();
        m_inProcesGlasses.clear();
        m_completeGlasses.clear();
        saveState();
        return true;