#pragma once #include <vector> #define HIKVISION_CAMERA_EXPORTS #include "CCameraManage.h" #include "CModule.h" #include "CCalib.h" #include "CBondHead.h" #include "CXYCalib.h" #include "CHIKVisionCamera.h" #include "CWafflePackHead.h" #include "CWaferTable.h" #include "JMotion.h" #include "CTransferTable.h" #include "CBondTable.h" #include "CNozzleTable.h" #include "CForceControl.h" #include "VerticalMeasure.h" #include "HorizMeasure.h" #include "CAxis.h" #include "CWafflePackHead.h" #include "CWaferHead.h" #include "CUltraHead.h" #include "CEutecticHead.h" #ifdef C_MACHINE_EXPORTS #define C_MACHINE_DLL_API __declspec(dllexport) #else #define C_MACHINE_DLL_API //__declspec(dllimport) #endif /* ��ʼ�����̣� 1�������˿ؿ�����������ᡢIO 2��������Դ���࣬������Դ�����е�������Դ 3������ģ��������������ᡢIO�������õ�ģ���� 4�����������������ر궨��ʹ�ö�������������������������ֱ��������ˮƽ�������� ע������ˮƽ����Ҳ��Ҫʹ�úʹ�ֱ������ʹ���˲�ߣ���Ҫʹ�����ر궨�����������ر궨������Machine�д������ٽ�����ָ�������ģ�� ע����������ģ���в������ٴ�ʹ�ã���Ϊ���ڻ�̨��������ģ�� 5����ʼ��ģ�飺 ��1����ʼ����Դ��������ģ����Ҫ�Ĺ��ܶ������岹���궨������Ҫ�ᡢ���,���ڹ��캯����������PR���ԣ���Ҫ�ᡢ��������������ݵ� ��2�������ݿ��һ�����ݱ��浽�����У�������ģ����������������ݼ��� Machine����Ϊ�ǻ�̨���࣬���ڻ�̨������ģ����ᡢIO������Ҳ��Machine���д����Ϳ��ơ����Ƿ�Ӧ�ü̳�Module�� */ class C_MACHINE_DLL_API Machine { public: enum HeadType { UltralHead, //����ͷ EutecticHead, //����ͷ }; static Machine* GetInstance(); static void releaseInstance(); JMotion* GetMotion() {return m_pMotion;} LONG ToHome(); vector<CAxis*> GetMachineAllAxis() {return m_vetAxis;}; CBondHead* GetBondHead() {return m_pBondHead;} //CUltraHead* GetUltraHead() { return m_pBondHead; }; CBondTable* GetBondTable() { return m_pBondTable; } //CEutecticHead* GetEutecticHead() { return m_pEutecticHead; } CTransferTable* GetWaferCalibTable() { return m_pWaferTransferTable; } CTransferTable* GetWaffleCalibTable() { return m_pWaffleTransferTable; } CNozzleTable* GetNozzleTable() { return m_pNozzleTable; } //CForceControl* GetBHForce() { return m_pBondHeadForce; } //CForceControl* GetWaferForce() { return m_pWaferHeadForce; } CVerticalMeasure* GetVerticalMeasure() { return m_pVerMeasure; } CHorizMeasure* GetHorizMeasure() { return m_pHorizMeasure; } CWafflePackHead* GetWafflePackHead() { return m_pWaffleHead; } CWaferHead* GetWaferHead() { return m_pWaferHead; }; CWaferTable* GetWaferTable() { return m_pWaferTable; } CResources* GetResources() { return m_pResource; }; //AxesMapPage* GetMotionAxesMapPage(){ // return m_pMotion->getMapPage(); //} JMotion* GetJMotion() { return m_pMotion; } CXYCalib* GetBondHeadHighCameraCalib() { switch (Machine::m_eHeadType) { case Machine::HeadType::UltralHead: return nullptr; case Machine::HeadType::EutecticHead: return m_pBondHead->GetHighCameraCalib(); default: return nullptr; break; } } CXYCalib* GetBondHeadLowCameraCalib() { return m_pBondHead->GetLowCameraCalib(); } CXYCalib* GetLookUpCameraCalib() { return m_pBondHead->GetLookUpCameraCalib(); } CXYCalib* GetWaferCameraCalib() { return m_pWaferTable->GetWaferXYCalib(); } CXYCalib* GetWafflePackCameraCalib() { return m_pWaffleHead->GetCameraCalib(); } CCTDCalib* GetWafflePackCTDCalib() { return m_pWaffleHead->GetCTDCalib(); } CRCalib* GetBondHeadRCalib() { return m_pBondHead->GetHeadRCalib(); } bool GetInitSuccess() { return m_bIsInitSuccess; } HeadType GetHeadType() { return m_eHeadType; } void SetHeadType(HeadType type) { m_eHeadType = type; } LONG MoveToSafePosition() { return OK; }; LONG load(); LONG save(); private: Machine(); ~Machine(); LONG CreateModules(); void CreateMeasures(); LONG InitModules(); void AllocModule();//����ģ�鶼������ɺ���ã���ģ��ָ����������ģ�� void ReleaseAxisAndIo(); LONG CreatAllAxis(); LONG CreatAllIo(); LONG CreatAllCoord(); bool GetAxisByMotion(string name, CAxis * *pAxis); bool GetIoByMotion(IO_LIST name, CIO * *pIo); bool GetCoordByMotion(COORD_LIST type, CCoord * *pCoord); private: static Machine* m_instance; vector<CAxis*> m_vetAxis; vector<CIO*> m_vetIO; vector<CCoord*> m_vetCoord; vector<CModule*> m_vetModules; CBondHead* m_pBondHead = nullptr; //CEutecticHead* m_pEutecticHead = nullptr; //CUltraHead* m_pUltraHead = nullptr; CWafflePackHead* m_pWaffleHead = nullptr; CWaferTable* m_pWaferTable = nullptr; CWaferHead* m_pWaferHead = nullptr; CEjector* m_pEjector = nullptr; CTransferTable* m_pWaferTransferTable = nullptr; CTransferTable* m_pWaffleTransferTable = nullptr; CBondTable* m_pBondTable = nullptr; CNozzleTable* m_pNozzleTable = nullptr; CForceControl* m_pBondHeadForce = nullptr; CForceControl* m_pWaferHeadForce = nullptr; //�����ڲ��� CVerticalMeasure* m_pVerMeasure = nullptr; CHorizMeasure* m_pHorizMeasure = nullptr; //�˿ؽӿ� JMotion* m_pMotion = nullptr; //��������ӿ� CCameraManage* m_pCameraManage = nullptr; CResources* m_pResource = nullptr; CManageDB* pCManageDB = nullptr; bool m_bIsInitSuccess = false; bool m_bMotionEnable = true; //�˿ؿ���ֹ/���� HeadType m_eHeadType = HeadType::UltralHead; CHardware* m_pCHardware = nullptr; };