已添加1个文件
已修改6个文件
158 ■■■■ 文件已修改
Document/EO2860AVA-101工艺参数(3).xlsx 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CBakeCooling.cpp 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CEquipment.cpp 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CMaster.cpp 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CMaster.h 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CMeasurement.cpp 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CVacuumBake.cpp 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Document/EO2860AVA-101¹¤ÒÕ²ÎÊý(3).xlsx
Binary files differ
SourceCode/Bond/Servo/CBakeCooling.cpp
@@ -487,7 +487,53 @@
    int CBakeCooling::parsingProcessData(const char* pszData, size_t size, std::vector<CParam>& params)
    {
        return parsingParams(pszData, size, params);
        ASSERT(pszData);
        if (size < 250) return 0;
        int i = 0, v;
        // 1.工艺参数序号
        v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8;
        params.push_back(CParam("工艺参数序号", "", this->getName().c_str(), v));
        i += 2;
        if (v == 1) {
            // 2.A_腔烘烤时间
            v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8;
            params.push_back(CParam("A_腔烘烤时间", "", this->getName().c_str(), v * 0.01f));
            i += 2;
            // 3.A_烘烤温度设定
            v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8;
            params.push_back(CParam("A_烘烤温度设定", "", this->getName().c_str(), v * 0.1f));
            i += 2;
        }
        else if (v == 2) {
            // 2.A_腔冷却时间
            v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8;
            params.push_back(CParam("A_腔冷却时间", "", this->getName().c_str(), v * 0.01f));
            i += 2;
        }
        else if (v == 3) {
            // 2.A_腔烘烤时间
            v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8;
            params.push_back(CParam("B_腔烘烤时间", "", this->getName().c_str(), v * 0.01f));
            i += 2;
            // 3.A_烘烤温度设定
            v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8;
            params.push_back(CParam("B_烘烤温度设定", "", this->getName().c_str(), v * 0.1f));
            i += 2;
        }
        else if (v == 4) {
            // 2.A_腔冷却时间
            v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8;
            params.push_back(CParam("B_腔冷却时间", "", this->getName().c_str(), v * 0.01f));
            i += 2;
        }
        return (int)params.size();
    }
    int CBakeCooling::parsingSVData(const char* pszData, size_t size, std::vector<CParam>& params)
SourceCode/Bond/Servo/CEquipment.cpp
@@ -1595,7 +1595,7 @@
        auto rawData = processData.getParamsRawData();
        std::vector<CParam> tempParams;
        this->parsingParams((const char*)rawData.data(), rawData.size(), tempParams);
        this->parsingProcessData((const char*)rawData.data(), rawData.size(), tempParams);
        int n = processData.getTotalParameter();
        std::vector<CParam> params(tempParams.begin(), tempParams.begin() + min(n, (int)tempParams.size()));
        pGlass->addParams(params);
SourceCode/Bond/Servo/CMaster.cpp
@@ -62,6 +62,8 @@
        m_bBatch = false;
        m_nContinuousTransferCount = 0;
        m_nContinuousTransferStep = CTStep_Unknow;
        m_nContinuousWorkingPort = 0;
        m_nContinuousWorkingSlot = 0;
        m_pControlJob = nullptr;
        m_nTestFlag = 0;
        InitializeCriticalSection(&m_criticalSection);
