LAPTOP-SNT8I5JK\Boounion
2025-06-17 b4aa15969fe35ed20b5ef1f15d5d56c386e13f36
SourceCode/Bond/Servo/CEquipment.cpp
@@ -39,6 +39,7 @@
      m_pCclink = nullptr;
      m_nBaseAlarmId = 0;
      m_pArm = nullptr;
      m_processState = PROCESS_STATE::Ready;
      InitializeCriticalSection(&m_criticalSection);
   }
@@ -142,6 +143,16 @@
      pStep->setCcLink(m_pCclink);
      m_mapStep[addr] = pStep;
      return 0;
   }
   void CEquipment::setProcessState(PROCESS_STATE state)
   {
      m_processState = state;
      onProcessStateChanged(m_processState);
      if (m_listener.onProcessStateChanged != nullptr) {
         m_listener.onProcessStateChanged(this, m_processState);
      }
   }
   void CEquipment::init()
@@ -394,7 +405,9 @@
         m_bLinkSignal[i][SIGNAL_SEND_ABLE] = isBitOn(pszData, size, index + 3);
         index += 0x40;
      }       
      if(m_bLinkSignal[0][SIGNAL_SEND_ABLE]) {
         onSendAble();
      }
      // 其它信号及响应
      index = 0x540;
@@ -791,6 +804,11 @@
      pContext->release();
      Unlock();
      if (m_processState != PROCESS_STATE::Ready) {
         setProcessState(PROCESS_STATE::Ready);
      }
      if (m_listener.onDataChanged != nullptr) {
         m_listener.onDataChanged(this, EDCC_FETCHOUT_JOB);
      }
@@ -817,22 +835,9 @@
      pGlass->release();            // tempFetchOut需要调用一次release
      Unlock();
      // 如果此玻璃已经贴合,贴合的玻璃也要从加入到列表中
      /*
      CGlass* pBuddy = pGlass->getBuddy();
      if (pBuddy != nullptr) {
         Lock();
         pBuddy->addPath(m_nID, 0);
         if (putSlot % 2 == 0) {
            m_slot[putSlot - 2].setContext(pBuddy);
      if (m_processState != PROCESS_STATE::Processing) {
         setProcessState(PROCESS_STATE::Processing);
         }
         else {
            m_slot[putSlot].setContext(pBuddy);
         }
         Unlock();
      }
      */
      if (m_listener.onDataChanged != nullptr) {
         m_listener.onDataChanged(this, EDCC_STORED_JOB);
@@ -1591,6 +1596,26 @@
      return 0;
   }
   /*
    * 当从CC-Link检测到设备Send Able为On时调用此函数
    * 可能会多次重复调用(根据扫描频率), 注意防呆
    */
   int CEquipment::onSendAble()
   {
      LOGI("<CEquipment-%s>onSendAble.", m_strName.c_str());
      if (m_processState != PROCESS_STATE::Complete) {
         setProcessState(PROCESS_STATE::Complete);
      }
      return 0;
   }
   int CEquipment::onProcessStateChanged(PROCESS_STATE state)
   {
      return 0;
   }
   int CEquipment::getIndexerOperationModeBaseValue()
   {
      return 0;