LAPTOP-SNT8I5JK\Boounion
2025-09-20 549e14363badd7e33f497897ea5a2454e1a1f7a1
SourceCode/Bond/Servo/CMaster.cpp
@@ -1481,7 +1481,7 @@
                           m_listener.onCjEnd(this, pJob);
                        }
                        completeControlJob("工艺正常完成");
                        completeControlJob();
                     }
                  }
               }
@@ -1535,6 +1535,7 @@
            for (auto pj : pjs) {
               auto carrier = pj->getCarrier(pPort->getCassetteId());
               if (carrier != nullptr) {
                  carrier->contexts.clear();
                  for (auto slot : carrier->slots) {
                     CGlass* pGlass = pPort->getGlassFromSlot(slot);
                     carrier->contexts.push_back((void*)pGlass);
@@ -2781,7 +2782,43 @@
   }
   bool CMaster::completeControlJob(std::string description)
   bool CMaster::completeControlJob()
   {
      if (m_pControlJob == nullptr) {
         return false;
      }
      for (auto item : m_processJobs) {
         if (item->state() != PJState::Completed) return false;
      }
      if (m_pControlJob->state() != CJState::Completed)
         return false;
      // 释放Job相关
      for (auto item : m_processJobs) {
         delete item;
      }
      m_processJobs.clear();
      if (m_pControlJob != nullptr) {
         delete m_pControlJob;
         m_pControlJob = nullptr;
      }
      // 注意要释放引用
      m_inProcesJobs.clear();
      m_completeProcessJobs.clear();
      m_queueGlasses.clear();
      m_inProcesGlasses.clear();
      m_completeGlasses.clear();
      saveState();
      return true;
   }
   bool CMaster::forceCompleteControlJob(std::string description)
   {
      if (m_pControlJob == nullptr || m_state != SERVO::MASTERSTATE::READY) {
         return false;