#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;
|
}
|