SDC C-Project CF Review 프로그램
Ongoing80 #3440 CF AOI Review [QD, CS] Align Cam Reverse X 제어 기능 추가
1) Align Cam Connect 시 ReverseX 파라미터 카메라에 전송 및 적용 기능 추가
9개 파일 변경됨
338 ■■■■■ 파일 변경됨
Internal_Library/CHCameraControl_Pylon/CHCameraControlPylon.vcxproj 19 ●●●● 패치 | 보기 | raw | blame | 히스토리
Internal_Library/CHCameraControl_Pylon/CameraControl_Pylon.cpp 14 ●●●● 패치 | 보기 | raw | blame | 히스토리
Internal_Library/CHCameraControls/CameraControlInfo.cpp 19 ●●●●● 패치 | 보기 | raw | blame | 히스토리
Internal_Library/Include/CHCameraControls/CameraControl.h 3 ●●●●● 패치 | 보기 | raw | blame | 히스토리
Internal_Library/Include/CHCameraControls/CameraControlInfo.h 58 ●●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/CHReviewSetting/Sys_AlignManager.cpp 14 ●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/ReviewSystemSetting/DlgAlign.cpp 195 ●●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/ReviewSystemSetting/DlgAlign.h 12 ●●●● 패치 | 보기 | raw | blame | 히스토리
ReviewSystem/ReviewSystemSetting/stdafx.h 4 ●●●● 패치 | 보기 | raw | blame | 히스토리
Internal_Library/CHCameraControl_Pylon/CHCameraControlPylon.vcxproj
@@ -101,7 +101,7 @@
    </Midl>
    <ClCompile>
      <Optimization>Disabled</Optimization>
      <AdditionalIncludeDirectories>../include;C:\Program Files\Basler\pylon 4\pylon\include;C:\Program Files\Basler\pylon 4\genicam\library\cpp\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <AdditionalIncludeDirectories>$(MSBuildStartupDirectory)\Include;C:\Program Files\Basler\pylon 5\Development\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;_AFXEXT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <MinimalRebuild>true</MinimalRebuild>
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
@@ -117,13 +117,13 @@
      <AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalLibraryDirectories>../lib;C:\Program Files\Basler\pylon 4\pylon\lib\x64;C:\Program Files\Basler\pylon 4\genicam\library\cpp\lib\win64_x64;C:\Program Files\Basler\pylon 4\genicam\library\cpp\include\GenApi;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <AdditionalLibraryDirectories>C:\Program Files\Basler\pylon 5\Development\lib\x64;$(MSBuildStartupDirectory)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ModuleDefinitionFile>
      </ModuleDefinitionFile>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <SubSystem>Windows</SubSystem>
      <TargetMachine>MachineX64</TargetMachine>
      <AdditionalDependencies>CHImageControlsd_x64_vc15.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <AdditionalDependencies>CHImageControls_x64_vc15.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <ImportLibrary>$(SolutionDir)\lib\$(TargetName).lib</ImportLibrary>
    </Link>
  </ItemDefinitionGroup>
@@ -136,7 +136,7 @@
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <IntrinsicFunctions>true</IntrinsicFunctions>
      <AdditionalIncludeDirectories>../include;C:\Program Files\Basler\pylon 4\pylon\include;C:\Program Files\Basler\pylon 4\genicam\library\cpp\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <AdditionalIncludeDirectories>$(MSBuildStartupDirectory)\Include;C:\Program Files\Basler\pylon 5\Development\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;_AFXEXT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <FunctionLevelLinking>true</FunctionLevelLinking>
@@ -150,7 +150,7 @@
      <AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ResourceCompile>
    <Link>
      <AdditionalLibraryDirectories>../lib;C:\Program Files\Basler\pylon 4\pylon\lib\x64;C:\Program Files\Basler\pylon 4\genicam\library\cpp\lib\win64_x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <AdditionalLibraryDirectories>C:\Program Files\Basler\pylon 5\Development\lib\x64;$(MSBuildStartupDirectory)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
      <ModuleDefinitionFile>
      </ModuleDefinitionFile>
      <GenerateDebugInformation>true</GenerateDebugInformation>
@@ -162,6 +162,15 @@
      <ImportLibrary>$(SolutionDir)\lib\$(TargetName).lib</ImportLibrary>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Template|x64'">
    <ClCompile>
      <AdditionalIncludeDirectories>$(MSBuildStartupDirectory)\Include;C:\Program Files\Basler\pylon 5\Development\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ClCompile>
    <Link>
      <AdditionalDependencies>CHImageControls_x64_vc15.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <AdditionalLibraryDirectories>C:\Program Files\Basler\pylon 5\Development\lib\x64;$(MSBuildStartupDirectory)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
    </Link>
  </ItemDefinitionGroup>
  <ItemGroup>
    <ClCompile Include="..\CHCameraControls\CameraBuffer.cpp" />
    <ClCompile Include="CameraControl.cpp" />
