| | |
| | | iScan = m_iScan; |
| | | |
| | | stFrameIndex stFrame; |
| | | |
| | | stFrame.nScanIdx = m_iScan; |
| | | |
| | | if (m_bFindGlassStart[stFrame.nScanIdx] == TRUE) |
| | | if (m_bFindGlassStart[stFrame.nScanIdx] == TRUE) { |
| | | return ERR_FINDGLASSSTART_SUCCESS; |
| | | } |
| | | |
| | | // 자동일때 프레임 수를 충분히 잡으면 문제가 안되는거 같다만... 프레임 수가 부족하면 여기서 무한으로 걸림.. 그리고 시작선 찾았으면 그냥 넘어가면 되지 않나? |
| | | if (m_pGrabber->GetGrabFrameCount() < 1) |
| | | { |
| | | if (m_pGrabber->GetGrabFrameCount() < 1 || iThread != 0) { |
| | | Sleep(0); |
| | | return ERR_FINDGLASSSTART_FAIL; |
| | | } |
| | | |
| | | /* |
| | | stFrameIndex stFrame; |
| | | |
| | | stFrame.nScanIdx = m_iScan; |
| | | |
| | | if(m_bFindGlassStart[stFrame.nScanIdx] == TRUE) |
| | | return ERR_FINDGLASSSTART_SUCCESS; |
| | | */ |
| | | |
| | | if (iThread != 0) |
| | | return ERR_FINDGLASSSTART_FAIL; |
| | | |
| | | DimensionDir emDim = GetDimension(stFrame.nScanIdx); |
| | | |
| | | iScan = stFrame.nScanIdx; |
| | | |
| | | if (FindGlassStartLine(emDim, stFrame) == TRUE) |
| | | { |
| | | g_pLog->DisplayMessage(_T("Find Start Line Success!")); |
| | | g_pLog->DisplayMessage(_T("%s Is Glass Start Line!"), PANEL_SIDE[emDim]); |
| | | |
| | | if (FindGlassStartLine(emDim, stFrame) == TRUE) { |
| | | g_pLog->DisplayMessage(_T("%s Find Start Line Success!"), PANEL_SIDE[emDim]); |
| | | |
| | | ScanRegionSet(stFrame); |
| | | m_bFindGlassStart[stFrame.nScanIdx] = TRUE; |
| | |
| | | m_MsgJob.nDispLine = 0; |
| | | m_MsgJob.nSide = (int)emDim; |
| | | CSide_Data* pSideData = m_pGlassData->GetSideData(emDim); |
| | | if (pSideData != NULL) |
| | | if (pSideData != NULL) { |
| | | m_MsgJob.nDispLine = pSideData->m_nGlassStartLine; |
| | | } |
| | | |
| | | ::SendMessage(m_hWndViewScan, WM_POCESS_STATUS, (WPARAM)&m_MsgJob, (int)emDim); |
| | | |
| | | return ERR_FINDGLASSSTART_SUCCESS; |
| | | } |
| | | else |
| | | { |
| | | else { |
| | | return ERR_FINDGLASSSTART_FIND_FAIL; |
| | | } |
| | | |
| | |
| | | CSingleLock myLoc(&m_csThreadEnd); |
| | | myLoc.Lock(); |
| | | |
| | | int iScan = stFrame.nScanIdx; |
| | | int iScan = stFrame.nScanIdx; |
| | | if (m_iThreadEnd[iScan][iThread] == 1) { |
| | | myLoc.Unlock(); |
| | | return FALSE; |
| | |
| | | if (m_pII2S != NULL) { |
| | | m_pII2S->II2S_InspectionEnd(m_iCamera, iScan); |
| | | } |
| | | |
| | | // Save the image as one image |
| | | //CString strFileName; |
| | | //strFileName.Format(_T("D:\\Dump\\%s.tif"), PANEL_SIDE[emDim]); |
| | | //m_pGrabber->DumpBufferAsOneImage(iScan, strFileName); |
| | | } |
| | | } |
| | | |
| | |
| | | if (pSideData == NULL) |
| | | return FALSE; |
| | | |
| | | if (g_pStatus->GetGrabFrameCount(stFrame.nScanIdx) - 1 <= stFrame.nFrameIdx) |
| | | if (g_pStatus->GetGrabFrameCount(m_iCamera, stFrame.nScanIdx) - 1 <= stFrame.nFrameIdx) |
| | | return TRUE; |
| | | |
| | | if (pSideData->m_nPreGlassEndFrame + MAX_THREAD <= stFrame.nFrameIdx) |
| | |
| | | |
| | | void CInspectCamera::ScanRegionSet(stFrameIndex stFrame) |
| | | { |
| | | g_pLog->DisplayMessage(_T("Scan Region Set")); |
| | | |
| | | SetGrabEnd(stFrame.nScanIdx); |
| | | } |
| | | |
| | |
| | | m_pRecipe = pRecipe; |
| | | m_pHardparm = pHW; |
| | | |
| | | if (m_pGrabber != NULL) |
| | | { |
| | | if (m_pGrabber != NULL) { |
| | | m_pGrabber->ClearGrabIdx(); |
| | | //m_pGrabber->ClearBuffer(); |
| | | } |
| | | |
| | | if (m_pDefectControl != NULL) |
| | | { |
| | | if (m_pDefectControl != NULL) { |
| | | m_pDefectControl->SetHWRecipe(pHW); |
| | | m_pDefectControl->ResetDefectControl(); |
| | | } |
| | |
| | | |
| | | void CInspectCamera::SetGrabEnd(int iScan) |
| | | { |
| | | g_pLog->DisplayMessage(_T("Set Grab End")); |
| | | |
| | | CCameraSettings* pCamera = m_pHardparm->GetCameraSettings(m_iCamera, iScan); |
| | | |
| | | if (pCamera == NULL) |
| | | { |
| | | if (pCamera == NULL) { |
| | | g_pLog->DisplayMessage(_T("Camera Setting NULL")); |
| | | return; |
| | | } |
| | | |
| | | DimensionDir emDim = pCamera->m_eDimension; |
| | | DimensionDir emDim = pCamera->m_eDimension; |
| | | CSide_Data* pSideData = m_pGlassData->GetSideData(emDim); |
| | | if (pSideData == NULL) |
| | | if (pSideData == NULL) { |
| | | return; |
| | | } |
| | | |
| | | int nStageNo = g_pBase->m_nStageNo; |
| | | g_pLog->DisplayMessage(_T("%s Set Grab End"), PANEL_SIDE[emDim]); |
| | | |
| | | if (nStageNo < 0 || nStageNo > 1) |
| | | int nStageNo = g_pBase->m_nStageNo; |
| | | if (nStageNo < 0 || nStageNo > 1) { |
| | | nStageNo = 0; |
| | | } |
| | | |
| | | int nGlassSize = (int)(((double)m_pRecipe->m_SideParam[(int)emDim].m_nSidePanelSize_um) / pCamera->m_dScanResolution[nStageNo]); |
| | | |
| | | pSideData->m_nPreGlassEndLine = pSideData->m_nGlassStartLine + nGlassSize; |
| | | pSideData->m_nPreGlassEndFrame = pSideData->m_nPreGlassEndLine / pCamera->m_FrameSize.cy; |
| | | |
| | | g_pStatus->SetGrabFrametoScan(iScan, pSideData->m_nPreGlassEndFrame + 5); |
| | | |
| | | g_pStatus->SetGrabFrametoScan(m_iCamera, iScan, pSideData->m_nPreGlassEndFrame + 5); |
| | | g_pLog->DisplayMessage(_T("%s Scan %d : Set Grab EndFrame - GlassEnd %d, Frame %d, GrabBuf %d"), PANEL_SIDE[emDim], iScan, pSideData->m_nPreGlassEndLine, pSideData->m_nPreGlassEndFrame, pSideData->m_nPreGlassEndFrame + 5); |
| | | } |
| | | |