123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223 |
- #pragma once
- #include "CManageDB.h"
- #include <map>
- #include <mutex>
- #ifdef BOND_MATRIX_EXPORTS
- #define BOND_CMATRIX_DLL_API __declspec(dllexport)
- #else
- #define BOND_CMATRIX_DLL_API
- #endif
- using namespace ns_db;
- namespace ns_mat
- {
- typedef struct
- {
- PICKBOND_PARAM_STRUCT stWaferParam;
- PICKBOND_PARAM_STRUCT stCalibBondParam;
- UINT nTemplate_Pick;
- UINT nPickHeadIdByTable;
- UINT nMatrixId;
- }PICK_PARAM;
- typedef struct
- {
-
- PICKBOND_PARAM_STRUCT stCalibPickParam;
- PICKBOND_PARAM_STRUCT stBondParam;
- UINT nTemplate_BondFront;
- UINT nTemplate_BondBack;
-
- UINT nTemplate_Bond;
- UINT nTemplate_Calib;
- UINT nTemplate_LookUp;
- UINT nBondHeadIdByTable;
- X_Y_ANGLE_STRUCT stOffset;
- }BOND_PARAM;
-
- typedef struct
- {
-
- UINT iPcbMatId;
- CALIB_DIE_TYPE nCalibType;
- DIE_SOURCE nWaffleOrWaffer;
- PICK_PARAM nPickParam;
- BOND_PARAM nBondParam;
- }PROCESS_INFO_STRUCT;
-
- enum BOND_DIR {
-
-
- OrderAndS = 0,
- AlternateAndZ = 1,
- OrderAndZ = 2,
- AlternateAndS = 3,
- };
- typedef struct _BOND_INDEX_STRUCT
- {
-
- UINT iPcbMatId = 1;
- UINT iPcbRow = 1;
- UINT iPcbCol = 1;
- UINT iPtMatId = 1;
- UINT iPtRow = 1;
- UINT iPtCol = 1;
- UINT iIndex = 1;
- } BOND_MATRIX_POINT_INFO_STRUCT;
- enum DIE_STATUS {
-
-
-
- NO_BOND,
- TRANSFER_PICK_DONE,
- LOOKUP_CALIB_DONE,
- BOND_DONE,
- BOND_DEL
- };
- enum PICK_STATUS
- {
- NO_PICK = 0,
- WAF_PICK_DONE,
- TRANSFER_BOND_DONE,
- };
-
- typedef struct _BONDED_STATUS_STRUCT
- {
-
- DIE_STATUS bDieStatus;
- PICK_STATUS bPickStatus;
- bool bAlnStatus;
- bool bIsCheck;
- X_Y_ANGLE_STRUCT stLookUpOffset;
- XY_DOUBLE_STRUCT stSetBondPosition;
- XY_DOUBLE_STRUCT stAlnBondPosition;
- XY_DOUBLE_STRUCT stAlnOffset;
- double dAlnAngle;
- XY_DOUBLE_STRUCT stCheckOffset;
- double dCheckAngle;
- _BONDED_STATUS_STRUCT()
- {
- bDieStatus = NO_BOND;
- bPickStatus = NO_PICK;
- bAlnStatus = false;
- bIsCheck = false;
- stSetBondPosition = 0;
- stAlnBondPosition = 0;
- dAlnAngle = 0;
- dCheckAngle = 0;
- stCheckOffset = 0.0;
- }
- } BOND_STATUS_STRUCT;
- typedef struct _POINT_INFO_STRUCT
- {
- BOND_MATRIX_POINT_INFO_STRUCT stIndex;
- BOND_STATUS_STRUCT stBondStatus;
- PROCESS_INFO_STRUCT stBondInfo;
- } POINT_INFO_STRUCT;
-
-
-
- class BOND_CMATRIX_DLL_API CBondMatrix
- {
-
- private:
- static std::mutex m_MatrixMutex;
- bool bIsInitSuccess = false;
-
-
-
- UINT m_iBondAmount = 0;
- int m_iWaferDieNum = 0;
- int m_iWaffleDieNum = 0;
- BOND_DIR m_eBondDir = BOND_DIR::OrderAndS;
- CProduct* m_pCProduct = nullptr;
- vector<PROGRAM_BOND_MATRIX_STRUCT> m_vetBondMatrix;
- map<int, POINT_INFO_STRUCT> m_mapBondMatrixInfo;
- void Sort_OrderAndZ();
- void Sort_AlternateAndZ();
- void Sort_OrderAndS();
- void Sort_AlternateAndS();
- POINT_INFO_STRUCT CalPointInfo(UINT iPtId, PROGRAM_BOND_MATRIX_STRUCT pcbMatrix, PROGRAM_POINT_MATRIX_STRUCT ptMatrix,
- int pcbRow, int pcbCol, int pointRow, int pointCol);
- LONG BondInfoConvertPorcessInfo(UINT iPcbId, BOND_INFO_STRUCT stBondInfo, PROCESS_INFO_STRUCT& stProcessInfo);
- void ProcessPointMatrix(const PROGRAM_BOND_MATRIX_STRUCT& pcbMatrix, const PROGRAM_POINT_MATRIX_STRUCT& pointMatrix, int i, int j);
-
- public:
- CBondMatrix();
- LONG LoadMatrix(BOND_DIR dir);
- public:
-
-
-
-
- UINT GetNextBondIndex(UINT nIndex);
- UINT GetPrevBondIndex(UINT nIndex);
- UINT GetNextPickIndex(UINT nIndex,DIE_SOURCE eSource = DIE_SOURCE::BY_NUL);
- UINT GetPrevPickIndex(UINT nIndex, DIE_SOURCE eSource = DIE_SOURCE::BY_NUL);
- UINT GetAmount();
- int GetWaferPickAmount();
- int GetWafflePickAmount();
-
- LONG GetPintInfoByIndex(UINT nPtIndex, POINT_INFO_STRUCT& stPointInfo);
- LONG SetPintInfoByIndex(UINT nPtIndex, POINT_INFO_STRUCT stPointInfo);
- LONG GetAllBondParam(UINT nPtIndex,BOND_PARAM& bondParam);
- LONG GetAllPickParam(UINT nPtIndex, PICK_PARAM& pickParam);
- LONG SetBondParam(int nPtIndex, BOND_PARAM bondParam);
- LONG SetPickParam(int nPtIndex, PICK_PARAM pickParam);
-
-
-
-
-
-
-
-
-
- LONG SetBondAlnInfo(UINT nPtIndex, XY_DOUBLE_STRUCT stBasePosn, DOUBLE dBaseAngle, XY_DOUBLE_STRUCT stAlnPosn, DOUBLE dAlnAngle);
-
- LONG SetBondAlnOffset(int index, X_Y_ANGLE_STRUCT offset);
- LONG SetLookupOffset(int index, X_Y_ANGLE_STRUCT offset);
- LONG ResetAlnStatus(UINT nPtIndex);
- LONG SetDieStatus(UINT nPtIndex, DIE_STATUS eStatus);
- LONG SetPickStatus(UINT nPtIndex, PICK_STATUS eStatus);
- LONG ClearWaferPickStatus();
- LONG ClearWafflePickStatus();
- LONG ClearAllBondInfo();
- };
- }
|