#include "StdAfx.h" #include "CHReviewResult/AlignResult.h" #include "CHAlignFinder/AlignFinder.h" CAlignRecipe::CAlignRecipe() { Reset(); } CAlignRecipe::~CAlignRecipe() { Reset(); } void CAlignRecipe::Reset() { nRecipeIndex = -1; m_nUseAlignPosMove = 0; bAlignSkipMode = FALSE; bUseTotalPitchMeasure = FALSE; // image matching bUseImage = TRUE; dMatchingRate = 0.8; strFirstImageFile = _T(""); strSecondImageFile = _T(""); strTotalPitchImageFile = _T(""); // edge find param bUseEdge = TRUE; nEdgeWidth = ALIGN_MARK_WIDTH; nEdgeHeight = ALIGN_MARK_HEIGHT; nEdgeThreshold = 40; nMergeRange = 4; dEdgeRate = 0.8; // nAlignMarkPosition = AlignMarkPositionLeft; nAlignMarkPosition = 0; // manual light control bManualProcess = FALSE; dFirstCamExposure = 15000.0; dSecondCamExposure = 15000.0; // auto light control bAutoProcess = FALSE; dTargetMin = 60; dTargetMax = 100; dExposureMin = 1000; dExposureMax = 30000; // rotate bRotateProcess = FALSE; nRetryCount = 3; dGlassAngleMin = 0.00000001; dGlassAngleMax = 0.00000003; for (int i=0; i<2; i++) { dOriginPixelX[i] = 0.0; dOriginPixelY[i] = 0.0; nCameraDirX[i] = 1; nCameraDirY[i] = 1; dCameraResolution[i] = 1.0; dOriginPositionX[i] = 0.0; dOriginPositionY[i] = 0.0; dGlassPositionX[i] = 0.0; dGlassPositionY[i] = 0.0; strTemplateName[i] = _T(""); } } CAlignResult::CAlignResult(void) { Reset(); } CAlignResult::~CAlignResult(void) { Reset(); } void CAlignResult::Reset() { nFindCount = 1; nResultCode = 0; for (int i=0; i<2; i++) { dFindPixelX[i] = 0.0; dFindPixelY[i] = 0.0; dFindScore[i] = 0.0; dFindPositionX[i] = 0.0; dFindPositionY[i] = 0.0; nFindAlign[i] = -1; nControlLightLevel[i] = 0; nAutoLightResult[i] = 0; dExposureTime[i] = -1.0; } } void CAlignResult::SetFindResult(const CAlignRecipe& alignRecipe) { if (nResultCode!=1) return; // calculate current mark position for (int i=0; i<2; i++) { double dRes = alignRecipe.dCameraResolution[i] / 1000.; dFindPositionX[i] = (dFindPixelX[i] - alignRecipe.dOriginPixelX[i]) * dRes; // mm dFindPositionY[i] = (dFindPixelY[i] - alignRecipe.dOriginPixelY[i]) * dRes; // mm dFindPositionX[i] *= alignRecipe.nCameraDirX[i]; // dir dFindPositionY[i] *= alignRecipe.nCameraDirY[i]; // dir dFindPositionX[i] = alignRecipe.dOriginPositionX[i] + dFindPositionX[i]; // mm dFindPositionY[i] = alignRecipe.dOriginPositionY[i] + dFindPositionY[i]; // mm } } BOOL CAlignResult::AlignFindEnd() { for(int i=0; i <2; i++) { if (nFindAlign[i]==-1) return FALSE; } return TRUE; } int CAlignResult::GetResultCode() { for(int i=0; i <2; i++) { if (nFindAlign[i]==0) return -2; } return 1; }