Internal_Library/CHCameraControl_Pylon/CameraControl_Pylon.cpp
@@ -62,14 +62,22 @@
        if (m_pCamera)
        {
            //SetHeartbeatTimeout(10000); // set heartbeat
            if (controlInfo.GetCameraReverseX() == TRUE)//210614���Ϸи� ������ ��� ����
            {
                m_pCamera->ReverseX = TRUE;
            }
            else
            {
                m_pCamera->ReverseX = FALSE;
            }
            m_pCamera->SetCameraContext(m_nTotalIndex);///m_nCameraIndex); // set context
            m_pCamera->MaxNumBuffer = m_nGrabCount;
            m_pCamera->RegisterImageEventHandler(this, RegistrationMode_Append, Ownership_TakeOwnership);
            m_pCamera->RegisterConfiguration(this, RegistrationMode_ReplaceAll, Cleanup_None);
            m_pCamera->Open();
            // set buffer info
            m_nWidth = (int)m_pCamera->Width.GetValue();
            m_nWidthStep = m_nWidth * 3;
@@ -321,7 +329,7 @@
    if (m_pCC2P)
    {
        m_pCC2P->ICC2P_FrameCaptured(m_nTotalIndex, m_nFrameIndex, m_nFrameCount);// 2014.6.21 m_pCameraFrameBuffer 추가
        m_pCC2P->ICC2P_FrameCaptured(m_nTotalIndex, m_nFrameIndex, m_nFrameCount);// 2014.6.21 m_pCameraFrameBuffer �߰�
    }
}
Internal_Library/CHCameraControls/CameraControlInfo.cpp
@@ -45,6 +45,8 @@
    m_strAlignPath2 = _T("");
    m_dwExternalDelayTime = 0;
    m_dwInternalDelayTime = 0;
    m_bCameraReverseMode = 0;
}
@@ -126,6 +128,9 @@
    strValue = strItemName + _T("_EXTERNAL_DELAY");
    pFile->GetItem(strValue, m_dwExternalDelayTime, 0);
    strValue = strItemName + _T("_CAMERA_REVERSE_X");
    pFile->GetItem(strValue, m_bCameraReverseMode, 0);
    return TRUE;
}
@@ -206,6 +211,9 @@
    strValue = strItemName + _T("_EXTERNAL_DELAY");
    pFile->SetItem(strValue, m_dwExternalDelayTime);
    strValue = strItemName + _T("_CAMERA_REVERSE_X");
    pFile->SetItem(strValue, m_bCameraReverseMode);
    return TRUE;
}
@@ -343,6 +351,11 @@
    return m_dwInternalDelayTime;
}
BOOL GetCameraReverseX() const
{
    return m_bCameraReverseMode;
}
// setter
void CCameraControlInfo::SetIndex(int nIndex)
@@ -475,4 +488,10 @@
void CCameraControlInfo::SetInternalDelay(UINT    dwDelay)
{
    m_dwInternalDelayTime = dwDelay;
}
void SetCameraReverseX(const BOOL bMode)
{
    m_bCameraReverseMode = bMode;
}
Internal_Library/Include/CHCameraControls/CameraControl.h
@@ -127,10 +127,13 @@
    int        m_nTriggerMode;
    int        m_nTriggerSource;
    // shared frame buffer
    FrameBuffer            m_curFrameImage;
    CCameraBuffer*        m_pCameraFrameBuffer;
    CRITICAL_SECTION    m_csFrameBuffer;
    BOOL bReverseX;
};
extern "C" __declspec( dllexport ) CCameraControl* CameraControlNew(int nCamIndex);
Internal_Library/Include/CHCameraControls/CameraControlInfo.h
@@ -52,6 +52,7 @@
        m_strFfcFilename    = _T("");
        m_strCameraFile        = _T("");
        m_bCameraReverseMode = FALSE;
    }
@@ -121,6 +122,9 @@
        strValue = strItemName + _T("_FFC_FILE_NAME");
        pFile->GetItem(strValue, m_strFfcFilename, _T(""));
        strValue = strItemName + _T("_CAMERA_REVERSE_X");
        pFile->GetItem(strValue, m_bCameraReverseMode, 0);
        return TRUE;
    }
@@ -189,6 +193,9 @@
        strValue = strItemName + _T("_FFC_FILE_NAME");
        pFile->SetItem(strValue, m_strFfcFilename);
        strValue = strItemName + _T("_CAMERA_REVERSE_X");
        pFile->SetItem(strValue, m_bCameraReverseMode);
        return TRUE;
    }
@@ -299,6 +306,11 @@
        return m_strCameraFile;
    }
    BOOL GetCameraReverseX( ) const
    {
        return m_bCameraReverseMode;
    }
    // setter
    void SetIndex(int nIndex)
    {
@@ -405,33 +417,41 @@
    {
        m_strCameraFile = strCameraFile;
    }
    void SetCameraReverseX(BOOL bMode)
    {
        m_bCameraReverseMode = bMode;
    }
        
protected:
    int            m_nIndex;                    // 인덱스
    CString        m_strName;                    //카메라 이름
    int            m_nIndex;                    // �ε���
    CString        m_strName;                    //ī�޶� �̸�
    
    int            m_nLibraryType;                // 라이브러리 타입
    CString        m_strConnectionPort;        // 연결 포트
    int            m_nLibraryType;                // ���̺귯�� Ÿ��
    CString        m_strConnectionPort;        // ���� ��Ʈ
    int            m_nFlipType;                //카메라 FLIP 타입
    int            m_nGrabberIndex;            //카메라 그래버 인덱스
    int            m_nChannelIndex;            //카메라 채널 인덱스
    int            m_nFrameWidth;                //카메라 프레임 넓이
    int            m_nFrameHeight;                //카메라 프레임 높이
    int            m_nFrameChannels;            //카메라 채널 수
    int            m_nGrabCount;                //그랩퍼버수
    int            m_nFrameCount;                //카메라 프레임 개수
    int            m_nImageBufferCount;        //이미지 버퍼 개수
    int            m_nFlipType;                //ī�޶� FLIP Ÿ��
    int            m_nGrabberIndex;            //ī�޶� �׷��� �ε���
    int            m_nChannelIndex;            //ī�޶� ä�� �ε���
    int            m_nFrameWidth;                //ī�޶� ������ ����
    int            m_nFrameHeight;                //ī�޶� ������ ����
    int            m_nFrameChannels;            //ī�޶� ä�� ��
    int            m_nGrabCount;                //�׷��۹���
    int            m_nFrameCount;                //ī�޶� ������ ����
    int            m_nImageBufferCount;        //�̹��� ���� ����
    
    int            m_nAxisDirectionX;            //카메라 X축 방향
    int            m_nAxisDirectionY;            //카메라 Y축 방향
    double        m_dPixelResolution;            //카메라 해상도
    int            m_nAxisDirectionX;            //ī�޶� X�� ����
    int            m_nAxisDirectionY;            //ī�޶� Y�� ����
    double        m_dPixelResolution;            //ī�޶� �ػ�
    
    double        m_dGainRed;                    //카메라 Gain
    double        m_dGainGreen;                //카메라 Gain
    double        m_dGainBlue;                //카메라 Gain
    double        m_dGainRed;                    //ī�޶� Gain
    double        m_dGainGreen;                //ī�޶� Gain
    double        m_dGainBlue;                //ī�޶� Gain
    CString        m_strFfcFilename;            //FFC Image
    CString        m_strCameraFile;
    BOOL        m_bCameraReverseMode;
};
ReviewSystem/CHReviewSetting/Sys_AlignManager.cpp
@@ -34,7 +34,7 @@
    GetCameraControlInfo()->SetAxisDirectionX(rhs.GetCameraControlInfo()->GetAxisDirectionX());
    GetCameraControlInfo()->SetAxisDirectionY(rhs.GetCameraControlInfo()->GetAxisDirectionY());
    // [2017:1:20]-[WEZASW] : 'ReviewSystemSetting' Parameter 항목 정리
    // [2017:1:20]-[WEZASW] : 'ReviewSystemSetting' Parameter �׸� ����
    //GetCameraControlInfo()->SetGrabberIndex(rhs.GetCameraControlInfo()->GetGrabberIndex());
    //GetCameraControlInfo()->SetChannelIndex(rhs.GetCameraControlInfo()->GetChannelIndex());
    //GetCameraControlInfo()->SetCameraDistanceX(rhs.GetCameraControlInfo()->GetCameraDistanceX());
