#pragma once #include "CModule.h" #include "CCameraBase.h" #include "CNozzleTable.h" #include "CWafflePackMatrix.h" #include "CXYCalib.h" #include "CRCalib.h" #include "CLookUpCalib.h" #include "CPRStrategy.h" #include "TipMatrix.h" //#include "CBondMatrix.h" class __declspec(dllexport) CWafflePackHead : public CModule { public: CWafflePackHead(MODULE_LIST ModuleType); ~CWafflePackHead(); void SetCamera(CCameraBase* camera) { m_pCamera = camera; } virtual void SetDataChangFunction() override; virtual LONG SetParam() override;//�������ò��� virtual LONG GetParam() override;//�������ò��� virtual LONG ToHome() override; virtual LONG Sync() override; virtual LONG ToSafePosition() override; virtual LONG InitResource() override; virtual void DataChangNotice(string strDbName, string strTableName) override; //�ص������������� void SetXAxis(CAxis* axis) { m_pXAxis = axis; } void SetYAxis(CAxis* axis) { m_pYAxis = axis; } void SetZAxis(CAxis* axis) { m_pZAxis = axis; } void SetNozzleTable(CNozzleTable* nozzleTable) { m_pNozzleTable = nozzleTable; } void SetCoord(CCoord* pCrd) { m_pCoord_XY = pCrd; } CXYCalib* GetCameraCalib() { return m_pXYCalib; } CCTDCalib* GetCTDCalib() { return m_pCTDCalib; } void SetVacDO(CIO* out) { m_pVacGpo = out; } //void SetFlowDo(CDigitOutput* out) { m_pFlowGpo = out; } void SetVacDi(CIO* input) { m_pVacGpi = input; } void SetFlowDi(CIO* input) { m_pFlowGpi = input; } //�ֶ� LONG ChangeNozzle(int nozzleIndex); LONG UnLoadNozzle(); LONG LoadNozzle(int nozzleIndex); //�궨 LONG CameraCTDCalib(); //�Զ��� LONG CheckDieExistStatus(bool& bExist); LONG VacuumOn(); //��տ� LONG VacuumOff(); //��չ� LONG WaitZTrigXYToGrabPos(); //�����index���ڰ����е�оƬ��� LONG PickDie(int dieIndex, bool waitDone =true ); //����Ԥȡ��λ�����ж���ת̨�Ƿ�λ LONG MoveToPrePlacePos(bool waitDone); LONG SlowDownPlaceDie(int DieIndex, bool waitDone);//�������,�� //��������ڱ�̾���ԭ���λ�ã����Ǿ�����������λ�� LONG GetCurPickPos(int dieIndex, XY_DOUBLE_STRUCT& point); LONG MoveToGrabPos(XY_DOUBLE_STRUCT relDiePos, bool waitDone); LONG PickGrab(int index, XY_DOUBLE_STRUCT posOffset); LONG MoveToPrePickPos(XY_DOUBLE_STRUCT relDiePos, bool waitDone); LONG ZSlowDownPick(int index, bool waitDone); LONG ZUpToInitPos(bool waitDone);//ȡ�Ź��� LONG WaitZTrigXYToPlacePos(); LONG ZSlowDownPlace(int index, bool waitDone);//ֻ���ᶯ private: CAxis* m_pXAxis = nullptr; CAxis* m_pYAxis = nullptr; CAxis* m_pZAxis = nullptr; CCameraBase* m_pCamera = nullptr; CIO* m_pVacGpo = nullptr; CIO* m_pVacGpi = nullptr; CIO* m_pFlowGpi = nullptr; CCoord* m_pCoord_XY = nullptr; PICK_PARAM m_stPickParam; CPRStrategy* m_pPR = nullptr; CNozzleTable* m_pNozzleTable = nullptr; CWafflePackMatrix* m_pPointMatrix = nullptr; CBondMatrix* m_pBondMatrix = nullptr; //�궨���� CXYCalib* m_pXYCalib = nullptr; CCTDCalib* m_pCTDCalib = nullptr; TipMatrix* m_pTipMatrix = nullptr; //λ�ò��� double m_dSafePosX = 0;//��ȫλ�� double m_dSafePosY = 0; double m_dSafePosZ = 0; double m_dInitPosR = 0; double m_dPickOriginPosX = 0; //����о���ȡ��λ�ã����λ�� double m_dPickOriginPosY = 0; double m_dPlacePosX = 0;//����оƬ��λ�� double m_dPlacePosY = 0;//���λ�� double m_dYTrigZToBond = 0; double m_dYTrigZToPick = 0; double m_dZTrigYToPick = 0; double m_dZTrigYToBond = 0; double m_dPreChangeNozzleDisY = 0;//Ԥ��������ƫ��λ�� double m_dNozzlePosZ = 0; //�����λ��Z double m_dNozzlePosY = 0;//�����λ��Y int m_nCurNozzleIndex = 0; //��ǰ������������ϵı�� //ͳ�Ʋ��� int m_nTipUsedNum = 0; int m_nTipUsedMaxNum = 0; double m_dPickSlowVel = 0;//����½ʰȡ�ٶ� double m_dPlaceSlowVel = 0;//����½�ž��ٶ� //������ȫ������ϵת�� double m_dNozzleTableOriginPosX = 0; double m_dNozzleTableOriginPosY = 0; };