mrDarker
2025-08-13 5cc675212e96d87ebbf00f4fd7a8106b06a490ff
EdgeInspector_App/Process/InspectCamera.cpp
@@ -182,38 +182,24 @@
   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;
@@ -222,15 +208,15 @@
      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;
   }
@@ -883,7 +869,7 @@
   CSingleLock myLoc(&m_csThreadEnd);
   myLoc.Lock();
   int        iScan = stFrame.nScanIdx;
   int iScan = stFrame.nScanIdx;
   if (m_iThreadEnd[iScan][iThread] == 1) {
      myLoc.Unlock();
      return FALSE;
@@ -913,6 +899,11 @@
         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);
      }
   }
@@ -1292,7 +1283,7 @@
   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)
@@ -1307,8 +1298,6 @@
void CInspectCamera::ScanRegionSet(stFrameIndex stFrame)
{
   g_pLog->DisplayMessage(_T("Scan Region Set"));
   SetGrabEnd(stFrame.nScanIdx);
}
@@ -6446,14 +6435,11 @@
   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();
   }
@@ -6496,33 +6482,30 @@
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);
}