@@ -68,7 +68,7 @@
    rhs.GetCameraControlInfo()->SetPixelResolution(GetCameraControlInfo()->GetPixelResolution());
    rhs.GetCameraControlInfo()->SetFrameChannels(GetCameraControlInfo()->GetFrameChannels());
    // [2017:1:20]-[WEZASW] : 'ReviewSystemSetting' Parameter 항목 정리
    // [2017:1:20]-[WEZASW] : 'ReviewSystemSetting' Parameter �׸� ����
    //rhs.GetCameraControlInfo()->SetGrabberIndex(GetCameraControlInfo()->GetGrabberIndex());
    //rhs.GetCameraControlInfo()->SetChannelIndex(GetCameraControlInfo()->GetChannelIndex());
    //rhs.GetCameraControlInfo()->SetCameraDistanceX(GetCameraControlInfo()->GetCameraDistanceX());
@@ -175,7 +175,7 @@
            strItem.Format(_T("SYS_ALIGN_CAMERA_Y_AXIS_DIRECTION_%02d"), i);
            macroFile.SetItem(strItem, pCameraInfo->GetAxisDirectionY());
            // [2017:1:20]-[WEZASW] : 'ReviewSystemSetting' Parameter 항목 정리
            // [2017:1:20]-[WEZASW] : 'ReviewSystemSetting' Parameter �׸� ����
            //strItem.Format(_T("SYS_ALIGN_CAMERA_GRABBER_INDEX_%02d"), i);
            //macroFile.SetItem(strItem, pCameraInfo->GetGrabberIndex());
@@ -200,6 +200,9 @@
            strItem.Format(_T("SYS_ALIGN_CAMERA_LIGHT_DEFAULT_VALUE_%02d"), i);
            macroFile.SetItem(strItem, pLightInfo->GetDefaultValue());
            strItem.Format(_T("SYS_ALIGN_CAMERA_REVERSE_X_MODE_%02d"), i);
            macroFile.SetItem(strItem, pCameraInfo->GetCameraReverseX());
        }
    }
}
@@ -283,7 +286,7 @@
        macroFile.GetItem(strItem, nGetItem);
        AlignCameraInfo.GetCameraControlInfo()->SetAxisDirectionY(nGetItem);
        // [2017:1:20]-[WEZASW] : 'ReviewSystemSetting' Parameter 항목 정리
        // [2017:1:20]-[WEZASW] : 'ReviewSystemSetting' Parameter �׸� ����
        //strItem.Format(_T("SYS_ALIGN_CAMERA_GRABBER_INDEX_%02d"), i);
        //macroFile.GetItem(strItem, nGetItem);
        //AlignCameraInfo.GetCameraControlInfo()->SetGrabberIndex(nGetItem);
