LAPTOP-SNT8I5JK\Boounion
2025-06-03 61b2bfa09588f08accb13e98ee4cd73015cb2352
SourceCode/Bond/Servo/CMaster.cpp
@@ -279,6 +279,19 @@
   unsigned CMaster::DispatchProc()
   {
      // 各种机器
      CLoadPort* pLoadPort1 = (CLoadPort*)getEquipment(EQ_ID_LOADPORT1);
      CLoadPort* pLoadPort2 = (CLoadPort*)getEquipment(EQ_ID_LOADPORT2);
      CFliper* pFliper = (CFliper*)getEquipment(EQ_ID_FLIPER);
      CVacuumBake* pVacuumBack = (CVacuumBake*)getEquipment(EQ_ID_VACUUMBAKE);
      CAligner* pAligner = (CAligner*)getEquipment(EQ_ID_ALIGNER);
      ASSERT(pLoadPort1);
      ASSERT(pLoadPort2);
      ASSERT(pFliper);
      ASSERT(pVacuumBack);
      ASSERT(pAligner);
      while (1) {
         // 待退出信号或时间到
         HANDLE hEvents[] = { m_hEventDispatchThreadExit[0], m_hDispatchEvent };
@@ -310,30 +323,24 @@
         // 调度逻辑处理
         else if (m_state == MASTERSTATE::RUNNING) {
            unlock();
            LOGI("调度处理中...");
            // LOGI("调度处理中...");
            lock();
            if (m_pActiveRobotTask != nullptr) {
               unlock();
               // 检测到当前有正在下午的任务,确保当前任务完成或中止后继续
               LOGI("检测到当前有正在下午的任务,确保当前任务完成或中止后继续...");
               // LOGI("检测到当前有正在下午的任务,确保当前任务完成或中止后继续...");
               continue;
            }
            // LoadPort -> Fliper(G2)
            CLoadPort* pLoadPort1 = (CLoadPort*)getEquipment(EQ_ID_LOADPORT1);
            CLoadPort* pLoadPort2 = (CLoadPort*)getEquipment(EQ_ID_LOADPORT2);
            CFliper* pFliper = (CFliper*)getEquipment(EQ_ID_FLIPER);
            CVacuumBake* pVacuumBack = (CVacuumBake*)getEquipment(EQ_ID_VACUUMBAKE);
            ASSERT(pLoadPort1);
            ASSERT(pLoadPort2);
            ASSERT(pFliper);
            ASSERT(pVacuumBack);
            m_pActiveRobotTask = createTransferTask(pLoadPort1, pFliper);
            if (m_pActiveRobotTask != nullptr) {
               std::string strDescription = m_pActiveRobotTask->getDescription();
               unlock();
               if (m_listener.onRobotTaskEvent != nullptr) {
                  m_listener.onRobotTaskEvent(this, m_pActiveRobotTask, 0);
               }
               LOGI("创建新任务<%s>...", strDescription.c_str());
               continue;
            }
@@ -342,6 +349,9 @@
            if (m_pActiveRobotTask != nullptr) {
               std::string strDescription = m_pActiveRobotTask->getDescription();
               unlock();
               if (m_listener.onRobotTaskEvent != nullptr) {
                  m_listener.onRobotTaskEvent(this, m_pActiveRobotTask, 0);
               }
               LOGI("创建新任务<%s>...", strDescription.c_str());
               continue;
            }
@@ -353,7 +363,10 @@
            if (m_pActiveRobotTask != nullptr) {
               std::string strDescription = m_pActiveRobotTask->getDescription();
               unlock();
               LOGI("创建新任务1<%s>...", strDescription.c_str());
               if (m_listener.onRobotTaskEvent != nullptr) {
                  m_listener.onRobotTaskEvent(this, m_pActiveRobotTask, 0);
               }
               LOGI("创建新任务<%s>...", strDescription.c_str());
               continue;
            }
@@ -361,16 +374,40 @@
            if (m_pActiveRobotTask != nullptr) {
               std::string strDescription = m_pActiveRobotTask->getDescription();
               unlock();
               LOGI("创建新任务2<%s>...", strDescription.c_str());
               if (m_listener.onRobotTaskEvent != nullptr) {
                  m_listener.onRobotTaskEvent(this, m_pActiveRobotTask, 0);
               }
               LOGI("创建新任务<%s>...", strDescription.c_str());
               continue;
            }
            // Fliper(G2) -> Aligner
            // VacuumBake(G1) -> Aligner
            m_pActiveRobotTask = createTransferTask(pFliper, pAligner);
            if (m_pActiveRobotTask != nullptr) {
               std::string strDescription = m_pActiveRobotTask->getDescription();
               unlock();
               if (m_listener.onRobotTaskEvent != nullptr) {
                  m_listener.onRobotTaskEvent(this, m_pActiveRobotTask, 0);
               }
               LOGI("创建新任务<%s>...", strDescription.c_str());
               continue;
            }
            m_pActiveRobotTask = createTransferTask(pVacuumBack, pAligner);
            if (m_pActiveRobotTask != nullptr) {
               std::string strDescription = m_pActiveRobotTask->getDescription();
               unlock();
               if (m_listener.onRobotTaskEvent != nullptr) {
                  m_listener.onRobotTaskEvent(this, m_pActiveRobotTask, 0);
               }
               LOGI("创建新任务<%s>...", strDescription.c_str());
               continue;
            }
            // Fliper(G2) -> Aligner
            // VacuumBake(G1) -> Aligner
            // Aligner -> Bonder
@@ -554,6 +591,10 @@
               lock();
               delete m_pActiveRobotTask;
               m_pActiveRobotTask = nullptr;
               if (m_listener.onRobotTaskEvent != nullptr) {
                  m_listener.onRobotTaskEvent(this, m_pActiveRobotTask, 0);
               }
            }
            unlock();
         }