LAPTOP-SNT8I5JK\Boounion
2025-05-28 ce7f9f6df6e34cee1cbb9e776a814bc7548e8bd1
SourceCode/Bond/Servo/CEquipment.h
@@ -34,9 +34,11 @@
#include "CJobDataS.h"
#include "CProcessData.h"
#include "CPortStatusReport.h"
#include "CSlot.h"
namespace SERVO {
#define SLOT_MAX      12
   typedef std::function<void(void* pEiuipment, BOOL bAlive)> ONALIVE;
   typedef std::function<void(void* pEiuipment, int code)> ONDATACHANGED;
@@ -89,6 +91,7 @@
      virtual void term();
      virtual void initPins() = 0;
      virtual void initSteps();
      virtual void initSlots() = 0;
      virtual void onTimer(UINT nTimerid);
      virtual void serialize(CArchive& ar);
      virtual void onReceiveLBData(const char* pszData, size_t size);
@@ -98,9 +101,6 @@
      std::vector<CPin*>& CEquipment::getInputPins();
      std::vector<CPin*>& CEquipment::getOutputPins();
      virtual int recvIntent(CPin* pPin, CIntent* pIntent);
      virtual BOOL glassWillArrive(CGlass* pGlass);
      virtual int outputGlass(int port);
      virtual int glassArrived(CGlass* pGlass);
      virtual int fetchedOutJob(CJobDataB* pJobDataB);
      virtual int storedJob(CJobDataB* pJobDataB);
      virtual int onReceivedJob(int port, CJobDataS* pJobDataS);
@@ -111,10 +111,6 @@
      virtual int onStoredJob(int port, CJobDataB* pJobDataB);
      virtual int onProcessData(CProcessData* pProcessData);
      virtual int getIndexerOperationModeBaseValue();
      void getGlassList(std::list<CGlass*>& list);
      CGlass* getGlassFromList(const char* pszId);
      CGlass* getFrontGlass();
      BOOL removeClass(CGlass* pGlass);
      bool isAlarmStep(SERVO::CStep* pStep);
      bool isVcrEventStep(SERVO::CStep* pStep);
      bool isCassetteTransferStateStep(SERVO::CStep* pStep);
@@ -145,9 +141,24 @@
      // unitNo: 0:local; Others:unit No
      int recipeParameterRequest(short masterRecipeId, short localRecipeId, short unitNo);
   public:
      BOOL isGlassListEmpty();
      // 获取一个可用的槽位
      CSlot* getAvailableSlot();
      // 获取一个指定物料类型(G1,G2,G1&G2)的空槽位
      CSlot* getAvailableSlotForGlass(MaterialsType type);
      // 获取一个指定物料类型(G1,G2,G1&G2)的非空槽位
      CSlot* getNonEmptySlot(MaterialsType type);
      // 获取玻璃物料
      CGlass* getGlassFromSlot(int slotNo);
      CGlass* getAnyGlass();
      // 验证玻璃和槽是否匹配
      BOOL ValidateGlassSlotMatch();
      // 是否有玻璃
      BOOL hasGlass();
   // 以下为从CC-Link读取到的Bit标志位检测函数
   public:
@@ -164,7 +175,6 @@
      inline void Unlock() { LeaveCriticalSection(&m_criticalSection); }
      BOOL isBitOn(const char* pszData, size_t size, int index);
      inline BOOL equalBool(BOOL b1, BOOL b2);
      void addGlassToList(CGlass* pGlass);
      short decodeRecipeListReport(const char* pszData, size_t size);
      short decodeRecipeParameterReport(const char* pszData, size_t size);
      int decodeProcessDataReport(CStep* pStep, const char* pszData, size_t size);
@@ -179,6 +189,7 @@
      int addJobDataS(CJobDataS* pJobDataS);
      int removeJobDataS(int nCassetteSequenceNo, int nJobSequenceNo);
      CJobDataS* getJobDataS(int nCassetteSequenceNo, int nJobSequenceNo);
      BOOL compareJobDataB(CJobDataB* pJobDataB1, CJobDataB* pJobDataB2);
   protected:
      EquipmentListener m_listener;
@@ -191,7 +202,6 @@
      MemoryBlock m_blockWriteBit;
      std::vector<CPin*> m_inputPins;
      std::vector<CPin*> m_outputPins;
      std::list<CGlass*> m_glassList;
      // 以下为从CC-Link读取到的Bit标志位
@@ -209,6 +219,7 @@
      std::map<unsigned int, CStep*> m_mapStep;
      int m_nBaseAlarmId;
      CRecipesManager m_recipesManager;
      CSlot m_slot[SLOT_MAX];
   private:
      CEquipment* m_pArm;