@@ -313,6 +316,9 @@
        macroFile.GetItem(strItem, nGetItem);
        AlignCameraInfo.GetLightContorlInfo()->SetDefaultValue(nGetItem);
        strItem.Format(_T("SYS_ALIGN_CAMERA_REVERSE_X_MODE_%02d"), i);
        macroFile.GetItem(strItem, nGetItem);
        AlignCameraInfo.GetCameraControlInfo()->SetCameraReverseX(nGetItem);
        m_vecAlignCameraInfo.push_back(AlignCameraInfo);
    }
}
ReviewSystem/ReviewSystemSetting/DlgAlign.cpp
@@ -1,4 +1,4 @@
// DlgAlign.cpp : 구현 파일입니다.
// DlgAlign.cpp : ���� �����Դϴ�.
//
#include "stdafx.h"
@@ -8,7 +8,7 @@
#include "CHReviewSetting/Sys_AlignManager.h"
#include "CHReviewSetting/SystemInfo.h"
// CDlgAlign 대화 상자입니다.
// CDlgAlign ��ȭ �����Դϴ�.
IMPLEMENT_DYNAMIC(CDlgAlign, CDialog)
@@ -36,23 +36,23 @@
END_MESSAGE_MAP()
// CDlgAlign 메시지 처리기입니다.
// CDlgAlign �޽��� ó�����Դϴ�.
BOOL CDlgAlign::OnInitDialog()
{
    CDialog::OnInitDialog();
    // TODO:  여기에 추가 초기화 작업을 추가합니다.
    // TODO:  ���⿡ �߰� �ʱ�ȭ �۾��� �߰��մϴ�.
    InitAlignCameraInfoGridControl();
    FillAlignCameraInfo();
    return TRUE;  // return TRUE unless you set the focus to a control
    // 예외: OCX 속성 페이지는 FALSE를 반환해야 합니다.
    // ����: OCX �Ӽ� �������� FALSE�� ��ȯ�ؾ� �մϴ�.
}
BOOL CDlgAlign::PreTranslateMessage(MSG* pMsg)
{
    // TODO: 여기에 특수화된 코드를 추가 및/또는 기본 클래스를 호출합니다.
    // TODO: ���⿡ Ư��ȭ�� �ڵ带 �߰� ��/�Ǵ� �⺻ Ŭ������ ȣ���մϴ�.
    if( pMsg->message == WM_KEYDOWN )
    {
        if(pMsg->wParam == VK_RETURN || pMsg->wParam == VK_ESCAPE )
@@ -68,13 +68,13 @@
void CDlgAlign::OnBnClickedButtonSysAlignReset()
{
    // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
    // TODO: ���⿡ ��Ʈ�� �˸� ó���� �ڵ带 �߰��մϴ�.
    ResetAlignCameraInfoGrid();
}
void CDlgAlign::OnBnClickedButtonSysAlignApply()
{
    // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
    // TODO: ���⿡ ��Ʈ�� �˸� ó���� �ڵ带 �߰��մϴ�.
    UpdateData(TRUE);
    
    int i, j, nArrayCount = 0;
@@ -110,11 +110,11 @@
        if(pCameraControlInfo == NULL)    continue;
        //////////////////////////////////////////////////////////////////////////
        // 카메라 인덱스
        // ī�޶� �ε���
        CString strItemText = m_ctrlGridAlignCameraInfo.GetItemText(nRowIdx, nColIdx);        
        pCameraControlInfo->SetIndex(_ttoi(strItemText));
        // 기준 카메라
        // ���� ī�޶�
        nRowIdx++;
        CGridCellCheck *pCellCheck = (CGridCellCheck*)m_ctrlGridAlignCameraInfo.GetCell(nRowIdx, nColIdx);
        if(pCellCheck)
@@ -122,7 +122,7 @@
            pCameraControlInfo->SetStandardCamera(pCellCheck->GetCheck());
        }
        // 카메라 라이브러리 타입
        // ī�޶� ���̺귯�� Ÿ��
        nRowIdx++;
        CGridCellCombo* pCellCombo = (CGridCellCombo*)m_ctrlGridAlignCameraInfo.GetCell(nRowIdx, nColIdx);
        if(pCellCombo)
@@ -144,7 +144,7 @@
            }
        }
        // 카메라 플립 타입
        // ī�޶� �ø� Ÿ��
        nRowIdx++;
        pCellCombo = (CGridCellCombo*)m_ctrlGridAlignCameraInfo.GetCell(nRowIdx, nColIdx);
        if(pCellCombo)
@@ -164,47 +164,47 @@
            }
        }
        // 카메라 이름
        // ī�޶� �̸�
        nRowIdx++;
        strItemText = m_ctrlGridAlignCameraInfo.GetItemText(nRowIdx, nColIdx);        
        pCameraControlInfo->SetName(strItemText);
        // 카메라 연결 정보
        // ī�޶� ���� ����
        nRowIdx++;
        strItemText = m_ctrlGridAlignCameraInfo.GetItemText(nRowIdx, nColIdx);
        pCameraControlInfo->SetConnectionPort(strItemText);
        // 카메라 프레임 개수
        // ī�޶� ������ ����
        nRowIdx++;
        strItemText = m_ctrlGridAlignCameraInfo.GetItemText(nRowIdx, nColIdx);        
        pCameraControlInfo->SetFrameCount(_ttoi(strItemText));
        // 카메라 프레임 넓이
        // ī�޶� ������ ����
        nRowIdx++;
        strItemText = m_ctrlGridAlignCameraInfo.GetItemText(nRowIdx, nColIdx);        
        pCameraControlInfo->SetFrameWidth(_ttoi(strItemText));
        // 카메라 프레임 높이
        // ī�޶� ������ ����
        nRowIdx++;
        strItemText = m_ctrlGridAlignCameraInfo.GetItemText(nRowIdx, nColIdx);        
        pCameraControlInfo->SetFrameHeight(_ttoi(strItemText));
        // 이미지 버퍼 개수
        // �̹��� ���� ����
        nRowIdx++;
        strItemText = m_ctrlGridAlignCameraInfo.GetItemText(nRowIdx, nColIdx);        
        pCameraControlInfo->SetImageBufferCount(_ttoi(strItemText));
        // 카메라 해상도 (CCD)
        // ī�޶� �ػ� (CCD)
        nRowIdx++;
        strItemText = m_ctrlGridAlignCameraInfo.GetItemText(nRowIdx, nColIdx);
        pCameraControlInfo->SetPixelResolution(_tcstod(strItemText, NULL));
        // 카메라 컬러 채널 (Depth : Gray 1)
        // ī�޶� �÷� ä�� (Depth : Gray 1)
        nRowIdx++;
        strItemText = m_ctrlGridAlignCameraInfo.GetItemText(nRowIdx, nColIdx);
        pCameraControlInfo->SetFrameChannels(_ttoi(strItemText));
        
        // 카메라 X축 방향
        // ī�޶� X�� ����
        nRowIdx++;
        pCellCombo = (CGridCellCombo*)m_ctrlGridAlignCameraInfo.GetCell(nRowIdx, nColIdx);
