LAPTOP-SNT8I5JK\Boounion
2025-08-11 f6347c91173823acf25d4fbea3acbe3abb37c83d
SourceCode/Bond/Servo/CMaster.h
@@ -15,11 +15,29 @@
#include "CRobotTask.h"
#define CTStep_Unknow                   0
#define CTStep_LoadPort_Aligner         1
#define CTStep_Aligner_Fliper           2
#define CTStep_Fliper_Bonder1           3
#define CTStep_Bonder1_Bonder2          4
#define CTStep_Bonder2_VacuumBake       5
#define CTStep_VacuumBake_VacuumBake    6
#define CTStep_VacuumBake_BakeCooling   7
#define CTStep_BakeCooling_BakeCooling1 8
#define CTStep_BakeCooling_BakeCooling2 9
#define CTStep_BakeCooling_BakeCooling3 10
#define CTStep_BakeCooling_Measurement  11
#define CTStep_Measurement_LoadPort     12
#define CTStep_begin                    CTStep_LoadPort_Aligner
#define CTStep_end                      CTStep_Measurement_LoadPort
namespace SERVO {
    enum class MASTERSTATE {
        READY = 0,
        STARTING,
        RUNNING,
        RUNNING_CONTINUOUS_TRANSFER,
        STOPPING,
        MSERROR
    };
@@ -31,6 +49,8 @@
    typedef std::function<void(void* pMaster, CEquipment* pEquipment, CVcrEventReport* pReport)> ONEQVCREVENTREPORT;
    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, int round)> ONCTROUNDEND;
    typedef struct _MasterListener
    {
        ONMASTERSTATECHANGED    onMasterStateChanged;
@@ -40,6 +60,8 @@
        ONEQVCREVENTREPORT       onEqVcrEventReport;
        ONEQDATACHANGED         onEqDataChanged;
        ONROBOTTASKEVENT        onRobotTaskEvent;
        ONLOADPORTSTATUSCHANGED   onLoadPortStatusChanged;
        ONCTROUNDEND            onCTRoundEnd;
    } MasterListener;
    class CMaster
@@ -55,6 +77,7 @@
        int init();
        int term();
        int start();
        int startContinuousTransfer();
        int stop();
        void clearError();
        ULONGLONG getRunTime();
@@ -70,6 +93,17 @@
        int resendCurrentTask();
        void setPortType(unsigned int index, BOOL enable, int type, int mode,
            int cassetteType, int transferMode, BOOL autoChangeEnable);
        void setPortCassetteType(unsigned int index, SERVO::CassetteType type);
        void setPortEnable(unsigned int index, BOOL bEnable);
        void setCompareMapsBeforeProceeding(BOOL bCompare);
        void datetimeSync(SYSTEMTIME& time);
        void enableEventReport(bool bEnable);
        void enableAlarmReport(bool bEnable);
        bool isAlarmReportEnable();
        int proceedWithCarrier(unsigned int port);
        int carrierRelease(unsigned int port);
        int getContinuousTransferCount();
        void setContinuousTransferCount(int round);
    private:
        inline void lock() { EnterCriticalSection(&m_criticalSection); }
@@ -98,7 +132,9 @@
        CRobotTask* createTransferTask_bake_to_cooling(CEquipment* pSrcEq);
        CRobotTask* createTransferTask_bakecooling_to_measurement(CEquipment* pSrcEq, CEquipment* pTarEq);
        CRobotTask* createTransferTask_restore(CEquipment* pEqSrc, CLoadPort** pPorts);
        CRobotTask* createTransferTask_continuous_transfer(CEquipment* pSrcEq, int nSrcSlot,
            CEquipment* pTarEq, int nTarSlot, int armNo = 1);
    private:
        CRITICAL_SECTION m_criticalSection;
        MasterListener m_listener;
@@ -106,6 +142,7 @@
        std::list<CEquipment*> m_listEquipment;
        std::string m_strFilepath;
        BOOL m_bDataModify;
        bool m_bContinuousTransfer;
    private:
        /* 监控比特位的线程*/
@@ -131,6 +168,17 @@
        // 错误代码
        int m_nLastError;
        std::string m_strLastError;
        // 在开始工艺前是否先需要先比较map
        BOOL m_isCompareMapsBeforeProceeding;
        // 千传圈数计数
        int m_nContinuousTransferCount;
        int m_nContinuousTransferStep;
    private:
        bool m_bEnableEventReport;
        bool m_bEnableAlarmReport;
    };
}