LAPTOP-SNT8I5JK\Boounion
2025-09-20 922a39a04e535e745c1ef736a0ba427ae1696ef5
SourceCode/Bond/Servo/CControlJobManagerDlg.cpp
@@ -454,9 +454,13 @@
   }
   SERVO::CLoadPort* pPort[4];
   pPort[0] = (SERVO::CLoadPort*)master.getEquipment(EQ_ID_LOADPORT1);
   pPort[1] = (SERVO::CLoadPort*)master.getEquipment(EQ_ID_LOADPORT2);
   pPort[2] = (SERVO::CLoadPort*)master.getEquipment(EQ_ID_LOADPORT3);
   pPort[3] = (SERVO::CLoadPort*)master.getEquipment(EQ_ID_LOADPORT4);
   int EQID[] = { EQ_ID_LOADPORT1, EQ_ID_LOADPORT2, EQ_ID_LOADPORT3, EQ_ID_LOADPORT4 };
   bool bProcessStart[] = {false, false, false, false};
   std::vector<SERVO::CProcessJob*> pjs;
   for (auto item : m_pjWarps) {
      if (!item.addToCj) continue;
@@ -470,17 +474,16 @@
      }
      if (!bCheck) continue;
      SERVO::CLoadPort* pPort = (SERVO::CLoadPort*)master.getEquipment(EQID[item.port]);
      SERVO::CProcessJob* pScr = (SERVO::CProcessJob*)item.pj;
      SERVO::CProcessJob * pj = new SERVO::CProcessJob(pScr->id());
      pj->setRecipe(SERVO::RecipeMethod::NoTuning, pScr->recipeSpec());
      std::vector<SERVO::CarrierSlotInfo> carriers;
      SERVO::CarrierSlotInfo csi;
      csi.carrierId = pPort->getCassetteId();
      csi.carrierId = pPort[item.port]->getCassetteId();
      for (int i = 0; i < 8; i++) {
         if (item.checkSlot[i]) {
            SERVO::CGlass* pGlass = pPort->getGlassFromSlot(i+1);
            SERVO::CGlass* pGlass = pPort[item.port]->getGlassFromSlot(i+1);
            if (pGlass != nullptr) {
               csi.slots.push_back(i + 1);
            }
@@ -489,6 +492,7 @@
      carriers.push_back(csi);
      pj->setCarriers(carriers);
      pjs.push_back(pj);
      bProcessStart[item.port] = true;
      m_pControlJob->addPJ(pScr->id());
   }
@@ -502,6 +506,15 @@
   m_pControlJob->setPJs(pjs);
   m_pControlJob->clearIssues();
   int nRet = master.setProcessJobs(pjs);
   // 没有问题的pj要释放
   for (auto pj : pjs) {
      if (!pj->issues().empty()) {
         delete pj;
      }
   }
   pjs.clear();
   if (nRet <= 0) {
      std::string msg("同步Process Job失败!");
      for (auto pj : pjs) {
@@ -524,7 +537,6 @@
      return;
   }
   nRet = master.setControlJob(*m_pControlJob);
   if (nRet != 0) {
      std::string msg("同步ControlJob失败!");
@@ -544,14 +556,10 @@
   }
   // 假设成功,要判断,同步到slot的glass中,类型等
   if (true) {
      auto& master = theApp.m_model.getMaster();
      int EQID[] = { EQ_ID_LOADPORT1, EQ_ID_LOADPORT2, EQ_ID_LOADPORT3, EQ_ID_LOADPORT4 };
   // 成功,要判断,同步到slot的glass中,类型等
      for (int p = 0; p < 4; p++) {
         SERVO::CLoadPort* pPort = (SERVO::CLoadPort*)master.getEquipment(EQID[p]);
         for (int i = 0; i < SLOT_MAX; ++i) {
            SERVO::CSlot* pSlot = pPort->getSlot(i);
         SERVO::CSlot* pSlot = pPort[p]->getSlot(i);
            if (!pSlot) {
               continue;
            }
@@ -600,7 +608,13 @@
            }
         }
      }
   }
   AfxMessageBox("断点检查一下数据");
   // process start
   for (int p = 0; p < 4; p++) {
      if (bProcessStart[p]) {
         pPort[p]->sendCassetteCtrlCmd(CCC_PROCESS_START, nullptr, 0, 0, 0, nullptr, nullptr);
         Sleep(100);
      }
   }
}