@@ -226,7 +226,7 @@
            }
        }
        // 카메라 Y축 방향
        // ī�޶� Y�� ����
        nRowIdx++;
        pCellCombo = (CGridCellCombo*)m_ctrlGridAlignCameraInfo.GetCell(nRowIdx, nColIdx);
@@ -253,7 +253,7 @@
        CLightControlInfo* pLightControlInfo = pAlignCameraInfo->GetLightContorlInfo();
        if(pLightControlInfo == NULL)    continue;
        // 조명 타입
        // ���� Ÿ��
        nRowIdx++;
        pCellCombo = (CGridCellCombo*)m_ctrlGridAlignCameraInfo.GetCell(nRowIdx, nColIdx);
        if(pCellCombo)
@@ -273,25 +273,43 @@
            }
        }
        // 조명 포트
        // ���� ��Ʈ
        nRowIdx++;
        strItemText = m_ctrlGridAlignCameraInfo.GetItemText(nRowIdx, nColIdx);
        pLightControlInfo->SetConnectionPort(strItemText);
        // 마스터(Open/Close) 권한
        // ������(Open/Close) ����
        nRowIdx++;
        strItemText = m_ctrlGridAlignCameraInfo.GetItemText(nRowIdx, nColIdx);
        pLightControlInfo->SetMaster(_ttoi(strItemText));
        
        // 조명 채널
        // ���� ä��
        nRowIdx++;
        strItemText = m_ctrlGridAlignCameraInfo.GetItemText(nRowIdx, nColIdx);
        pLightControlInfo->SetChannel(_ttoi(strItemText));
        // 조명 기본값
        // ���� �⺻��
        nRowIdx++;
        strItemText = m_ctrlGridAlignCameraInfo.GetItemText(nRowIdx, nColIdx);
        pLightControlInfo->SetDefaultValue(_ttoi(strItemText));
        // ī�޶� ������
        nRowIdx++;
        strItemText = m_ctrlGridAlignCameraInfo.GetItemText(nRowIdx, nColIdx);
        BOOL nMode = FALSE;
        if (_ttoi(strItemText) >= 2)
        {
            nMode = TRUE;
        }
        else if(_ttoi(strItemText)<-1)
        {
            nMode = FALSE;
        }
        else
        {
            nMode = _ttoi(strItemText);
        }
        pCameraControlInfo->SetCameraReverseX(nMode);
        nColIdx++;
    }