@@ -1064,15 +1066,17 @@
                }
                // Measurement -> LoadPort
                for (int s = 0; s < 4; s++) {
                    PortType pt = pLoadPorts[s]->getPortType();
                for (int p = 0; p < 4; p++) {
                    if (p != m_nContinuousWorkingPort) continue;
                    PortType pt = pLoadPorts[p]->getPortType();
                    if ((m_nContinuousTransferStep == CTStep_Unknow || m_nContinuousTransferStep == CTStep_BakeCooling_Measurement)
                        && !rmd.armState[0] && pLoadPorts[s]->isEnable()
                        && !rmd.armState[0] && pLoadPorts[p]->isEnable()
                        && (pt == PortType::Unloading || pt == PortType::Both)
                        && pLoadPorts[s]->getPortStatus() == PORT_INUSE) {
                        && pLoadPorts[p]->getPortStatus() == PORT_INUSE) {
                        for (int slot = 0; slot < SLOT_MAX; slot++) {
                            if (slot != m_nContinuousWorkingSlot) continue;
                            m_pActiveRobotTask = createTransferTask_continuous_transfer(pMeasurement,
                                0, pLoadPorts[s], slot);
                                0, pLoadPorts[p], slot);
                            if (m_pActiveRobotTask != nullptr) {
                                m_nContinuousTransferStep = CTStep_Measurement_LoadPort;
                                m_nContinuousTransferStep = CTStep_end;
@@ -1204,17 +1208,19 @@
                }
                // LoadPort -> Aligner
                for (int s = 0; s < 4; s++) {
                    PortType pt = pLoadPorts[s]->getPortType();
                for (int p = 0; p < 4; p++) {
                    PortType pt = pLoadPorts[p]->getPortType();
                    if ((m_nContinuousTransferStep == CTStep_Unknow || m_nContinuousTransferStep == CTStep_end)
                        && !rmd.armState[0] && pLoadPorts[s]->isEnable()
                        && !rmd.armState[0] && pLoadPorts[p]->isEnable()
                        && (pt == PortType::Loading || pt == PortType::Both)
                        && pLoadPorts[s]->getPortStatus() == PORT_INUSE) {
                        && pLoadPorts[p]->getPortStatus() == PORT_INUSE) {
                        for (int slot = 0; slot < SLOT_MAX; slot++) {
                            m_pActiveRobotTask = createTransferTask_continuous_transfer(pLoadPorts[s],
                            m_pActiveRobotTask = createTransferTask_continuous_transfer(pLoadPorts[p],
                                slot, pAligner, 0);
                            if (m_pActiveRobotTask != nullptr) {
                                m_nContinuousTransferStep = CTStep_LoadPort_Aligner;
                                m_nContinuousWorkingPort = p;
                                m_nContinuousWorkingSlot = slot;
                                LOGI("<ContinuousTransfer>千传测试,开始搬送任务(LoadPort -> Aligner)...");
                                pEFEM->setContext(m_pActiveRobotTask->getContext());
                                goto CT_PORT_GET;
SourceCode/Bond/Servo/CMaster.h
@@ -235,6 +235,8 @@
        // åƒä¼ åœˆæ•°è®¡æ•°
        int m_nContinuousTransferCount;
        int m_nContinuousTransferStep;
        int m_nContinuousWorkingPort;
        int m_nContinuousWorkingSlot;
        // æ–°å¢žå·²ç»å¼€å§‹å¤„理的ProcessJob列表
        std::vector<CProcessJob*> m_inProcesJobs;
SourceCode/Bond/Servo/CMeasurement.cpp
@@ -455,22 +455,37 @@
        params.push_back(CParam("检测速度", "", this->getName().c_str(), v * 0.001));
        i += 4;
        return (int)params.size();
    }
    int CMeasurement::parsingProcessData(const char* pszData, size_t size, std::vector<CParam>& params)
    {
        ASSERT(pszData);
        if (size < 250) return 0;
        int i = 0, v;
        // 1.检测功能启用/禁用
        v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8;
        params.push_back(CParam("检测功能启用/禁用", "", this->getName().c_str(), v));
        i += 2;
        // 2.检测速度
        v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8 | (pszData[i + 2] & 0xff) << 16 | (pszData[i + 3] & 0xff) << 24;
        params.push_back(CParam("检测速度", "", this->getName().c_str(), v * 0.001));
        i += 4;
        // 3.检测1数据
        v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8 | (pszData[i + 2] & 0xff) << 16 | (pszData[i + 3] & 0xff) << 24;
        params.push_back(CParam("检测1数据", "", this->getName().c_str(), v * 0.001));
        i += 4;
        // 4.检测2数据
        v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8 | (pszData[i + 2] & 0xff) << 16 | (pszData[i + 3] & 0xff) << 24;
        params.push_back(CParam("检测2数据", "", this->getName().c_str(), v * 0.001));
        i += 4;
        return (int)params.size();
    }
    int CMeasurement::parsingProcessData(const char* pszData, size_t size, std::vector<CParam>& params)
    {
        return parsingParams(pszData, size, params);
    }
    int CMeasurement::parsingSVData(const char* pszData, size_t size, std::vector<CParam>& params)
SourceCode/Bond/Servo/CVacuumBake.cpp
@@ -482,7 +482,58 @@
    int CVacuumBake::parsingProcessData(const char* pszData, size_t size, std::vector<CParam>& params)
    {
        return parsingParams(pszData, size, params);
        ASSERT(pszData);
        if (size < 250) return 0;
        int i = 0, v;
        // 1.工艺参数序号
        v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8;
        params.push_back(CParam("工艺参数序号", "", this->getName().c_str(), v));
        i += 2;
        if (v == 1) {
            // 2.A_腔加热时间
            v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8;
            params.push_back(CParam("A_腔加热时间", "", this->getName().c_str(), v * 0.1f));
            i += 2;
            // 3.A_腔破真空时间
            v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8;
            params.push_back(CParam("A_腔破真空时间", "", this->getName().c_str(), v * 0.01f));
            i += 2;
            // 4.A_腔真空到达值
            params.push_back(CParam("A_腔真空到达值", "", this->getName().c_str(), (double)toFloat(&pszData[i])));
            i += 4;
            // 5.A_腔温控表主控温度设定
            v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8 | (pszData[i + 2] & 0xff) << 16 | (pszData[i + 3] & 0xff) << 24;
            params.push_back(CParam("A_腔温控表主控温度设定", "", this->getName().c_str(), v * 0.1f));
            i += 4;
        }
        else if (v == 1) {
            // 2.B_腔加热时间
            v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8;
            params.push_back(CParam("B_腔加热时间", "", this->getName().c_str(), v * 0.1f));
            i += 2;
            // 3.A_腔破真空时间
            v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8;
            params.push_back(CParam("B_腔破真空时间", "", this->getName().c_str(), v * 0.01f));
            i += 2;
            // 4.A_腔真空到达值
            params.push_back(CParam("B_腔真空到达值", "", this->getName().c_str(), (double)toFloat(&pszData[i])));
            i += 4;
            // 5.A_腔温控表主控温度设定
            v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8 | (pszData[i + 2] & 0xff) << 16 | (pszData[i + 3] & 0xff) << 24;
            params.push_back(CParam("B_腔温控表主控温度设定", "", this->getName().c_str(), v * 0.1f));
            i += 4;
        }
        return (int)params.size();
    }
    int CVacuumBake::parsingSVData(const char* pszData, size_t size, std::vector<CParam>& params)