| | |
| | | } |
| | | |
| | | |
| | | // ���� ��������� ���� |
| | | // 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙占쏙옙占?占쏙옙占쏙옙 |
| | | |
| | | wsiResult.nWsi_ResultIndex = measureResut.nResultIndex; |
| | | wsiResult.nResultCode = measureResut.nResultCode; |
| | |
| | | memcpy(wsiResult.pWsi_ResultData, measureResut.pResultData, sizeof(wsiResult.pWsi_ResultData)); |
| | | |
| | | |
| | | // ��� ������ �߰� |
| | | // 占쏙옙占?占쏙옙占쏙옙占쏙옙 占쌩곤옙 |
| | | SReviewResult *pProcessResult = NULL; |
| | | if (pGlassResult->SetWsiResultData(nModuleIndex, nCurResultIdx, wsiResult, nGlassPosX, nGlassPosY, nMotorPosX, nMotorPosY, dTime)) |
| | | { |
| | |
| | | |
| | | LeaveCriticalSection(&m_csUserCriticalSection); |
| | | |
| | | // ��� ����. |
| | | // 占쏙옙占?占쏙옙占쏙옙. |
| | | m_pRP2P->IRP2P_UpdateReviewResult(nModuleIndex, pGlassResult); |
| | | return; |
| | | |
| | |
| | | g_pLog->DisplayMessage(_T("[ReviewProcessor]SetWsiResultData module[%d] point[%d] result[%d]"), nModuleIndex, measureResut.nResultIndex, nCurResultIdx); |
| | | } |
| | | |
| | | // ���� ��������� ���� |
| | | // 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙占쏙옙占?占쏙옙占쏙옙 |
| | | wsiUserResult.nWsi_ResultCode = measureResut.nResultCode; |
| | | wsiUserResult.nWsi_Type = measureResut.nResultType; |
| | | wsiUserResult.nWsi_SlopeWarn = measureResut.nXSlopeWarn; |
| | | memcpy(wsiUserResult.pWsi_ResultData, measureResut.pResultData, sizeof(wsiUserResult.pWsi_ResultData)); |
| | | |
| | | |
| | | // ��� ������ �߰� |
| | | // 占쏙옙占?占쏙옙占쏙옙占쏙옙 占쌩곤옙 |
| | | SReviewResult *pProcessResult = NULL; |
| | | if (pGlassResult->SetUserWsiResultData(nModuleIndex, nCurResultIdx, wsiUserResult, nGlassPosX, nGlassPosY, nMotorPosX, nMotorPosY, dTime)) |
| | | { |
| | |
| | | |
| | | LeaveCriticalSection(&m_csUserCriticalSection); |
| | | |
| | | // ��� ����. |
| | | // 占쏙옙占?占쏙옙占쏙옙. |
| | | m_pRP2P->IRP2P_UpdateReviewResult(nModuleIndex, pGlassResult); |
| | | return; |
| | | |
| | |
| | | g_pLog->DisplayMessage(_T("[ReviewProcessor]SetWsiMultiShotResultData module[%d] point[%d] result[%d]"), nModuleIndex, measureResut.nResultIndex, nCurResultIdx); |
| | | } |
| | | |
| | | // ���� ��������� ���� |
| | | // 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙占쏙옙占?占쏙옙占쏙옙 |
| | | wsiResult.nWsi_ResultCode = measureResut.nResultCode; |
| | | wsiResult.nWsi_Type = measureResut.nResultType; |
| | | wsiResult.nWsi_SlopeWarn = measureResut.nXSlopeWarn; |
| | |
| | | memcpy(wsiResult.pWsi_ResultData, measureResut.pResultData, sizeof(wsiResult.pWsi_ResultData)); |
| | | |
| | | |
| | | // ��� ������ �߰� |
| | | // 占쏙옙占?占쏙옙占쏙옙占쏙옙 占쌩곤옙 |
| | | SReviewResult *pProcessResult = NULL; |
| | | if (pGlassResult->SetWsiResultData(nModuleIndex, nCurResultIdx, wsiResult, nGlassPosX, nGlassPosY, nMotorPosX, nMotorPosY, dTime)) |
| | | { |
| | |
| | | |
| | | LeaveCriticalSection(&m_csUserCriticalSection); |
| | | |
| | | // ��� ����. |
| | | // 占쏙옙占?占쏙옙占쏙옙. |
| | | m_pRP2P->IRP2P_UpdateReviewResult(nModuleIndex, pGlassResult); |
| | | return; |
| | | |
| | |
| | | g_pLog->DisplayMessage(_T("[ReviewProcessor]SetReviewResultData module[%d] point[%d] result[%d]"), nModuleIndex, nResultIndex, nCurResultIdx); |
| | | } |
| | | |
| | | // ���� ����̹��� ���� |
| | | // 占쏙옙占쏙옙 占쏙옙占쏙옙譴占쏙옙占?占쏙옙占쏙옙 |
| | | SReviewResult *pProcessResult = NULL; |
| | | switch(GetReviewProcessStatus()) |
| | | { |
| | |
| | | } |
| | | LeaveCriticalSection(&m_csUserCriticalSection); |
| | | |
| | | //���� ��� ����������Ʈ ������ ���ع����� �Ʒ� ������ ��Ÿ�� �ٽ� ������ǥ �Ƚ��� |
| | | //占쏙옙占쏙옙 占쏙옙占?占쏙옙占쏙옙占쏙옙占쏙옙占쏙옙트 占쏙옙占쏙옙占쏙옙 占쏙옙占쌔뱄옙占쏙옙占쏙옙 占싣뤄옙 占쏙옙占쏙옙占쏙옙 占쏙옙타占쏙옙 占쌕쏙옙 占쏙옙占쏙옙占쏙옙표 占싫쏙옙占쏙옙 |
| | | // ��ȣó�� �ʿ��� �̰� ���� |
| | | if (nCurResultIdx + 1== pReviewResult->GetSReviewResultCount()) |
| | | { |
| | |
| | | |
| | | if (bLeftGantryReviewDone&&bRightGantryReviewDone) |
| | | { |
| | | ::Sleep(3000); // ����̴� �ʼ���. ������ ���� ����. |
| | | ::Sleep(3000); // 占쏙옙占쏙옙甄占?占십쇽옙占쏙옙. 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙. |
| | | g_pLog->DisplayMessage(_T("[ReviewProcessor]RemainReview Started module[%d]"), nModuleIndex); |
| | | CSequenceProcessor* pSequenceProcessor = m_pRP2P->IRP2P_GetSequenceProcessor(); |
| | | switch (GetReviewProcessStatus()) |
| | |
| | | } |
| | | else if(m_pRP2P->IRP2P_Recipe_GetRsRcpReviewInfo()->GetRcpSchedulingInfo()->GetSingleGantryPath()>0) |
| | | { |
| | | //20210302 �̱� ��Ʈ�� ���� ���� ������ �ΰ��� ��Ʈ���� �Ϸ�� ���¿��� |
| | | //������ �ؾߵ����� Review ���� Count üũ �ϴ� ������� �Ѱ�Ʈ�� ���� 200������ ���ߴ� ���� �� |
| | | //���� �̱� ��Ʈ�� ���� ����ó�� �Ͽ� �����ϵ��� �ٲ�ߵ� CHM |
| | | //20210302 占싱깍옙 占쏙옙트占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 占싸곤옙占쏙옙 占쏙옙트占쏙옙占쏙옙 占싹뤄옙占?占쏙옙占승울옙占쏙옙 |
| | | //占쏙옙占쏙옙占쏙옙 占쌔야듸옙占쏙옙占쏙옙 Review 占쏙옙占쏙옙 Count 체크 占싹댐옙 占쏙옙占쏙옙占쏙옙占?占싼곤옙트占쏙옙 占쏙옙占쏙옙 200占쏙옙占쏙옙占쏙옙 占쏙옙占쌩댐옙 占쏙옙占쏙옙 占쌩삼옙 |
| | | //占쌓뤄옙占쏙옙 占싱깍옙 占쏙옙트占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙처占쏙옙 占싹울옙 占쏙옙占쏙옙占싹듸옙占쏙옙 占쌕뀐옙森占?CHM |
| | | g_pLog->DisplayMessage(_T("[ReviewProcessor]Single GantryPath Use"), nModuleIndex); |
| | | if (bLeftGantryReviewDone || bRightGantryReviewDone) |
| | | { |
| | | ::Sleep(3000); // ����̴� �ʼ���. ������ ���� ����. |
| | | ::Sleep(3000); // 占쏙옙占쏙옙甄占?占십쇽옙占쏙옙. 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙. |
| | | g_pLog->DisplayMessage(_T("[ReviewProcessor]RemainReview Started module[%d]"), nModuleIndex); |
| | | CSequenceProcessor* pSequenceProcessor = m_pRP2P->IRP2P_GetSequenceProcessor(); |
| | | switch (GetReviewProcessStatus()) |
| | |
| | | |
| | | } |
| | | |
| | | // ������ ����Ʈ���� ��, ������ ����� ���� ������... |
| | | // 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙트占쏙옙占쏙옙 占쌉곤옙, 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙占?占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙... |
| | | if(nCurResultIdx==nEndResultIdx && nCurResultIdx+1 < pReviewResult->GetSReviewResultCount()) |
| | | { |
| | | |
| | |
| | | pReviewResult->SetEndSReviewResultIndex(nEndResultIdx); |
| | | |
| | | // ������ ����Ʈ ���� ��������. |
| | | ::Sleep(3000); // ����̴� �ʼ���. ������ ���� ����. |
| | | ::Sleep(3000); // 占쏙옙占쏙옙甄占?占십쇽옙占쏙옙. 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙. |
| | | if (bLeftGantryReviewDone&&bRightGantryReviewDone) |
| | | { |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | // ��� ����. |
| | | // 占쏙옙占?占쏙옙占쏙옙. |
| | | m_pRP2P->IRP2P_UpdateReviewResult(nModuleIndex, pGlassResult, m_nReviewPlanIndex); |
| | | return; |
| | | |
| | |
| | | pReviewResult->strSnapTime.Format(_T("%04d%02d%02d%02d%02d%02d"), snapTime.GetYear(), snapTime.GetMonth(), snapTime.GetDay(), |
| | | snapTime.GetHour(), snapTime.GetMinute(), snapTime.GetSecond()); // snap_time |
| | | |
| | | // ���� ���ε� �̹��� ���� �̸� ����� |
| | | // 占쏙옙占쏙옙 占쏙옙占싸듸옙 占싱뱄옙占쏙옙 占쏙옙占쏙옙 占싱몌옙 占쏙옙占쏙옙占? |
| | | CString strImageFileName = _T(""); |
| | | if (MakeReviewImageFileName(pReviewResult)==FALSE) |
| | | { |
| | | |
| | | } |
| | | |
| | | //������� ���� �� ���� �̹��� �̸� �� ��ǥ ä���ֱ� |
| | | //占쏙옙占쏙옙占쏙옙占?占쏙옙占쏙옙 占쌨몌옙 占쏙옙占쏙옙 占싱뱄옙占쏙옙 占싱몌옙 占쏙옙 占쏙옙표 채占쏙옙占쌍깍옙 |
| | | if(!UpdateMemoryReviewPlan(pReviewResult)) |
| | | m_pRP2P->IRP2P_DisplayMessage(_T("[ReviewPlan] Memory Update Fail!! DefectIdx : %d"), pReviewResult->nDefectidx2); |
| | | |
| | |
| | | // UINT64 nSize = SaveReviewImage(&uploadImage, strPath, m_nReviewImageSize, m_nReviewImageQuality, m_nReviewImageStep); |
| | | //if (nSize > 0) |
| | | // m_pRP2P->IRP2P_DisplayMessage(_T("Backup Review Image Save Success! Size: %d byte [%s]"), nSize, pReviewResult->strUploadImgFileName); |
| | | // ���ε� �̹��� ��� ���� 20190917 chm |
| | | // 占쏙옙占싸듸옙 占싱뱄옙占쏙옙 占쏙옙占?占쏙옙占쏙옙 20190917 chm |
| | | strPath.Format(_T("%s\\%s"), m_strSaveImageUploadPath, pReviewResult->strUploadImgFileName); |
| | | nSize = SaveReviewImage(&uploadImage, strPath, m_nReviewImageSize, m_nReviewImageQuality, m_nReviewImageStep); |
| | | |
| | |
| | | { |
| | | m_pRP2P->IRP2P_DisplayMessage(_T("RTMS Review Image Save Fail!!")); |
| | | } |
| | | <<<<<<< HEAD |
| | | else m_pRP2P->IRP2P_DisplayMessage(_T("RTMS Review Image Save Success! Size: %d byte [%s]"), nSize, strRTMSPath); |
| | | ======= |
| | | |
| | | else m_pRP2P->IRP2P_DisplayMessage(_T("RTMS Review Image Save Success! Size: %d byte [%s] index[%d]"), nSize, strRTMSPath, pReviewResult->nDefectIdx); //taek 210128 �ӵ� ������ �ӽ÷� �α� ������ ���� |
| | | >>>>>>> feature/#3486_CF_AOI_Review_Review_History_프로그램_테스트_및_적용 |
| | | |
| | | } |
| | | if (nSize > 0) |
| | | { |
| | | |
| | | int aoiindex = CDitGlassRawClient::GetInstance()->GetDefectData(pReviewResult->nDefectidx2)->m_nDefectIdx; |
| | | <<<<<<< HEAD |
| | | |
| | | m_pRP2P->IRP2P_DisplayMessage(_T("Upload Review Image Save Success! Size: %d byte [%s] index[%d] AOI NO[%d]"), nSize, pReviewResult->strUploadImgFileName, pReviewResult->nDefectIdx, aoiindex); //taek 210128 속도 문제로 임시로 로그 남기지 않음 |
| | | ======= |
| | | m_pRP2P->IRP2P_DisplayMessage(_T("Upload Review Image Save Success! Size: %d byte [%s] index[%d] AOI NO[%d]"), nSize, strRTMSPath, pReviewResult->nDefectIdx, aoiindex); //taek 210128 �ӵ� ������ �ӽ÷� �α� ������ ���� |
| | | >>>>>>> feature/#3486_CF_AOI_Review_Review_History_프로그램_테스트_및_적용 |
| | | //m_pRP2P->IRP2P_DisplayMessage(_T("Upload Review Image Save Success! Size: %d byte [%s]"), nSize, pReviewResult->strUploadImgFileName); |
| | | } |
| | | else |
| | |
| | | const CRsRcpReviewInfo* psRcpReviewInfo = m_pRP2P->IRP2P_Recipe_GetRsRcpReviewInfo(); |
| | | if(psRcpReviewInfo== NULL) m_pRP2P->IRP2P_DisplayMessage(_T("RcpReviewInfo is NULL")); |
| | | |
| | | if(psRcpReviewInfo->m_bDefocusUse) //190819chm ����Ŀ�� �˶� ��� |
| | | if(psRcpReviewInfo->m_bDefocusUse) //190819chm 占쏙옙占쏙옙커占쏙옙 占싯띰옙 占쏙옙占? |
| | | { |
| | | if(pReviewResult->nLocation == DefectLoc_ASG || pReviewResult->nLocation == DefectLoc_PAD || pReviewResult->nLocation == DefectLoc_C2C) |
| | | { |
| | |
| | | pReviewResult->strSnapTime.Format(_T("%04d%02d%02d%02d%02d%02d"), snapTime.GetYear(), snapTime.GetMonth(), snapTime.GetDay(), |
| | | snapTime.GetHour(), snapTime.GetMinute(), snapTime.GetSecond()); // snap_time |
| | | |
| | | // ���� ���ε� �̹��� ���� �̸� ����� |
| | | // 占쏙옙占쏙옙 占쏙옙占싸듸옙 占싱뱄옙占쏙옙 占쏙옙占쏙옙 占싱몌옙 占쏙옙占쏙옙占? |
| | | CString strImageFileName = _T(""); |
| | | if (MakeUserImageFileName(pReviewResult)==FALSE) |
| | | { |
| | |
| | | //uploadImage.SaveImage(strPath, 40); // ȭ�� 60% 150k |
| | | if(GetReviewProcessStatus() == ReviewProcessStatus_UserStart) |
| | | { |
| | | // ���ε� �̹��� ��� ���� 20190917 chm |
| | | // 占쏙옙占싸듸옙 占싱뱄옙占쏙옙 占쏙옙占?占쏙옙占쏙옙 20190917 chm |
| | | //strPath.Format(_T("%s\\%s\\%s"), m_strSaveImageUploadPath, m_strGlassID, pReviewResult->strUploadImgFileName); |
| | | strPath.Format(_T("%s\\%s"), m_strSaveImageUploadPath, pReviewResult->strUploadImgFileName); |
| | | nSize = SaveReviewImage(&uploadImage, strPath, m_nReviewImageSize, m_nReviewImageQuality, m_nReviewImageStep); |
| | |
| | | const CRsRcpReviewInfo* psRcpReviewInfo = m_pRP2P->IRP2P_Recipe_GetRsRcpReviewInfo(); |
| | | if(psRcpReviewInfo== NULL) m_pRP2P->IRP2P_DisplayMessage(_T("RcpReviewInfo is NULL")); |
| | | |
| | | if(psRcpReviewInfo->m_bDefocusUse) //190819chm ����Ŀ�� �˶� ��� |
| | | if(psRcpReviewInfo->m_bDefocusUse) //190819chm 占쏙옙占쏙옙커占쏙옙 占싯띰옙 占쏙옙占? |
| | | { |
| | | if(pReviewResult->nLocation == DefectLoc_ASG || pReviewResult->nLocation == DefectLoc_PAD || pReviewResult->nLocation == DefectLoc_C2C) |
| | | { |
| | |
| | | pReviewResult->strSnapTime.Format(_T("%04d%02d%02d%02d%02d%02d"), snapTime.GetYear(), snapTime.GetMonth(), snapTime.GetDay(), |
| | | snapTime.GetHour(), snapTime.GetMinute(), snapTime.GetSecond()); // snap_time |
| | | |
| | | // ���� ���ε� �̹��� ���� �̸� ����� |
| | | // 占쏙옙占쏙옙 占쏙옙占싸듸옙 占싱뱄옙占쏙옙 占쏙옙占쏙옙 占싱몌옙 占쏙옙占쏙옙占? |
| | | CString strImageFileName = _T(""); |
| | | if (MakeReflowImageFileName(pReviewResult)==FALSE) |
| | | { |
| | |
| | | |
| | | |
| | | reflowParam reParam; //Reflow ���� ���� |
| | | reflowResult reResult;//Reflow ��� ���� |
| | | reflowResult reResult;//Reflow 占쏙옙占?占쏙옙占쏙옙 |
| | | |
| | | ////////////////////////////////////////////////////////////////////////////////////////////// |
| | | BOOL btFlag =0; |
| | |
| | | //uploadImage.SaveImage(strPath, 40); // ȭ�� 60% 150k |
| | | if(GetReviewProcessStatus() == ReviewProcessStatus_ReflowStart) |
| | | { |
| | | // ���ε� �̹��� ��� ���� 20190917 chm |
| | | // 占쏙옙占싸듸옙 占싱뱄옙占쏙옙 占쏙옙占?占쏙옙占쏙옙 20190917 chm |
| | | //strPath.Format(_T("%s\\%s\\%s"), m_strSaveImageUploadPath, m_strGlassID, pReviewResult->strUploadImgFileName); |
| | | strPath.Format(_T("%s\\%s"), m_strSaveImageUploadPath, pReviewResult->strUploadImgFileName); |
| | | nSize = SaveReviewImage(&uploadImage, strPath, m_nReviewImageSize, m_nReviewImageQuality, m_nReviewImageStep); |
| | |
| | | |
| | | if(GetReviewProcessStatus() == ReviewProcessStatus_ReviewStart) |
| | | { |
| | | // [2017:6:5]-[WEZASW] : Review Image ���ϸ�� '*' ��� ����.(����ó��) |
| | | // [2017:6:5]-[WEZASW] : Review Image 占쏙옙占싹몌옙占?'*' 占쏙옙占?占쏙옙占쏙옙.(占쏙옙占쏙옙처占쏙옙) |
| | | if (pReviewResult->strDefectCode.Compare(_T("***")) == 0) |
| | | strDefectCodeTemp = _T("DC"); |
| | | else |
| | |
| | | snapTime.GetHour(), snapTime.GetMinute(), snapTime.GetSecond()); // snap_time |
| | | |
| | | |
| | | // [2017:4:10]-[WEZASW] : ����� ��û�� ���� bmp ���� �߰� ����. (�ӽû��) |
| | | // [2017:4:10]-[WEZASW] : 占쏙옙占쏙옙占?占쏙옙청占쏙옙 占쏙옙占쏙옙 bmp 占쏙옙占쏙옙 占쌩곤옙 占쏙옙占쏙옙. (占쌈시삼옙占? |
| | | pReviewResult->strOrignalImgFileName = strFileName + _T(".bmp"); |
| | | |
| | | strFileName += _T(".jpg"); |
| | |
| | | |
| | | if(GetReviewProcessStatus() == ReviewProcessStatus_UserStart) |
| | | { |
| | | // [2017:6:5]-[WEZASW] : Review Image ���ϸ�� '*' ��� ����.(����ó��) |
| | | // [2017:6:5]-[WEZASW] : Review Image 占쏙옙占싹몌옙占?'*' 占쏙옙占?占쏙옙占쏙옙.(占쏙옙占쏙옙처占쏙옙) |
| | | if (pReviewResult->strDefectCode.Compare(_T("***")) == 0) |
| | | strDefectCodeTemp = _T("DC"); |
| | | else |
| | |
| | | // strFileName += pReviewResult->strSnapTime; |
| | | // } |
| | | |
| | | // [2017:4:10]-[WEZASW] : ����� ��û�� ���� bmp ���� �߰� ����. (�ӽû��) |
| | | // [2017:4:10]-[WEZASW] : 占쏙옙占쏙옙占?占쏙옙청占쏙옙 占쏙옙占쏙옙 bmp 占쏙옙占쏙옙 占쌩곤옙 占쏙옙占쏙옙. (占쌈시삼옙占? |
| | | pReviewResult->strOrignalImgFileName = strFileName + _T(".bmp"); |
| | | |
| | | strFileName += _T(".jpg"); |
| | |
| | | |
| | | FindAoiDefectImagePath(strGlassID, nOpticType, nPosX, nPosY, strAoiDarkPath, strAoiBrightPath); |
| | | |
| | | // Dark, Bright ��� ã�� ���� �ּ�ó�� [2017.7.1 bhs] |
| | | // Dark, Bright 占쏙옙占?찾占쏙옙 占쏙옙占쏙옙 占쌍쇽옙처占쏙옙 [2017.7.1 bhs] |
| | | // Dark image |
| | | //if(nOpticType & DEFECT_OPTIC_DARK) |
| | | { |
| | |
| | | CFileFind finder; |
| | | CString strSearchPath = _T(""); |
| | | |
| | | // Dark, Bright ��� ã�� ���� �ּ�ó�� [2017.7.1 bhs] |
| | | // Dark, Bright 占쏙옙占?찾占쏙옙 占쏙옙占쏙옙 占쌍쇽옙처占쏙옙 [2017.7.1 bhs] |
| | | //if (nOpticType & DEFECT_OPTIC_DARK) |
| | | { |
| | | // Dark field |
| | |
| | | processTimer.End(); |
| | | } |
| | | |
| | | // 4-3. ������� ��� |
| | | // 4-3. 占쏙옙占쏙옙占쏙옙占?占쏙옙占? |
| | | double dAverageGray = 0.0; |
| | | if (CCHImageProcess::ImageAverage(&bandImage, dAverageGray)==1) |
| | | { |
| | |
| | | double dRulerGab = 20.0 / m_dReviewImageScale; |
| | | double dScaleResolution = pReviewResult->dMeasureResolution / m_dReviewImageScale; |
| | | |
| | | //DrawRuler(&memDC, nTotalWidth, nTotalHeight2, dScaleResolution, dRulerGab); // resolution, ruler gab //taek 210127 ��� X |
| | | //DrawRuler(&memDC, nTotalWidth, nTotalHeight2, dScaleResolution, dRulerGab); // resolution, ruler gab //taek 210127 占쏙옙占?X |
| | | |
| | | // draw text string |
| | | DrawDefectInfo(&memDC, findResult, pReviewResult); |
| | |
| | | int nTotalWidth = int(m_nReviewResizeWidth * m_dReviewImageScale + 0.5); |
| | | int nTotalHeight = int(m_nReviewResizeHeight * m_dReviewImageScale + 0.5); |
| | | |
| | | // Dark, Bright �̹����� ������ �ٵ��� ����, Dark ��, Bright �Ʒ� - ����� ��û[2017.6.30 bhs] |
| | | // Dark, Bright 占싱뱄옙占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 占쌕듸옙占쏙옙 占쏙옙占쏙옙, Dark 占쏙옙, Bright 占싣뤄옙 - 占쏙옙占쏙옙占?占쏙옙청[2017.6.30 bhs] |
| | | //int nX = nTotalWidth - nWidth; |
| | | //int nY = nTotalHeight - (nHeight * 2); |
| | | |
| | |
| | | //pAoiDark1->ShowImage(pDC->m_hDC, nTotalWidth - nWidth, nTotalHei4ght-nHeight, pAoiDark1->GetWidth(), pAoiDark1->GetHeight(), 0, 0); |
| | | //pAoiBright1->ShowImage(pDC->m_hDC, nTotalWidth - nWidth, nTotalHeight-nHeight, pAoiBright1->GetWidth(), pAoiBright1->GetHeight(), 0, 0); |
| | | |
| | | // �˻� �̹��� �߾ӿ� ȭ��ǥ ǥ�� - ����� ��û [2017.6.30 bhs] |
| | | // 占싯삼옙 占싱뱄옙占쏙옙 占쌩앙울옙 화占쏙옙표 표占쏙옙 - 占쏙옙占쏙옙占?占쏙옙청 [2017.6.30 bhs] |
| | | CFont Font; |
| | | VERIFY(Font.CreateFont( |
| | | 50, // nHeight |
| | |
| | | } |
| | | |
| | | //taek 210127 |
| | | //������� ��ǥ�� y �� *-1�� ���� |
| | | //占쏙옙占쏙옙占쏙옙占?占쏙옙표占쏙옙 y 占쏙옙 *-1占쏙옙 占쏙옙占쏙옙 |
| | | //���� ID, �˻� ī�� ����, �˻� Camera ���� : (? ) ķ ?, Cell ID, Review Cam ���� : Gantry ����, ���� Size, ���� Zone ����, Stak Flag, CODE ����, ��ǥ ���� |
| | | |
| | | // PPID |
| | |
| | | |
| | | if(GetReviewProcessStatus() == ReviewProcessStatus_ReflowStart) |
| | | { |
| | | // [2017:6:5]-[WEZASW] : Review Image ���ϸ�� '*' ��� ����.(����ó��) |
| | | // [2017:6:5]-[WEZASW] : Review Image 占쏙옙占싹몌옙占?'*' 占쏙옙占?占쏙옙占쏙옙.(占쏙옙占쏙옙처占쏙옙) |
| | | if (pReviewResult->strDefectCode.Compare(_T("***")) == 0) |
| | | strDefectCodeTemp = _T("DC"); |
| | | else |
| | |
| | | // strFileName += pReviewResult->strSnapTime; |
| | | // } |
| | | |
| | | // [2017:4:10]-[WEZASW] : ����� ��û�� ���� bmp ���� �߰� ����. (�ӽû��) |
| | | // [2017:4:10]-[WEZASW] : 占쏙옙占쏙옙占?占쏙옙청占쏙옙 占쏙옙占쏙옙 bmp 占쏙옙占쏙옙 占쌩곤옙 占쏙옙占쏙옙. (占쌈시삼옙占? |
| | | pReviewResult->strOrignalImgFileName = strFileName + _T(".bmp"); |
| | | |
| | | strFileName += _T(".jpg"); |
| | |
| | | g_pLog->DisplayMessage(_T("[ReviewProcessor]SetWsiResultData module[%d] point[%d] result[%d]"), nModuleIndex, measureResut.nResultIndex, nCurResultIdx); |
| | | } |
| | | |
| | | // ���� ��������� ���� |
| | | // 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙占쏙옙占?占쏙옙占쏙옙 |
| | | wsiResult.nWsi_ResultCode = measureResut.nResultCode; |
| | | wsiResult.dWsi_DamDistance = measureResut.dDamDistance; |
| | | |
| | |
| | | } |
| | | //memcpy(wsiResult.nWsi_pReflowResultData, measureResut.pReflowResultData, sizeof(wsiResult.nWsi_pReflowResultData)); |
| | | |
| | | // ��� ������ �߰� |
| | | // 占쏙옙占?占쏙옙占쏙옙占쏙옙 占쌩곤옙 |
| | | SReviewResult *pProcessResult = NULL; |
| | | if (pGlassResult->SetWsiReflowResultData(nModuleIndex, nCurResultIdx, wsiResult, nGlassPosX, nGlassPosY, nMotorPosX, nMotorPosY, dTime)) |
| | | { |
| | |
| | | |
| | | LeaveCriticalSection(&m_csUserCriticalSection); |
| | | |
| | | // ��� ����. |
| | | // 占쏙옙占?占쏙옙占쏙옙. |
| | | m_pRP2P->IRP2P_UpdateReviewResult(nModuleIndex, pGlassResult, 5); |
| | | return; |
| | | |
| | |
| | | nResultPosY = double(GLASS_SIZE_HEIGHT)/2. - dPosY; |
| | | |
| | | } |
| | | else if(nCornercut == RPCRightTop)//��� |
| | | else if(nCornercut == RPCRightTop)//占쏙옙占? |
| | | { |
| | | nResultPosX = double(GLASS_SIZE_WIDTH)/2. - dPosX; |
| | | nResultPosY = double(GLASS_SIZE_HEIGHT)/2. + dPosY; |
| | |
| | | } |
| | | } |
| | | |
| | | else if(nOriginDirection==RPORightTop){//��������� |
| | | else if(nOriginDirection==RPORightTop){//占쏙옙占쏙옙占쏙옙占쏙옙占? |
| | | |
| | | if(nCornercut == RPCLeftTop)//�»� |
| | | { |
| | |
| | | nResultPosY = double(GLASS_SIZE_HEIGHT)/2. + dPosY; |
| | | |
| | | } |
| | | else if(nCornercut == RPCRightTop)//��� |
| | | else if(nCornercut == RPCRightTop)//占쏙옙占? |
| | | { |
| | | nResultPosX = double(GLASS_SIZE_WIDTH)/2. - dPosX; |
| | | nResultPosY = double(GLASS_SIZE_HEIGHT)/2. - dPosY; |
| | |
| | | nResultPosX = double(GLASS_SIZE_WIDTH) / 2. + dPosX; |
| | | nResultPosY = double(GLASS_SIZE_HEIGHT) / 2. + dPosY; |
| | | } |
| | | else if(nCornercut == RPCRightTop)//��� |
| | | else if(nCornercut == RPCRightTop)//占쏙옙占? |
| | | { |
| | | nResultPosX = double(GLASS_SIZE_WIDTH)/2. + dPosX; |
| | | nResultPosY = double(GLASS_SIZE_HEIGHT)/2. + dPosY; |
| | |
| | | nResultPosY = double(GLASS_SIZE_HEIGHT)/2. + dPosY; |
| | | |
| | | } |
| | | else if(nCornercut == RPCRightTop)//��� |
| | | else if(nCornercut == RPCRightTop)//占쏙옙占? |
| | | { |
| | | nResultPosX = double(GLASS_SIZE_WIDTH)/2. + dPosX; |
| | | nResultPosY = double(GLASS_SIZE_HEIGHT)/2. - dPosY; |
| | |
| | | CString strFileName = _T(""); |
| | | CString strDefectCodeTemp = _T(""); |
| | | |
| | | // [2017:6:5]-[WEZASW] : Review Image ���ϸ�� '*' ��� ����.(����ó��) |
| | | // [2017:6:5]-[WEZASW] : Review Image 占쏙옙占싹몌옙占?'*' 占쏙옙占?占쏙옙占쏙옙.(占쏙옙占쏙옙처占쏙옙) |
| | | if (pReviewResult->strDefectCode.Compare(_T("***")) == 0) |
| | | strDefectCodeTemp = _T("DC"); |
| | | else |
| | |
| | | { |
| | | if(pReviewResult == NULL) return FALSE; |
| | | |
| | | //������� ���� �� ���� �̹��� �̸� �� ��ǥ ä���ֱ� |
| | | //占쏙옙占쏙옙占쏙옙占?占쏙옙占쏙옙 占쌨몌옙 占쏙옙占쏙옙 占싱뱄옙占쏙옙 占싱몌옙 占쏙옙 占쏙옙표 채占쏙옙占쌍깍옙 |
| | | CDitGlassRawClient *pDitGlassRawCleint = CDitGlassRawClient::GetInstance(); |
| | | if(pDitGlassRawCleint->isConnect() == TRUE) |
| | | { |
| | |
| | | strcpy(pSharedGlassData->m_strAlignFirst, m_strReviewFirst.MakeLower()); |
| | | strcpy(pSharedGlassData->m_strAlignSecond, m_strReviewSecned.MakeLower()); |
| | | |
| | | pSharedDefectReview->m_nPlanType = ditRaw::RPT_Review; //0:None, 1:Location(User, Fiexed) Review, 4:reflower, ??:Wsi, 1000:AOI(�ܺ� ���� ���� ���) |
| | | pSharedDefectReview->m_nPlanType = ditRaw::RPT_Review; //0:None, 1:Location(User, Fiexed) Review, 4:reflower, ??:Wsi, 1000:AOI(占쌤븝옙 占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占? |
| | | pSharedDefectReview->m_nResultCode = 1; //0:None, 1:Success |
| | | pSharedDefectReview->m_nShotIndex = pReviewResult->nResultIdx; |
| | | //pSharedDefectReview->m_nShotIndex = GetPlanReviewCount(); //RTMS ���ؿ� ���� ���� ������ ��� �ƴϸ� ������ �ϴ� �ɷ� taek 210128 |
| | | //pSharedDefectReview->m_nShotIndex = GetPlanReviewCount(); //RTMS 占쏙옙占쌔울옙 占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 占쏙옙占?占싣니몌옙 占쏙옙占쏙옙占쏙옙 占싹댐옙 占심뤄옙 taek 210128 |
| | | pSharedDefectReview->m_nModuleIndex = pReviewResult->nModuleIdx; |
| | | pSharedDefectReview->m_nMagnificIndex = 20; |
| | | pSharedDefectReview->m_fManification =pReviewResult->dMagnification; |
| | |
| | | |
| | | BOOL CReviewProcessor_CPJT::UpdateMemoryUserPlan( SReviewResult* pReviewResult ) |
| | | { |
| | | //������� ���� �� ���� �̹��� �̸� �� ��ǥ ä���ֱ� |
| | | //占쏙옙占쏙옙占쏙옙占?占쏙옙占쏙옙 占쌨몌옙 占쏙옙占쏙옙 占싱뱄옙占쏙옙 占싱몌옙 占쏙옙 占쏙옙표 채占쏙옙占쌍깍옙 |
| | | CDitGlassRawClient *pDitRawClient = CDitGlassRawClient::GetInstance(); |
| | | if(pDitRawClient->isConnect() == TRUE) |
| | | { |
| | |
| | | |
| | | strcpy(pSharedDefectReview->m_strRevImageName,pReviewResult->strImgFileName); |
| | | |
| | | pSharedDefectReview->m_nPlanType = ditRaw::RPT_User; //0:None, 1:Location(User, Fiexed) Review, 4:reflower, ??:Wsi, 1000:AOI(�ܺ� ���� ���� ���) |
| | | pSharedDefectReview->m_nPlanType = ditRaw::RPT_User; //0:None, 1:Location(User, Fiexed) Review, 4:reflower, ??:Wsi, 1000:AOI(占쌤븝옙 占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占? |
| | | pSharedDefectReview->m_nResultCode = 1; //0:None, 1:Success |
| | | pSharedDefectReview->m_nShotIndex = pReviewResult->nResultIdx; |
| | | pSharedDefect->m_nShotIdx = pReviewResult->nResultIdx; |
| | |
| | | BOOL CReviewProcessor_CPJT::UpdateMemoryReflowPlan( SReviewResult* pReviewResult ) |
| | | { |
| | | if(pReviewResult == NULL) return FALSE; |
| | | //������� ���� �� ��� ä�� �ֱ� |
| | | //占쏙옙占쏙옙占쏙옙占?占쏙옙占쏙옙 占쌨모리울옙 占쏙옙占?채占쏙옙 占쌍깍옙 |
| | | CDitGlassRawClient *pDitRawClient = CDitGlassRawClient::GetInstance(); |
| | | //int nEqpID = m_pSP2P->ISP2P_System_GetSystemInfo()->m_nMachineType; |
| | | CString strCellID = _T(""); |
| | |
| | | nReflowjuge=1; |
| | | } |
| | | |
| | | // ����� ��û���� ������. 0,1 Position�� Pass |
| | | // 占쏙옙占쏙옙占?占쏙옙청占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙. 0,1 Position占쏙옙 Pass |
| | | else if(nReflowjuge == 3 || nReflowjuge == 2) |
| | | { |
| | | m_pRP2P->IRP2P_DisplayMessage(_T("[ReflowResult] Reflow Judge Is No OverFlow %d"),nReflowjuge); |
| | |
| | | { |
| | | if(pReviewResult == NULL) return FALSE; |
| | | |
| | | //������� ���� �� ��� ä�� �ֱ� |
| | | //占쏙옙占쏙옙占쏙옙占?占쏙옙占쏙옙 占쌨모리울옙 占쏙옙占?채占쏙옙 占쌍깍옙 |
| | | CDitGlassRawClient *pDitGlassRawClient = CDitGlassRawClient::GetInstance(); |
| | | |
| | | if(pDitGlassRawClient->isConnect() == TRUE) |
| | |
| | | BOOL CReviewProcessor_CPJT::UpdateMemoryWsiReflowPlan( SReviewResult* pReviewResult ) |
| | | { |
| | | if(pReviewResult == NULL) return FALSE; |
| | | //������� ���� �� ��� ä�� �ֱ� |
| | | //占쏙옙占쏙옙占쏙옙占?占쏙옙占쏙옙 占쌨모리울옙 占쏙옙占?채占쏙옙 占쌍깍옙 |
| | | CDitGlassRawClient *pDitRawClient = CDitGlassRawClient::GetInstance(); |
| | | |
| | | |
| | |
| | | |
| | | /* |
| | | pPacket->GetInt(0) = Index |
| | | pPacket->GetInt(1) = Wsi ���� ��� |
| | | pPacket->GetInt(2) = A�� ���� ��� (1 ���� 0 ����) |
| | | pPacket->GetInt(3) = B�� ���� ��� |
| | | pPacket->GetInt(4) = C�� ���� ��� |
| | | pPacket->GetInt(5) = D�� ���� ��� |
| | | pPacket->GetInt(6) = Review���� ������� PointIndex |
| | | pPacket->GetInt(1) = Wsi 占쏙옙占쏙옙 占쏙옙占? |
| | | pPacket->GetInt(2) = A占쏙옙 占쏙옙占쏙옙 占쏙옙占?(1 占쏙옙占쏙옙 0 占쏙옙占쏙옙) |
| | | pPacket->GetInt(3) = B占쏙옙 占쏙옙占쏙옙 占쏙옙占? |
| | | pPacket->GetInt(4) = C占쏙옙 占쏙옙占쏙옙 占쏙옙占? |
| | | pPacket->GetInt(5) = D占쏙옙 占쏙옙占쏙옙 占쏙옙占? |
| | | pPacket->GetInt(6) = Review占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙占?PointIndex |
| | | pPacket->GetDouble(0) = �£�� Monomo������ �Ÿ� |
| | | */ |
| | | |
| | |
| | | |
| | | nWsiReflowJudge = pReviewResult->nWsi_ResultCode; |
| | | |
| | | //nWsiReflowResult += pReviewResult->nWsi_pReflowResultData[0] //A 1�� �Ű�Ⱦ� |
| | | //nWsiReflowResult += pReviewResult->nWsi_pReflowResultData[0] //A 1占쏙옙 占신곤옙횡占? |
| | | nWsiReflowResult += pReviewResult->nWsi_pReflowResultData[1];//B |
| | | nWsiReflowResult += pReviewResult->nWsi_pReflowResultData[2];//C |
| | | //nWsiReflowResult += pReviewResult->nWsi_pReflowResultData[3];//D |
| | |
| | | { |
| | | if(pReviewResult == NULL) return FALSE; |
| | | |
| | | //������� ���� �� ��� ä�� �ֱ� |
| | | //占쏙옙占쏙옙占쏙옙占?占쏙옙占쏙옙 占쌨모리울옙 占쏙옙占?채占쏙옙 占쌍깍옙 |
| | | CDitGlassRawClient *pDitGlassRawClient = CDitGlassRawClient::GetInstance(); |
| | | |
| | | if(pDitGlassRawClient->isConnect() == TRUE) |
| | |
| | | { |
| | | if (pReviewResult == NULL) return FALSE; |
| | | |
| | | //������� ���� �� ��� ä�� �ֱ� |
| | | //占쏙옙占쏙옙占쏙옙占?占쏙옙占쏙옙 占쌨모리울옙 占쏙옙占?채占쏙옙 占쌍깍옙 |
| | | CDitGlassRawClient *pDitGlassRawClient = CDitGlassRawClient::GetInstance(); |
| | | |
| | | if (pDitGlassRawClient->isConnect() == TRUE) |