@@ -326,116 +344,122 @@
    Item.mask = GVIF_TEXT;
    Item.row = nRowIdx++;
    Item.col = nColIdx;
    strTemp.Format(_T("Camera Index"));                //_T("카메라 인덱스"));
    strTemp.Format(_T("Camera Index"));                //_T("ī�޶� �ε���"));
    Item.strText = strTemp;
    m_ctrlGridAlignCameraInfo.SetItem(&Item);
    Item.row = nRowIdx++;
    Item.col = nColIdx;
    strTemp.Format(_T("Standard Camera"));            //_T("기준 카메라"));
    strTemp.Format(_T("Standard Camera"));            //_T("���� ī�޶�"));
    Item.strText = strTemp;
    m_ctrlGridAlignCameraInfo.SetItem(&Item);
    Item.row = nRowIdx++;
    Item.col = nColIdx;
    strTemp.Format(_T("Library Type"));                //_T("카메라 라이브러리"));
    strTemp.Format(_T("Library Type"));                //_T("ī�޶� ���̺귯��"));
    Item.strText = strTemp;
    m_ctrlGridAlignCameraInfo.SetItem(&Item);
    Item.row = nRowIdx++;
    Item.col = nColIdx;
    strTemp.Format(_T("Flip Type"));                //_T("카메라 플립 타입"));
    strTemp.Format(_T("Flip Type"));                //_T("ī�޶� �ø� Ÿ��"));
    Item.strText = strTemp;
    m_ctrlGridAlignCameraInfo.SetItem(&Item);
    Item.row = nRowIdx++;
    Item.col = nColIdx;
    strTemp.Format(_T("Camera Name"));                //_T("카메라 이름"));
    strTemp.Format(_T("Camera Name"));                //_T("ī�޶� �̸�"));
    Item.strText = strTemp;
    m_ctrlGridAlignCameraInfo.SetItem(&Item);
    Item.row = nRowIdx++;
    Item.col = nColIdx;
    strTemp.Format(_T("Connection Information"));    //_T("카메라 연결 정보"));  (시리얼 넘버)
    strTemp.Format(_T("Connection Information"));    //_T("ī�޶� ���� ����"));  (�ø��� �ѹ�)
    Item.strText = strTemp;
    m_ctrlGridAlignCameraInfo.SetItem(&Item);
    Item.row = nRowIdx++;
    Item.col = nColIdx;
    strTemp.Format(_T("Frame Count (f/s)"));        //_T("카메라 프레임 개수"));
    strTemp.Format(_T("Frame Count (f/s)"));        //_T("ī�޶� ������ ����"));
    Item.strText = strTemp;
    m_ctrlGridAlignCameraInfo.SetItem(&Item);
    Item.row = nRowIdx++;
    Item.col = nColIdx;
    strTemp.Format(_T("Frame Width (pxl)"));        //_T("카메라 프레임 넓이"));
    strTemp.Format(_T("Frame Width (pxl)"));        //_T("ī�޶� ������ ����"));
    Item.strText = strTemp;
    m_ctrlGridAlignCameraInfo.SetItem(&Item);
    Item.row = nRowIdx++;
    Item.col = nColIdx;
    strTemp.Format(_T("Frame Height (pxl)"));        //_T("카메라 프레임 높이"));
    strTemp.Format(_T("Frame Height (pxl)"));        //_T("ī�޶� ������ ����"));
    Item.strText = strTemp;
    m_ctrlGridAlignCameraInfo.SetItem(&Item);
    Item.row = nRowIdx++;
    Item.col = nColIdx;
    strTemp.Format(_T("Image Buffer Cnt (ea)"));    //_T("이미지 버퍼 개수"));
    strTemp.Format(_T("Image Buffer Cnt (ea)"));    //_T("�̹��� ���� ����"));
    Item.strText = strTemp;
    m_ctrlGridAlignCameraInfo.SetItem(&Item);
    Item.row = nRowIdx++;
    Item.col = nColIdx;
    strTemp.Format(_T("Resolution (um/pxl)"));        //_T("카메라 해상도"));
    strTemp.Format(_T("Resolution (um/pxl)"));        //_T("ī�޶� �ػ�"));
    Item.strText = strTemp;
    m_ctrlGridAlignCameraInfo.SetItem(&Item);
    Item.row = nRowIdx++;
    Item.col = nColIdx;
    strTemp.Format(_T("Frame Channel (Color)"));    //_T("카메라 컬러 채널"));
    strTemp.Format(_T("Frame Channel (Color)"));    //_T("ī�޶� �÷� ä��"));
    Item.strText = strTemp;
    m_ctrlGridAlignCameraInfo.SetItem(&Item);
    Item.row = nRowIdx++;
    Item.col = nColIdx;
    strTemp.Format(_T("X Axis Direction"));            //_T("카메라 X축 방향"));
    strTemp.Format(_T("X Axis Direction"));            //_T("ī�޶� X�� ����"));
    Item.strText = strTemp;
    m_ctrlGridAlignCameraInfo.SetItem(&Item);
    Item.row = nRowIdx++;
    Item.col = nColIdx;
    strTemp.Format(_T("Y Axis Direction"));            //_T("카메라 Y축 방향"));
    strTemp.Format(_T("Y Axis Direction"));            //_T("ī�޶� Y�� ����"));
    Item.strText = strTemp;
    m_ctrlGridAlignCameraInfo.SetItem(&Item);
    //////////////////////////////////////////////////////////////////////////
    Item.row = nRowIdx++;
    Item.col = nColIdx;
    strTemp.Format(_T("Light Type"));                //_T("조명 타입"));
    strTemp.Format(_T("Light Type"));                //_T("���� Ÿ��"));
    Item.strText = strTemp;
    m_ctrlGridAlignCameraInfo.SetItem(&Item);
    Item.row = nRowIdx++;
    Item.col = nColIdx;
    strTemp.Format(_T("Light Connection Port"));    //_T("조명 포트"));
    strTemp.Format(_T("Light Connection Port"));    //_T("���� ��Ʈ"));
    Item.strText = strTemp;
    m_ctrlGridAlignCameraInfo.SetItem(&Item);
    Item.row = nRowIdx++;
    Item.col = nColIdx;
    strTemp.Format(_T("Light Master"));                //_T("마스터 권한"));
    strTemp.Format(_T("Light Master"));                //_T("������ ����"));
    Item.strText = strTemp;
    m_ctrlGridAlignCameraInfo.SetItem(&Item);
    Item.row = nRowIdx++;
    Item.col = nColIdx;
    strTemp.Format(_T("Light Channel"));            //_T("조명 채널"));
    strTemp.Format(_T("Light Channel"));            //_T("���� ä��"));
    Item.strText = strTemp;
    m_ctrlGridAlignCameraInfo.SetItem(&Item);
    Item.row = nRowIdx++;
    Item.col = nColIdx;
    strTemp.Format(_T("Light Default Level"));        //_T("조명 기본값"));
    strTemp.Format(_T("Light Default Level"));        //_T("���� �⺻��"));
    Item.strText = strTemp;
    m_ctrlGridAlignCameraInfo.SetItem(&Item);
    Item.row = nRowIdx++;
    Item.col = nColIdx;
    strTemp.Format(_T("Camera ReverseX Mode"));        //_T("ī�޶� ������ ���"));
    Item.strText = strTemp;
    m_ctrlGridAlignCameraInfo.SetItem(&Item);
@@ -453,7 +477,7 @@
        m_ctrlGridAlignCameraInfo.SetColumnWidth(i + 1, nDataColumnWidth);
        //////////////////////////////////////////////////////////////////////////
        // 카메라 인덱스
        // ī�޶� �ε���
        nRowIdx = 0;
        Item.mask = GVIF_TEXT;
        Item.row = nRowIdx;
@@ -462,13 +486,13 @@
        Item.strText = strTemp;
        m_ctrlGridAlignCameraInfo.SetItem(&Item);
        // 기준 카메라
        // ���� ī�޶�
        nRowIdx++;
        Item.strText = _T("");
        m_ctrlGridAlignCameraInfo.SetCellType(nRowIdx, nColIdx, RUNTIME_CLASS(CGridCellCheck));
        m_ctrlGridAlignCameraInfo.SetItemState(nRowIdx, nColIdx, m_ctrlGridAlignCameraInfo.GetItemState(nRowIdx, nColIdx) | GVIS_READONLY);
        // 카메라 라이브러리
        // ī�޶� ���̺귯��
        nRowIdx++;
        strArrayOption.RemoveAll();
        for(j = 0; j < CameraLibrary_Count; j++)
@@ -503,7 +527,7 @@
        pCellCombo->SetOptions(strArrayOption);
        pCellCombo->SetStyle(CBS_DROPDOWN);
        // 카메라 플립 타입
        // ī�޶� �ø� Ÿ��
        nRowIdx++;
        strArrayOption.RemoveAll();
        for(j = 0; j < CAMERA_FLIP_TYPE_COUNT; j++)
