#pragma once #define C_MACHINE_EXPORTS #include "Machine.h" #include "CDieBondFsm.h" #include "CMessageBox.h" #include "dt.h" namespace ns_module { typedef MATERIAL_BOX_VIEW_STRUCT MATERIAL_BOX_STRUCT; enum NOZZLE_STATUS { NOZZLE_EXIST,/*存在*/ NOZZLE_NO_EXIST,/*不存在*/ NOZZLE_DISABLE,/*不可用*/ }; typedef struct { int nRow; //矩阵中所在行 int nCol; //矩阵中所在列 int iIndex; //所在点ID NOZZLE_STATUS eStatus; //状态 XY_DOUBLE_STRUCT stPosition; //程序设置的位置 } NOZZLE_TABLE_MATRIX_INFO_STRUCT; class __declspec(dllexport) CViewMatrix { private: static CViewMatrix* m_instance; CManageDB* m_pCManageDB = nullptr; Machine* m_pMachine = nullptr; CCameraManage* m_pCameraManage = nullptr; CBondHead* m_pBondHead = nullptr; CWaferTable* m_pWaferTable = nullptr; CWaferHead* m_pWaferHead = nullptr; CTransferTable* m_pWaferTransferTable = nullptr; CTransferTable* m_pWaffleTransferTable = nullptr; CResources* m_pResource = nullptr; CDieBondFsm* m_pDieBondFsm = nullptr; public: static CViewMatrix* GetInstance(); CViewMatrix(); #pragma region 晶圆接口 /// /// 获取所有晶圆信息 /// /// 晶圆信息 /// 成功返回0,否则返回错误码 long GetWaferAllPointInfo(vector& stPointInfo); /// /// 获取晶环尺寸 /// /// 晶环圆心坐标 /// 晶环圆心坐标 /// 获取到的晶圆半径 /// 成功返回0,否则返回错误码 long GetWaferSize(double& dCenterX, double& dCenterY, double& iRadius); /// /// 获取晶圆尺寸 /// /// 长 /// 宽 /// 成功返回0,否则返回错误码 long GetDieSize(int& iLong, int& iWide); /// /// 移动到指定的点 /// /// /// 成功返回0,否则返回错误码 long MoveWaferToPoint(int iDieIndex); /// /// 从底层获取模板图片 /// /// 获取到的图片 /// 成功返回0,否则返回错误码 long GetWaferRefImage(ImageInfo& image); /// /// 获取晶圆台角度 /// /// 获取到的角度 /// 成功返回0,否则返回错误码 long GetWaferTableAngle(double& angle); /// /// 设置矩形边界 /// /// 矩阵Id /// 左上角行号 /// 左上角列号 /// 右下角行号 /// 右下触目列号 /// long SetWaferRectBorder(int nDieMatrixId, int row1, int col1, int row2, int col2); #pragma endregion #pragma region 载具物料接口 /// /// 获取所有晶圆信息 /// /// 晶圆信息 /// 成功返回0,否则返回错误码 long GetBondAllPointInfo(vector& stPointInfo); /// /// 移动到指定的点 /// /// /// 成功返回0,否则返回错误码 long MoveBondToPoint(int iDieIndex); /// /// 从底层获取模板图片 /// /// /// 获取到的图片 /// 成功返回0,否则返回错误码 long GetBondRefImage(int iDieIndex,ImageInfo& image); /// /// 设置矩形边界 /// /// 华夫盒矩阵 Id /// 矩阵Id /// 左上角行号 /// 左上角列号 /// 右下角行号 /// 右下触目列号 /// long SetBondRectBorder(int nPackMatrixId, int nDieMatrixId, int row1, int col1, int row2, int col2); /**设置当前所有圆晶信息,菜单选中拖拽 * 这里分2种情况 * 1.点击一个发送当前选中的贴片信息(鼠标左键点击) * 2.2个点确定一个矩形(可以选中多个贴片)(右键菜单选择) * 3.鼠标左键按住不松开拖拽多个贴片(例:界面显示三个组合,三个组合都可以选中,(1,2都是一样))(拖拽) */ long SetBondAllSelectPointInfo(std::vector& stPointInfo); #pragma endregion #pragma region 料盒类 /// /// 获取所有料盒信息 /// /// 晶圆信息 /// 成功返回0,否则返回错误码 long GetMaterialBoxAllPointInfo(std::vector & stPointInfo); /// /// 移动到指定的层 /// /// /// 成功返回0,否则返回错误码 long MoveMaterialBoxToiLayers(int iLayers); #pragma endregion #pragma region 吸嘴库 /// /// 获取吸嘴库信息 /// /// 晶圆信息 /// 成功返回0,否则返回错误码 long GetNozzleTableAllPointInfo(vector& stPointInfo); /// /// 移动到指定的点 /// /// /// 成功返回0,否则返回错误码 long MoveNozzleTableToPoint(int iIndex); #pragma endregion #pragma region 华夫盒接口 /// /// 获取所有晶圆信息 /// /// 晶圆信息 /// 成功返回0,否则返回错误码 long GetWafflePackAllPointInfo(vector& stPointInfo); /// /// 移动到指定的点 /// /// /// 成功返回0,否则返回错误码 long MoveWafflePackToPoint(int iDieIndex); /// /// 从底层获取模板图片 /// /// 获取到的图片 /// 成功返回0,否则返回错误码 long GetWafflePackRefImage(ImageInfo& image); /// /// 设置矩形边界 /// /// 华夫盒矩阵 Id /// 矩阵Id /// 左上角行号 /// 左上角列号 /// 右下角行号 /// 右下触目列号 /// long SetWafflePackRectBorder(int nPackMatrixId, int nDieMatrixId, int row1, int col1, int row2, int col2); #pragma endregion }; }