chenluhua1980
2025-11-10 83f2a98df3e60f7408f68fae7a1be8278968ee55
1.绑定玻璃SV数据修正;
已修改1个文件
51 ■■■■ 文件已修改
SourceCode/Bond/Servo/CMaster.cpp 51 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CMaster.cpp
@@ -1641,7 +1641,7 @@
                    {8, 8}, {9, 9}, {10, 10}, {11, 11}, {12, 12}, {13, 13}, {14, 14}, {15, 15}, {16, 16}
                };
                CGlass* pGlass = ((CEquipment*)pEquipment)->getGlassFromSlot(1);
                CGlass* pGlass = ((CEquipment*)pEquipment)->getGlassFromSlot(2);
                auto& dataTypes = CServoUtilsTool::getEqDataTypes();
                auto& bonderTypes = dataTypes[eqid];
                for (const auto& mapping : bonderMapping) {
@@ -1664,7 +1664,8 @@
                    {10, 8}, {11, 9}, {12, 10}, {13, 11}, {14, 12}, {15, 13}, {16, 14}
                };
                CGlass* pGlass = ((CEquipment*)pEquipment)->getGlassFromSlot(1);
                CGlass* pGlass1 = ((CEquipment*)pEquipment)->getGlassFromSlot(1);
                CGlass* pGlass2 = ((CEquipment*)pEquipment)->getGlassFromSlot(2);
                auto& dataTypes = CServoUtilsTool::getEqDataTypes();
                auto& vacuumbakeTypes = dataTypes[eqid];
                LOGD("<Master>onSVDataReport 003 : %d", vacuumMapping.size());
@@ -1673,10 +1674,15 @@
                    int channel = mapping.second;
                    if (paramIndex < params.size() && channel - 1 < vacuumbakeTypes.size()) {
                        double value = params.at(paramIndex).getDoubleValue();
                        const std::string& dataType = vacuumbakeTypes[channel - 1];
                        if (m_pCollector != nullptr)
                            m_pCollector->buffersPush(eqid, channel, ts, params.at(paramIndex).getDoubleValue());
                        if (pGlass != nullptr)
                            pGlass->addSVData(eqid, vacuumbakeTypes[channel - 1], ts, params.at(paramIndex).getDoubleValue());
                            m_pCollector->buffersPush(eqid, channel, ts, value);
                        // 根据腔体前缀写入对应 Slot 的玻璃
                        if (pGlass1 != nullptr && !dataType.empty() && dataType[0] == 'A')
                            pGlass1->addSVData(eqid, dataType, ts, value);
                        if (pGlass2 != nullptr && !dataType.empty() && dataType[0] == 'B')
                            pGlass2->addSVData(eqid, dataType, ts, value);
                    }
                }
            }
@@ -1688,19 +1694,46 @@
                    {11, 7}, {12, 8}, {13, 9}, {14, 10}, {15, 11}, {16, 12}
                };
                CGlass* pGlass = ((CEquipment*)pEquipment)->getGlassFromSlot(1);
                CGlass* pGlass1 = ((CEquipment*)pEquipment)->getGlassFromSlot(1); // A Bake
                CGlass* pGlass2 = ((CEquipment*)pEquipment)->getGlassFromSlot(2); // A Cool
                CGlass* pGlass3 = ((CEquipment*)pEquipment)->getGlassFromSlot(3); // B Bake
                CGlass* pGlass4 = ((CEquipment*)pEquipment)->getGlassFromSlot(4); // B Cool
                auto& dataTypes = CServoUtilsTool::getEqDataTypes();
                auto& coolingTypes = dataTypes[eqid];
                LOGD("<Master>onSVDataReport 003B : %d", coolingMapping.size());
                auto addToGlass = [&](CGlass* glass, const std::string& type, double val) {
                    if (glass != nullptr)
                        glass->addSVData(eqid, type, ts, val);
                };
                for (const auto& mapping : coolingMapping) {
                    int paramIndex = mapping.first;
                    int channel = mapping.second;
                    if (paramIndex < params.size() && channel - 1 < coolingTypes.size()) {
                        double value = params.at(paramIndex).getDoubleValue();
                        const std::string& dataType = coolingTypes[channel - 1];
                        if (m_pCollector != nullptr)
                            m_pCollector->buffersPush(eqid, channel, ts, params.at(paramIndex).getDoubleValue());
                        if (pGlass != nullptr)
                            pGlass->addSVData(eqid, coolingTypes[channel - 1], ts, params.at(paramIndex).getDoubleValue());
                            m_pCollector->buffersPush(eqid, channel, ts, value);
                        if (!dataType.empty()) {
                            const bool isBake = dataType.find("烘烤") != std::string::npos;
                            const bool isCooling = dataType.find("冷却") != std::string::npos;
                            switch (dataType[0]) {
                            case 'A':
                                if (isBake)
                                    addToGlass(pGlass1, dataType, value);
                                else if (isCooling)
                                    addToGlass(pGlass2, dataType, value);
                                break;
                            case 'B':
                                if (isBake)
                                    addToGlass(pGlass3, dataType, value);
                                else if (isCooling)
                                    addToGlass(pGlass4, dataType, value);
                                break;
                            default:
                                break;
                            }
                        }
                    }
                }
            }