@@ -534,24 +558,24 @@
        pCellCombo->SetOptions(strArrayOption);
        pCellCombo->SetStyle(CBS_DROPDOWN);
        // 카메라 이름
        // ī�޶� �̸�
        nRowIdx++;
        // 카메라 연결 정보
        // ī�޶� ���� ����
        nRowIdx++;
        // 카메라 프레임 개수
        // ī�޶� ������ ����
        nRowIdx++;
        // 카메라 프레임 넓이
        // ī�޶� ������ ����
        nRowIdx++;
        // 카메라 프레임 높이
        // ī�޶� ������ ����
        nRowIdx++;
        // 이미지 버퍼 개수
        // �̹��� ���� ����
        nRowIdx++;
        // 카메라 해상도
        // ī�޶� �ػ�
        nRowIdx++;
        // 카메라 컬러 채널
        // ī�޶� �÷� ä��
        nRowIdx++;
        //카메라 X축 방향
        //ī�޶� X�� ����
        nRowIdx++;
        strArrayOption.RemoveAll();
        for(j = 0; j < CAMERA_DIRECTION_COUNT; j++)
@@ -559,10 +583,10 @@
            switch(j)
            {
            case CAMERA_DIRECTION_FORWARD:
                strTemp.Format(_T("Nomal Direction"));//_T("정방향"));
                strTemp.Format(_T("Nomal Direction"));//_T("������"));
                break;
            case CAMERA_DIRECTION_BACKWARD:
                strTemp.Format(_T("Reverse Direction"));//_T("역방향"));
                strTemp.Format(_T("Reverse Direction"));//_T("������"));
                break;
            default:
                strTemp.Format(_T(""));
@@ -577,7 +601,7 @@
        pCellCombo->SetOptions(strArrayOption);
        pCellCombo->SetStyle(CBS_DROPDOWN);
        //카메라 Y축 방향
        //ī�޶� Y�� ����
        nRowIdx++;
        strArrayOption.RemoveAll();
        for(j = 0; j < CAMERA_DIRECTION_COUNT; j++)
@@ -585,10 +609,10 @@
            switch(j)
            {
            case CAMERA_DIRECTION_FORWARD:
                strTemp.Format(_T("Nomal Direction"));//_T("정방향"));
                strTemp.Format(_T("Nomal Direction"));//_T("������"));
                break;
            case CAMERA_DIRECTION_BACKWARD:
                strTemp.Format(_T("Reverse Direction"));//_T("역방향"));
                strTemp.Format(_T("Reverse Direction"));//_T("������"));
                break;
            default:
                strTemp.Format(_T(""));
@@ -604,7 +628,7 @@
        pCellCombo->SetStyle(CBS_DROPDOWN);
        //////////////////////////////////////////////////////////////////////////
        //조명 타입
        //���� Ÿ��
        nRowIdx++;
        strArrayOption.RemoveAll();
        for(j = 0; j < LightController_Count; j++)
@@ -695,14 +719,14 @@
            CCameraControlInfo_Plus* pCameraControlInfo = pCameraInfo->GetCameraControlInfo();
            if(pCameraControlInfo == NULL)    continue;
            // 기준 카메라
            // ���� ī�޶�
            pCellCheck = (CGridCellCheck*)m_ctrlGridAlignCameraInfo.GetCell(nRowIdx, nColIdx);
            if(pCellCheck)
            {
                pCellCheck->SetCheck(pCameraControlInfo->GetStandardCamera());
            }
            // 카메라 라이브러리
            // ī�޶� ���̺귯��
            nRowIdx++;
            pCellCombo = (CGridCellCombo*)m_ctrlGridAlignCameraInfo.GetCell(nRowIdx, nColIdx);
            if(pCellCombo)
@@ -717,7 +741,7 @@
                }
            }
            // 카메라 플립 타입
            // ī�޶� �ø� Ÿ��
            nRowIdx++;
            pCellCombo = (CGridCellCombo*)m_ctrlGridAlignCameraInfo.GetCell(nRowIdx, nColIdx);
            if(pCellCombo)
@@ -732,46 +756,46 @@
                }
            }
            // 카메라 이름
            // ī�޶� �̸�
            nRowIdx++;
            m_ctrlGridAlignCameraInfo.SetItemText(nRowIdx, nColIdx, pCameraControlInfo->GetName());
            // 카메라 연결 정보
            // ī�޶� ���� ����
            nRowIdx++;
            strItemText.Format(_T("%s"), pCameraControlInfo->GetConnectionPort());
            m_ctrlGridAlignCameraInfo.SetItemText(nRowIdx, nColIdx, strItemText);
            // 카메라 프레임 개수
            // ī�޶� ������ ����
            nRowIdx++;
            strItemText.Format(_T("%d"), pCameraControlInfo->GetFrameCount());
            m_ctrlGridAlignCameraInfo.SetItemText(nRowIdx, nColIdx, strItemText);
            // 카메라 프레임 넓이
            // ī�޶� ������ ����
            nRowIdx++;
            strItemText.Format(_T("%d"), pCameraControlInfo->GetFrameWidth());
            m_ctrlGridAlignCameraInfo.SetItemText(nRowIdx, nColIdx, strItemText);
            // 카메라 프레임 높이
            // ī�޶� ������ ����
            nRowIdx++;
            strItemText.Format(_T("%d"), pCameraControlInfo->GetFrameHeight());
            m_ctrlGridAlignCameraInfo.SetItemText(nRowIdx, nColIdx, strItemText);
            // 이미지 버퍼 개수
            // �̹��� ���� ����
            nRowIdx++;
            strItemText.Format(_T("%d"), pCameraControlInfo->GetImageBufferCount());
            m_ctrlGridAlignCameraInfo.SetItemText(nRowIdx, nColIdx, strItemText);
            // 카메라 해상도
            // ī�޶� �ػ�
            nRowIdx++;
            strItemText.Format(_T("%.08lf"), pCameraControlInfo->GetPixelResolution());
            m_ctrlGridAlignCameraInfo.SetItemText(nRowIdx, nColIdx, strItemText);
            // 카메라 컬러 채널
            // ī�޶� �÷� ä��
            nRowIdx++;
            strItemText.Format(_T("%d"), pCameraControlInfo->GetFrameChannels());
            m_ctrlGridAlignCameraInfo.SetItemText(nRowIdx, nColIdx, strItemText);
            // 카메라 X축 방향
            // ī�޶� X�� ����
            nRowIdx++;
            pCellCombo = (CGridCellCombo*)m_ctrlGridAlignCameraInfo.GetCell(nRowIdx, nColIdx);
