mrDarker
2025-06-10 c1c4d51585fd2bf07ecde55224ef241f5b553cfa
SourceCode/Bond/Servo/CMaster.cpp
@@ -375,6 +375,37 @@
            }
            // Measurement -> LoadPort
            CLoadPort* pEqLoadPort[] = { pLoadPort1, pLoadPort2, pLoadPort3, pLoadPort4 };
            CEquipment* pEqTar[] = { pVacuumBack, pFliper };
            if (primaryType == MaterialsType::G2) {
               pEqTar[0] = pFliper;
               pEqTar[1] = pVacuumBack;
            }
            for (int s = 0; s < 4; s++) {
               if (pEqLoadPort[s]->isEnable()
                  && pEqLoadPort[s]->getPortType() == PortType::Unloading
                  && pEqLoadPort[s]->getPortMode() == PortMode::ReadyToUnload) {
                  m_pActiveRobotTask = createTransferTask(pMeasurement, pEqLoadPort[s], primaryType, secondaryType);
                  if (m_pActiveRobotTask != nullptr) {
                     goto PORT_PUT;
                  }
               }
            }
         PORT_PUT:
            if (m_pActiveRobotTask != nullptr) {
               m_pActiveRobotTask->run();
               std::string strDescription = m_pActiveRobotTask->getDescription();
               unlock();
               if (m_listener.onRobotTaskEvent != nullptr) {
                  m_listener.onRobotTaskEvent(this, m_pActiveRobotTask, ROBOT_EVENT_CREATE);
               }
               LOGI("创建新任务<%s>...", strDescription.c_str());
               continue;
            }
            // BakeCooling ->Measurement
            m_pActiveRobotTask = createTransferTask_bakecooling_to_measurement(pBakeCooling, pMeasurement);
            if (m_pActiveRobotTask != nullptr) {
@@ -484,18 +515,12 @@
            // LoadPort -> Fliper(G2)
            // LoadPort -> VacuumBake(G1)
            CLoadPort* pEqSrc[] = { pLoadPort1, pLoadPort2, pLoadPort3, pLoadPort4 };
            CEquipment* pEqTar[] = { pVacuumBack, pFliper };
            if (primaryType == MaterialsType::G2) {
               pEqTar[0] = pFliper;
               pEqTar[1] = pVacuumBack;
            }
            for (int s = 0; s < 4; s++) {
               for (int t = 0; t < 2; t++) {
                  if (pEqSrc[s]->isEnable()
                     && pEqSrc[s]->getPortType() == PortType::Loading
                     && pEqSrc[s]->getPortMode() == PortMode::ReadyToLoad) {
                     m_pActiveRobotTask = createTransferTask(pEqSrc[s], pEqTar[t], primaryType, secondaryType);
                  if (pEqLoadPort[s]->isEnable()
                     && pEqLoadPort[s]->getPortType() == PortType::Loading
                     && pEqLoadPort[s]->getPortMode() == PortMode::ReadyToLoad) {
                     m_pActiveRobotTask = createTransferTask(pEqLoadPort[s], pEqTar[t], primaryType, secondaryType);
                     if (m_pActiveRobotTask != nullptr) {
                        goto PORT_GET;
                     }
@@ -514,11 +539,6 @@
               LOGI("创建新任务<%s>...", strDescription.c_str());
               continue;
            }
            // Measurement -> LoadPort
            unlock();
@@ -1187,6 +1207,7 @@
      if (pSrcSlot != nullptr && nullptr != pTarSlot) {
         pTask = new CRobotTask();
         pTask->setContext(pSrcSlot->getContext());
         pTask->setEFEM((CEFEM*)getEquipment(EQ_ID_EFEM));
         pTask->setRobotTransferParam(++taskSeqNo, 1, pSrcSlot->getPosition(),
            pTarSlot->getPosition(), pSrcSlot->getNo(), pTarSlot->getNo());
      }