From b4788e99825bd153001f2ea441adc2972cefd9d1 Mon Sep 17 00:00:00 2001
From: LYW <leeyeanwoo@diteam.co.kr>
Date: 수, 16 6월 2021 13:06:49 +0900
Subject: [PATCH] Ongoing80 #3440 CF AOI Review [QD, CS] Align Cam Reverse X 제어 기능 추가 1) Align Cam Connect 시 ReverseX 파라미터 카메라에 전송 및 적용 기능 추가

---
 ReviewSystem/ReviewSystemSetting/stdafx.h                           |    4 
 Internal_Library/CHCameraControls/CameraControlInfo.cpp             |   19 +++
 Internal_Library/Include/CHCameraControls/CameraControlInfo.h       |   58 ++++++---
 ReviewSystem/ReviewSystemSetting/DlgAlign.h                         |   12 +-
 Internal_Library/CHCameraControl_Pylon/CHCameraControlPylon.vcxproj |   19 ++
 ReviewSystem/CHReviewSetting/Sys_AlignManager.cpp                   |   14 +
 Internal_Library/CHCameraControl_Pylon/CameraControl_Pylon.cpp      |   14 +
 Internal_Library/Include/CHCameraControls/CameraControl.h           |    3 
 ReviewSystem/ReviewSystemSetting/DlgAlign.cpp                       |  195 ++++++++++++++++++-------------
 9 files changed, 216 insertions(+), 122 deletions(-)

diff --git a/Internal_Library/CHCameraControl_Pylon/CHCameraControlPylon.vcxproj b/Internal_Library/CHCameraControl_Pylon/CHCameraControlPylon.vcxproj
index d34c967..48fd050 100644
--- a/Internal_Library/CHCameraControl_Pylon/CHCameraControlPylon.vcxproj
+++ b/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" />
diff --git a/Internal_Library/CHCameraControl_Pylon/CameraControl_Pylon.cpp b/Internal_Library/CHCameraControl_Pylon/CameraControl_Pylon.cpp
index 605d716..1c2b53d 100644
--- a/Internal_Library/CHCameraControl_Pylon/CameraControl_Pylon.cpp
+++ b/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 占쌩곤옙
 	}
 }
 
diff --git a/Internal_Library/CHCameraControls/CameraControlInfo.cpp b/Internal_Library/CHCameraControls/CameraControlInfo.cpp
index 372700a..359e2fe 100644
--- a/Internal_Library/CHCameraControls/CameraControlInfo.cpp
+++ b/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;
 }
\ No newline at end of file
diff --git a/Internal_Library/Include/CHCameraControls/CameraControl.h b/Internal_Library/Include/CHCameraControls/CameraControl.h
index 5cafcdb..89fa71a 100644
--- a/Internal_Library/Include/CHCameraControls/CameraControl.h
+++ b/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);
\ No newline at end of file
diff --git a/Internal_Library/Include/CHCameraControls/CameraControlInfo.h b/Internal_Library/Include/CHCameraControls/CameraControlInfo.h
index f82eebe..59ce65a 100644
--- a/Internal_Library/Include/CHCameraControls/CameraControlInfo.h
+++ b/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;
 };
 
diff --git a/ReviewSystem/CHReviewSetting/Sys_AlignManager.cpp b/ReviewSystem/CHReviewSetting/Sys_AlignManager.cpp
index b7fa73b..2cc9866 100644
--- a/ReviewSystem/CHReviewSetting/Sys_AlignManager.cpp
+++ b/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);
 	}
 }
diff --git a/ReviewSystem/ReviewSystemSetting/DlgAlign.cpp b/ReviewSystem/ReviewSystemSetting/DlgAlign.cpp
index 3ee74d0..921d7c8 100644
--- a/ReviewSystem/ReviewSystemSetting/DlgAlign.cpp
+++ b/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++;
 		}
 	}	
diff --git a/ReviewSystem/ReviewSystemSetting/DlgAlign.h b/ReviewSystem/ReviewSystemSetting/DlgAlign.h
index b02ba0f..424d47d 100644
--- a/ReviewSystem/ReviewSystemSetting/DlgAlign.h
+++ b/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;
 };
diff --git a/ReviewSystem/ReviewSystemSetting/stdafx.h b/ReviewSystem/ReviewSystemSetting/stdafx.h
index f09914e..a5d7fd3 100644
--- a/ReviewSystem/ReviewSystemSetting/stdafx.h
+++ b/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

--
Gitblit v1.9.3