@@ -787,7 +811,7 @@
                }
            }
            // 카메라 Y축 방향
            // ī�޶� Y�� ����
            nRowIdx++;
            pCellCombo = (CGridCellCombo*)m_ctrlGridAlignCameraInfo.GetCell(nRowIdx, nColIdx);
@@ -806,7 +830,7 @@
            CLightControlInfo* pLightControlInfo = pCameraInfo->GetLightContorlInfo();
            if(pLightControlInfo == NULL)    continue;
            // 조명 타입
            // ���� Ÿ��
            nRowIdx++;
            pCellCombo = (CGridCellCombo*)m_ctrlGridAlignCameraInfo.GetCell(nRowIdx, nColIdx);
            if(pCellCombo)
@@ -822,25 +846,30 @@
                }
            }
            // 조명 포트
            // ���� ��Ʈ
            nRowIdx++;
            m_ctrlGridAlignCameraInfo.SetItemText(nRowIdx, nColIdx, pLightControlInfo->GetConnectionPort());
            // 마스터 권한
            // ������ ����
            nRowIdx++;
            strItemText.Format(_T("%d"), pLightControlInfo->GetMaster());
            m_ctrlGridAlignCameraInfo.SetItemText(nRowIdx, nColIdx, strItemText);
            // 조명 채널
            // ���� ä��
            nRowIdx++;
            strItemText.Format(_T("%d"), pLightControlInfo->GetChannel());
            m_ctrlGridAlignCameraInfo.SetItemText(nRowIdx, nColIdx, strItemText);
            // 조명 기본값
            // ���� �⺻��
            nRowIdx++;
            strItemText.Format(_T("%d"), pLightControlInfo->GetDefaultValue());
            m_ctrlGridAlignCameraInfo.SetItemText(nRowIdx, nColIdx, strItemText);
            // ī�޶� ������ ���
            nRowIdx++;
            strItemText.Format(_T("%d"), pCameraControlInfo->GetCameraReverseX());
            m_ctrlGridAlignCameraInfo.SetItemText(nRowIdx, nColIdx, strItemText);
            nColIdx++;
        }
    }    
ReviewSystem/ReviewSystemSetting/DlgAlign.h
@@ -6,17 +6,17 @@
#include "afxwin.h"
#define ALIGN_CAMERA_COUNT                    2
#define ALIGN_CAMERA_INFO_GRID_ROW_COUNT    19
#define ALIGN_CAMERA_INFO_GRID_ROW_COUNT    20
#define ALIGN_CAMERA_INFO_GRID_COL_COUNT    3
// CDlgAlign 대화 상자입니다.
// CDlgAlign ��ȭ �����Դϴ�.
class CDlgAlign : public CDialog
{
    DECLARE_DYNAMIC(CDlgAlign)
public:
    CDlgAlign(CWnd* pParent = NULL);   // 표준 생성자입니다.
    CDlgAlign(CWnd* pParent = NULL);   // ǥ�� �������Դϴ�.
    virtual ~CDlgAlign();
public:
@@ -24,11 +24,11 @@
    void FillAlignCameraInfo();
    void ResetAlignCameraInfoGrid();
// 대화 상자 데이터입니다.
// ��ȭ ���� �������Դϴ�.
    enum { IDD = IDD_DIALOG_SYS_SETTING_ALIGN };
protected:
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 지원입니다.
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV �����Դϴ�.
    DECLARE_MESSAGE_MAP()
public:
@@ -37,6 +37,6 @@
    afx_msg void OnBnClickedButtonSysAlignReset();
    afx_msg void OnBnClickedButtonSysAlignApply();
    CGridCtrl m_ctrlGridAlignCameraInfo;
    // // 얼라인 카메라프레임 레이트 적용 여부
    // // ����� ī�޶������� ����Ʈ ���� ����
    CButton m_ctrlCheckAlignCameraFrameRateApply;
};
ReviewSystem/ReviewSystemSetting/stdafx.h
@@ -41,8 +41,8 @@
#define _REVIEW_SERVER_CONFIG_PATH_                    _T("C:\\DIT_Review\\ReviewServerConfig")
#define _REVIEW_SERVER_SYSTEM_SETTING_FILE_PATH_    _T("C:\\DIT_Review\\ReviewServerConfig\\SystemSetting.cfg")
#define _REVIEW_SERVER_SYSTEM_PASSWORD_FILE_PATH_    _T("C:\\DIT_Review\\ReviewServerConfig\\SystemSetting.dat")
#define _REVIEW_RECIPE_BACKUP_PATH_CPJT                _T("\\\\126.100.100.10\\d\\DIT Back up\\DIT Review\\Recipe")
#define _REVIEW_SERVER_SYSTEM_SETTING_BACKUP_PATH_CPJT    _T("\\\\126.100.100.10\\d\\DIT Back up\\DIT Review\\ReviewServerConfig")
#define _REVIEW_RECIPE_BACKUP_PATH_CPJT                _T("\\\\126.100.100.5\\d\\DIT Back up\\DIT Review\\Recipe")
#define _REVIEW_SERVER_SYSTEM_SETTING_BACKUP_PATH_CPJT    _T("\\\\126.100.100.5\\d\\DIT Back up\\DIT Review\\ReviewServerConfig")
#define _REVIEW_SYSTEM_TITLE_                        _T("ReviewSystem")
#define    COPYDATA_SYSTEMSETTING2REVIEWSYSTEM            1500