LAPTOP-SNT8I5JK\Boounion
2025-06-05 65802dfbbaf135e97a2415e3306aabfd2af49c69
SourceCode/Bond/Servo/CEquipment.cpp
@@ -35,6 +35,7 @@
      m_bLocalAlarm = FALSE;
      m_bAutoRecipeChange = FALSE;
      m_bVCREnable[0] = FALSE;
      memset(m_bLinkSignal, 0, sizeof(m_bLinkSignal));
      m_pCclink = nullptr;
      m_nBaseAlarmId = 0;
      m_pArm = nullptr;
@@ -363,9 +364,19 @@
      }
      */
      // 以下解释和处理数据
      // 连接信号解释和保存
      BOOL bFlag;
      int index = 0x540;
      int index = 0;
      for (int i = 0; i < 8; i++) {
         m_bLinkSignal[i][SIGNAL_UPSTREAM_INLINE] = isBitOn(pszData, size, index + 0);
         m_bLinkSignal[i][SIGNAL_UPSTREAM_TROUBLE] = isBitOn(pszData, size, index + 1);
         m_bLinkSignal[i][SIGNAL_SEND_ABLE] = isBitOn(pszData, size, index + 3);
         index += 0x40;
      }
      // 其它信号及响应
      index = 0x540;
      // alive
@@ -582,6 +593,20 @@
      return m_bVCREnable[index];
   }
   BOOL CEquipment::isLinkSignalOn(unsigned int path, unsigned int signal)
   {
      if (path >= PATH_MAX) return FALSE;
      if (signal >= SIGNAL_MAX) return FALSE;
      return m_bLinkSignal[path][signal];
   }
   void CEquipment::setLinkSignal(unsigned int path, unsigned int signal, BOOL bOn)
   {
      if (path >= PATH_MAX) return;
      if (signal >= SIGNAL_MAX) return;
      m_bLinkSignal[path][signal] = bOn;
   }
   int CEquipment::onStepEvent(CStep* pStep, int code)
   {
      if (code == STEP_EVENT_READDATA) {
@@ -756,7 +781,7 @@
      return 0;
   }
   int CEquipment::storedJob(CJobDataB* pJobDataB, short& putSlot)
   int CEquipment::storedJob(CJobDataB* pJobDataB, short putSlot)
   {
      if (m_pArm == nullptr) {
         return -1;
@@ -770,7 +795,7 @@
      ASSERT(pGlass);
      Lock();
      pGlass->addPath(m_nID);
      pGlass->addPath(m_nID, getSlotUnit(putSlot));
      m_slot[putSlot - 1].setContext(pGlass);
      pGlass->release();            // tempFetchOut需要调用一次release
      Unlock();
@@ -780,7 +805,7 @@
      CGlass* pBuddy = pGlass->getBuddy();
      if (pBuddy != nullptr) {
         Lock();
         pBuddy->addPath(m_nID);
         pBuddy->addPath(m_nID, 0);
         if (putSlot % 2 == 0) {
            m_slot[putSlot - 2].setContext(pBuddy);
         }
@@ -1118,7 +1143,7 @@
         MaterialsType glassType = pGlass->getType();
         if (glassType == MaterialsType::G1 && putSlotType == MaterialsType::G2) continue;
         if (glassType == MaterialsType::G2 && putSlotType == MaterialsType::G1) continue;
         if (!pGlass->isProcessed(m_nID)) continue;
         if (!pGlass->isProcessed(m_nID, 0)) continue;
         return &m_slot[i];
      }
@@ -1441,10 +1466,6 @@
   int CEquipment::onProcessData(CProcessData* pProcessData)
   {
      LOGI("<CEquipment-%s>onProcessData.", m_strName.c_str());
      CGlass* pGlass = getGlass(pProcessData->getGlassId().c_str());
      if (pGlass != nullptr) {
         pGlass->processEnd(m_nID);
      }
      return 0;
   }