chenluhua1980
2026-01-06 4d9d8d22e3666076988c30afb4e7c6fe365c19aa
SourceCode/Bond/Servo/CMaster.h
@@ -1,4 +1,4 @@
#pragma once
#pragma once
#include <list>
#include "CEquipment.h"
#include "CEFEM.h"
@@ -58,6 +58,7 @@
    typedef std::function<void(void* pMaster, CEquipment* pEquipment, int code)> ONEQDATACHANGED;
    typedef std::function<void(void* pMaster, CRobotTask* pTask, int code)> ONROBOTTASKEVENT;
    typedef std::function<void(void* pMaster, CEquipment* pEquipment, short status, __int64 data)> ONLOADPORTSTATUSCHANGED;
    typedef std::function<void(void* pMaster, CEquipment* pEquipment, int slotNo, PROCESS_STATE state)> ONPROCESSSTATECHANGED;
    typedef std::function<void(void* pMaster, int round)> ONCTROUNDEND;
    typedef std::function<void(void* pMaster, void* pj)> ONPJSTART;
    typedef struct _MasterListener
@@ -70,6 +71,7 @@
        ONEQDATACHANGED         onEqDataChanged;
        ONROBOTTASKEVENT        onRobotTaskEvent;
        ONLOADPORTSTATUSCHANGED   onLoadPortStatusChanged;
        ONPROCESSSTATECHANGED   onProcessStateChanged;
        ONCTROUNDEND            onCTRoundEnd;
        ONPJSTART               onCjStart;
        ONPJSTART               onCjEnd;
@@ -139,6 +141,7 @@
        int getPortCassetteSnSeed(int port);
        void setPortCassetteSnSeed(int port, int seed);
        CGlass* getGlass(int scrPort, int scrSlot);
        uint32_t SlotToMid(int eqid, int slot);
    private:
        inline void lock() { EnterCriticalSection(&m_criticalSection); }
@@ -171,7 +174,7 @@
            CEquipment* pTarEq, int nTarSlot, int armNo = 1);
    public:
        // —— IResourceView 覆写 ——(注意 const)
        // —— IResourceView 覆写 ——(注意 const)
        bool isProcessJobsEmpty() const override;
        bool recipeExists(const std::string& ppid) const override;
        bool carrierPresent(const std::string& carrierId) const override;
@@ -183,7 +186,7 @@
        std::string& getLastErrorText();
    public:
        // 新增函数
        // 新增函数
        CProcessJob* acquireNextProcessJob();
        CGlass* acquireNextGlass();
        int acquireGlassToQueue();
@@ -199,6 +202,9 @@
        bool canCreateControlJob();
        bool canCompleteControlJob();
        bool canDeleteControlJob();
        // DAQ Bridge鐩稿叧
        Collector* getCollector() const { return m_pCollector; }
    private:
        CRITICAL_SECTION m_criticalSection;
@@ -211,42 +217,42 @@
        bool m_bBatch;
    private:
        /* 监控比特位的线程*/
        /* 监控比特位的线程*/
        HANDLE m_hEventReadBitsThreadExit[2];
        HANDLE m_hReadBitsThreadHandle;
        unsigned m_nReadBitsThreadAddr;
        // 调度线程
        // 调度线程
        HANDLE m_hDispatchEvent;
        HANDLE m_hEventDispatchThreadExit[2];
        HANDLE m_hDispatchThreadHandle;
        unsigned m_nDispatchThreadAddr;
        // 启动时间,运行时间,状态
        // 启动时间,运行时间,状态
        ULONGLONG m_ullStartTime;
        ULONGLONG m_ullRunTime;
        MASTERSTATE m_state;
        // 当前任务和已完成任务列表
        // 当前任务和已完成任务列表
        CRobotTask* m_pActiveRobotTask;
        std::list< CRobotTask* > m_listTask;
        // 错误代码
        // 错误代码
        int m_nLastError;
        std::string m_strLastError;
        // 在开始工艺前是否先需要先比较map
        // 在开始工艺前是否先需要先比较map
        BOOL m_isCompareMapsBeforeProceeding;
        BOOL m_bJobMode;
        // 千传圈数计数
        // 千传圈数计数
        int m_nContinuousTransferCount;
        int m_nContinuousTransferStep;
        int m_nContinuousWorkingPort;
        int m_nContinuousWorkingSlot;
        // 新增已经开始处理的ProcessJob列表
        // 新增已经开始处理的ProcessJob列表
        std::vector<CProcessJob*> m_inProcesJobs;
        std::vector<CProcessJob*> m_completeProcessJobs;
        std::vector<CGlass*> m_queueGlasses;
@@ -268,4 +274,3 @@
        void CreateDAQBridgeServer();
    };
}