#include "StdAfx.h" #include "CHReviewResult/ReviewResult.h" #define MAX_MOTOR_ADDRESS_SIZE 200 using namespace CHReviewResult; SReviewResult::SReviewResult() { Reset(); } SReviewResult::~SReviewResult() { Reset(); } void SReviewResult::Reset() { CDefectResult::Reset(); nSequenceNo = 0; nResultCode = ReviewResult_None; nReviewType = 0; nModuleIdx = -1; nResultIdx = -1; nRangeIdx = 0; nZoomIdx = 0; dMagnification = 5.0; nLightLevel = 0; nExposureTime = 0; bDigitalZoom = FALSE; dTargetMotorX = 0.0; dTargetMotorY = 0.0; nUMGrabPosX = 0; nUMGrabPosY = 0; strSnapTime = _T(""); strImgFileName = _T(""); vectorImageData.clear(); vectorImageData.resize(MAX_IMAGEDATA); //Fix CD Measure 2016-03-23 dDurationTime = 0.0; nReviewSnapSerialNo = 0; nMagnificationOffsetX = 0; nMagnificationOffsetY = 0; dMeasureResolution = 0.1725; dRulerInterval = 0.1; // review find data nReview_ResultCode = 0; nReview_Width = 0; nReview_Height = 0; nReview_Length = 0; nReview_Square = 0; nReview_Stat = 0; // wsi data nWsi_ResultCode = 0; nWsi_Type = 0; nWsi_SlopeWarn = 0; memset(pWsi_ResultData, 0, sizeof(double)*Wsi_Result_Info_Count); nWsiReflowPositionIndex = 0; dWsi_DamDistance = 0.0; memset(nWsi_pReflowResultData, 0, sizeof(int)*WsiReflowInfo_Result_Info_Count); bBigSizeDefect = 0; nMultiShotNum = -1; // measure data nMeasure_RecipeIndex = -1; nMeasure_ResultCode = MeasureResult_None; vecMeasure_ResultData.clear(); vecMeasure_ResultData.resize(MAX_MEASURERESULT); // reflow data nReflow_Result = 0; memset(pReflow_LinePosData, 0x00, sizeof(int)*REFLOW_LINE_DATA); nReflow_Side = 0; nInspectionMode = 0; nReflow_CellIndex = 0; bCheckSendToMotor = 0; bCheckWSISendToMotor = 0; } CReviewResult::CReviewResult(int nModuleIndex) : m_nModuleIndex(nModuleIndex) { Reset(); } CReviewResult::~CReviewResult(void) { Reset(); } void CReviewResult::Reset(void) { m_nLastSReviewResultIndex = -1; m_nStartSReviewResultIndex = 0; m_nEndSReviewResultIndex = MAX_MOTOR_ADDRESS_SIZE-1; m_dwLastSReviewResultTick = 0; m_vecSReviewResult.clear(); } void CReviewResult::AddSReviewResult(const SReviewResult& reviewResult) { m_vecSReviewResult.push_back(reviewResult); } void CReviewResult::ResizeReviewResult(int nCount) { if (nCount < 0) return; m_vecSReviewResult.resize(nCount); } int CReviewResult::GetSReviewResultCount(int nResultCode) const { if (nResultCode==ReviewResult_None) { return (int)m_vecSReviewResult.size(); } int nCount = 0; for (constVectorSReviewResultIt it=m_vecSReviewResult.begin(); it!=m_vecSReviewResult.end(); it++) { if ((it->nResultCode & nResultCode)) { nCount++; } } return nCount; } BOOL CReviewResult::CheckComplete() const { for (constVectorSReviewResultIt it=m_vecSReviewResult.begin(); it!=m_vecSReviewResult.end(); it++) { // WSI Type Ãß°¡ [6/20/2017 bhs] if (ReviewType_Wsi == it->nReviewType) { if (it->nResultCode < WsiResultSuccess) return FALSE; } // 181130 SJB, Reflow Wsi Type Ãß°¡ else if (ReviewType_WsiReflow == it->nReviewType) { if (it->nResultCode < WsiResultSuccess) return FALSE; } else if (ReviewType_WsiUser == it->nReviewType) { if (it->nResultCode < WsiResultSuccess) return FALSE; } else { if (it->nResultCode < ReviewResult_Process_Fail) return FALSE; } } return TRUE; } SReviewResult* CReviewResult::GetSReviewResult(int nIndex) { if (nIndex<0 || nIndex>=(int)m_vecSReviewResult.size()) return NULL; return &m_vecSReviewResult[nIndex]; } const SReviewResult* CReviewResult::GetSReviewResult(int nIndex) const { if (nIndex<0 || nIndex>=(int)m_vecSReviewResult.size()) return NULL; return &m_vecSReviewResult[nIndex]; } double CReviewResult::GetTotalReviewTime() { double dTime = 0.0; for (VectorSReviewResultIt it=m_vecSReviewResult.begin(); it!=m_vecSReviewResult.end(); it++) { dTime += it->dDurationTime; } return dTime; } double CReviewResult::GetTotalReviewTime(int nIndex) { if (nIndex<0) return -1.0; double dTime = 0.0; for (int i=0; i<(int)m_vecSReviewResult.size(); i++) { dTime += m_vecSReviewResult[i].dDurationTime; } return dTime; } double CReviewResult::GetReviewTime(int nIndex) { if (nIndex<0 || nIndex>=(int)m_vecSReviewResult.size()) return -1.0; return m_vecSReviewResult[nIndex].dDurationTime; } double CReviewResult::GetReviewTime(int nStartIdx, int nEndIdx) { if (nStartIdx<0) return -1.0; if (nStartIdx>nEndIdx) return -1.0; if (nEndIdx>=(int)m_vecSReviewResult.size()) return -1.0; double dTime = 0.0; for (int i=nStartIdx; i<=nEndIdx; i++) { dTime += m_vecSReviewResult[i].dDurationTime; } return dTime; }