#include "StdAfx.h"
|
#include "StatusMonitor.h"
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
CStatusMonitor::CStatusMonitor(void)
|
{
|
m_iScanIdx = -1;
|
|
for(int iCam=0;iCam<MAX_CAMERA_COUNT;iCam++)
|
m_pFrameBuffer[iCam] = NULL;
|
|
InitGlassLoading();
|
}
|
|
CStatusMonitor::~CStatusMonitor(void)
|
{
|
}
|
|
void CStatusMonitor::InitGlassLoading()
|
{
|
for(int i=0;i<MAX_SCAN_COUNT;i++)
|
{
|
m_nGrabFrame[i] = 0;
|
m_bGrabEnd[i] = FALSE;
|
}
|
|
LoadInspectOpt();
|
}
|
|
void CStatusMonitor::LoadProfileOpt(CString strRecipe)
|
{
|
CString strTaget;
|
|
strTaget.Format(_T("C:\\RCutProject\\Recipe\\%s_Profile.cfg"),strRecipe);
|
|
CFileFind findFile;
|
BOOL bFind = findFile.FindFile(strTaget);
|
if(bFind == FALSE)
|
return;
|
|
CConfig Config;
|
|
if (!Config.SetRegiConfig(NULL, NULL, (TCHAR*)(LPCTSTR)strTaget, FileMap_Mode))
|
return;
|
|
Config.GetItemValue(_T("PROFILE_RCUT_C_X"), m_ProfileOpt.m_nProfileOff_C_X,0);
|
Config.GetItemValue(_T("PROFILE_RCUT_C_Y"), m_ProfileOpt.m_nProfileOff_C_Y,0);
|
Config.GetItemValue(_T("PROFILE_RCUT_C_DN_X"), m_ProfileOpt.m_nProfileOff_C_DN_X,0);
|
Config.GetItemValue(_T("PROFILE_RCUT_C_DN_Y"), m_ProfileOpt.m_nProfileOff_C_DN_Y,0);
|
Config.GetItemValue(_T("PROFILE_RCUT_A_X"), m_ProfileOpt.m_nProfileOff_A_X,0);
|
Config.GetItemValue(_T("PROFILE_RCUT_A_Y"), m_ProfileOpt.m_nProfileOff_A_Y,0);
|
Config.GetItemValue(_T("PROFILE_RCUT_A_DN_X"), m_ProfileOpt.m_nProfileOff_A_DN_X,0);
|
Config.GetItemValue(_T("PROFILE_RCUT_A_DN_Y"), m_ProfileOpt.m_nProfileOff_A_DN_Y,0);
|
|
CString str;
|
for(int iStage=0;iStage<MAX_STAGE_HAND_COUNT;iStage++)
|
{
|
if(iStage == 0) // ±âÁ¸ ¼³Á¤ÆÄÀÏÀ» »ç¿ëÇϱâ À§ÇØ ºÐ±âÇÔ.
|
{
|
for(int i=0;i<MAX_PROFILE_SETTING_COUNT;i++)
|
{
|
str.Format(_T("PROFILE_RCUT_RADIUS_%d"),i+1);
|
Config.GetItemValue(str, m_ProfileOpt.m_dProfileRadius[iStage][i],0);
|
}
|
}
|
else
|
{
|
for(int i=0;i<MAX_PROFILE_SETTING_COUNT;i++)
|
{
|
str.Format(_T("%d_PROFILE_RCUT_RADIUS_%d"),iStage,i+1);
|
Config.GetItemValue(str, m_ProfileOpt.m_dProfileRadius[iStage][i],0);
|
}
|
}
|
}
|
}
|
|
void CStatusMonitor::LoadInspectOpt()
|
{
|
CString strTaget = _T("C:\\RCutProject\\Config\\InspectOption.cfg");
|
|
CFileFind findFile;
|
BOOL bFind = findFile.FindFile(strTaget);
|
if(bFind == FALSE)
|
return;
|
|
CConfig Config;
|
|
if (!Config.SetRegiConfig(NULL, NULL, (TCHAR*)(LPCTSTR)strTaget, FileMap_Mode))
|
return;
|
|
Config.GetItemValue(_T("SAVE_NOTCHI"), m_InspectOpt.bSaveNotchi,FALSE);
|
Config.GetItemValue(_T("SAVE_CORNERCHIP"), m_InspectOpt.bSaveCornerChip,FALSE);
|
Config.GetItemValue(_T("SAVE_CORNERSPLINE"), m_InspectOpt.bSaveCornerSP,FALSE);
|
Config.GetItemValue(_T("SAVE_SPLINE"), m_InspectOpt.bSaveSpline,FALSE);
|
Config.GetItemValue(_T("SAVE_EDGE"), m_InspectOpt.bSaveEdge,FALSE);
|
Config.GetItemValue(_T("SAVE_DIMENSION"), m_InspectOpt.bSaveDimension,FALSE);
|
Config.GetItemValue(_T("SAVE_SPLINECHIP"), m_InspectOpt.bSaveSplineChip,FALSE);
|
Config.GetItemValue(_T("SAVE_CUTAREA"), m_InspectOpt.bSaveCutArea,FALSE);
|
Config.GetItemValue(_T("SAVE_CHIPDEFECTIMAGE"), m_InspectOpt.bSaveChipDefectImg,FALSE);
|
Config.GetItemValue(_T("NOTCH_NODETSKIPSIZE"), m_InspectOpt.nNotchNoDetSkip,10);
|
Config.GetItemValue(_T("NOTCH_DETSKIPSIZE"), m_InspectOpt.nNotchDetSkip,5);
|
Config.GetItemValue(_T("CHAMFER_INSHEIGHT"), m_InspectOpt.nChamferInsHeight,100);
|
Config.GetItemValue(_T("CHAMFER_SEARCHWIDTH"), m_InspectOpt.nChamferSearchWidth,30);
|
Config.GetItemValue(_T("CHAMFER_CHIPPINGAREA"), m_InspectOpt.nChippingInsArea,150);
|
Config.GetItemValue(_T("CHAMFER_CRACKAREA"), m_InspectOpt.nCrackINsArea,300);
|
Config.GetItemValue(_T("CHAMFER_BROKENAREA"), m_InspectOpt.nBrokenInsArea,450);
|
|
Config.GetItemValue(_T("CHIPPING_MIN_SIZE"), m_InspectOpt.nChippingInsMinSize,5);
|
Config.GetItemValue(_T("CRACK_MIN_SIZE"), m_InspectOpt.nCrackInsMinSize,5);
|
Config.GetItemValue(_T("BROKEN_MIN_SIZE"), m_InspectOpt.nBrokenInsMinSize,5);
|
Config.GetItemValue(_T("BURR_MIN_SIZE"), m_InspectOpt.nBurrInsMinSize,5);
|
|
Config.GetItemValue(_T("CHIPPING_SIDE_FILTER_RANGE"), m_InspectOpt.nChippingInsSideFilterRange,10);
|
Config.GetItemValue(_T("CRACK_SIDE_FILTER_RANGE"), m_InspectOpt.nCrackInsSideFilterRange,10);
|
Config.GetItemValue(_T("BROKEN_SIDE_FILTER_RANGE"), m_InspectOpt.nBrokenInsSideFilterRnage,10);
|
Config.GetItemValue(_T("BURR_SIDE_FILTER_RANGE"), m_InspectOpt.nBurrInsSideFilterRange,10);
|
|
Config.GetItemValue(_T("USE_RANDOM_DATA"), m_InspectOpt.bUseRandomData,FALSE);
|
|
ReadRandomData(Config,_T("B_GRINDLINE"),m_InspectOpt.B_GrindLine);
|
ReadRandomData(Config,_T("C_GRINDLINE"),m_InspectOpt.C_GrindLine);
|
ReadRandomData(Config,_T("D_GRINDLINE"),m_InspectOpt.D_GrindLine);
|
ReadRandomData(Config,_T("A1_GRINDLINE"),m_InspectOpt.A1_GrindLine);
|
ReadRandomData(Config,_T("A2_GRINDLINE"),m_InspectOpt.A2_GrindLine);
|
ReadRandomData(Config,_T("A1_RCUT"),m_InspectOpt.A1_Rcut);
|
ReadRandomData(Config,_T("A2_RCUT"),m_InspectOpt.A2_Rcut);
|
ReadRandomData(Config,_T("C1_RCUT"),m_InspectOpt.C1_Rcut);
|
ReadRandomData(Config,_T("C2_RCUT"),m_InspectOpt.C2_Rcut);
|
|
Config.GetItemValue(_T("ALIGN_MARK_RANGE"), m_InspectOpt.nAlignMarkRange,100);
|
Config.GetItemValue(_T("ALIGN_MARK_RANGE_Y"), m_InspectOpt.nAlignMarkRangeY,100);
|
|
// 220427, ¼Û¸² Ãß°¡ ¿äû
|
|
if(m_InspectOpt.bUseRandomData == FALSE)
|
{
|
strTaget = _T("C:\\RCutProject\\Config\\YAN.cfg");
|
bFind = findFile.FindFile(strTaget);
|
if(bFind == FALSE)
|
return;
|
|
if (!Config.SetRegiConfig(NULL, NULL, (TCHAR*)(LPCTSTR)strTaget, FileMap_Mode))
|
return;
|
|
Config.GetItemValue(_T("USE_RANDOM_DATA"), m_InspectOpt.bUseRandomData,FALSE);
|
|
ReadRandomData(Config,_T("B_GRINDLINE"),m_InspectOpt.B_GrindLine);
|
ReadRandomData(Config,_T("C_GRINDLINE"),m_InspectOpt.C_GrindLine);
|
ReadRandomData(Config,_T("D_GRINDLINE"),m_InspectOpt.D_GrindLine);
|
ReadRandomData(Config,_T("A1_GRINDLINE"),m_InspectOpt.A1_GrindLine);
|
ReadRandomData(Config,_T("A2_GRINDLINE"),m_InspectOpt.A2_GrindLine);
|
ReadRandomData(Config,_T("A1_RCUT"),m_InspectOpt.A1_Rcut);
|
ReadRandomData(Config,_T("A2_RCUT"),m_InspectOpt.A2_Rcut);
|
ReadRandomData(Config,_T("C1_RCUT"),m_InspectOpt.C1_Rcut);
|
ReadRandomData(Config,_T("C2_RCUT"),m_InspectOpt.C2_Rcut);
|
}
|
}
|
|
void CStatusMonitor::ReadRandomData(CConfig &Config,CString strSection,CRandomDataSet &DataSet)
|
{
|
CString strName;
|
|
strName.Format(_T("%s_PROFILE_MIN"),strSection);
|
Config.GetItemValue(strName, DataSet.Profile.dMin,0);
|
strName.Format(_T("%s_PROFILE_MAX"),strSection);
|
Config.GetItemValue(strName, DataSet.Profile.dMax,0);
|
strName.Format(_T("%s_PROFILE_LIMIT"),strSection);
|
Config.GetItemValue(strName, DataSet.Profile.dLimit,0);
|
|
strName.Format(_T("%s_CHAMFER_UP_MIN"),strSection);
|
Config.GetItemValue(strName, DataSet.ChamferUp.dMin,0);
|
strName.Format(_T("%s_CHAMFER_UP_MAX"),strSection);
|
Config.GetItemValue(strName, DataSet.ChamferUp.dMax,0);
|
strName.Format(_T("%s_CHAMFER_UP_LIMIT"),strSection);
|
Config.GetItemValue(strName, DataSet.ChamferUp.dLimit,0);
|
|
strName.Format(_T("%s_CHAMFER_DN_MIN"),strSection);
|
Config.GetItemValue(strName, DataSet.ChamferDn.dMin,0);
|
strName.Format(_T("%s_CHAMFER_DN_MAX"),strSection);
|
Config.GetItemValue(strName, DataSet.ChamferDn.dMax,0);
|
strName.Format(_T("%s_CHAMFER_DN_LIMIT"),strSection);
|
Config.GetItemValue(strName, DataSet.ChamferDn.dLimit,0);
|
}
|
|
int CStatusMonitor::GetGrabFrameCount(int iScan)
|
{
|
if(iScan < 0 || iScan >= MAX_SCAN_COUNT)
|
return 0;
|
|
return m_nGrabFrame[iScan];
|
}
|
|
void CStatusMonitor::SetGrabEnd(int iScan)
|
{
|
if(iScan < 0 || iScan >= MAX_SCAN_COUNT)
|
return;
|
|
m_bGrabEnd[iScan] = TRUE;
|
}
|
|
void CStatusMonitor::SetGrabFrametoScan(int iScan,int nFrame)
|
{
|
if(iScan < 0 || iScan >= MAX_SCAN_COUNT)
|
return;
|
|
m_nGrabFrame[iScan] = nFrame;
|
}
|
|
BOOL CStatusMonitor::CheckDirectory(const TCHAR szPathName[])
|
{
|
CFileFind finder;
|
CString strTemp;
|
CString strDir = szPathName;
|
int nPos;
|
if (finder.FindFile(szPathName) == FALSE)
|
{
|
nPos = strDir.Find(_T("\\"));
|
nPos = strDir.Find(_T("\\"), nPos+1);
|
while(nPos > 0)
|
{
|
strTemp = strDir.Mid(0,nPos);
|
if(0 < strTemp.GetLength())
|
{
|
if(CString("\\") == strTemp.GetAt(strTemp.GetLength()-1))
|
{
|
nPos = strDir.Find(_T("\\"), nPos+1);
|
continue;
|
}
|
}
|
if (finder.FindFile(strTemp) == FALSE)
|
{
|
if(::CreateDirectory(strTemp, NULL) == FALSE)
|
{
|
strTemp.Format(_T("[%s]Folder Create Fail. "), szPathName);
|
|
//LogMessage(strTemp, 2);
|
return FALSE;
|
}
|
}
|
nPos = strDir.Find(_T("\\"), nPos+1);
|
}
|
}
|
return TRUE;
|
}
|