| | |
| | | {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) { |
| | |
| | | {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()); |
| | |
| | | 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); |
| | | } |
| | | } |
| | | } |
| | |
| | | {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; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |