From 20734d0fdaefe16a67511bdf8fe6e295c02f27dc Mon Sep 17 00:00:00 2001 From: kojingeun <diteam.co.kr> Date: 월, 19 6월 2023 16:25:31 +0900 Subject: [PATCH] Ongoing60 #4517 CF AOI Review 결과 파일 찾기 실패 개선 1. Find Bin File 무조건 실패하는 버그 개선 --- DitGlassRawMessenger/DitGlassRawMessenger/DitGlassRawMessengerDlg.cpp | 196 +++++++++++++++++++++++++++++++++--------------- 1 files changed, 134 insertions(+), 62 deletions(-) diff --git a/DitGlassRawMessenger/DitGlassRawMessenger/DitGlassRawMessengerDlg.cpp b/DitGlassRawMessenger/DitGlassRawMessenger/DitGlassRawMessengerDlg.cpp index 4f22cb1..1fdb749 100644 --- a/DitGlassRawMessenger/DitGlassRawMessenger/DitGlassRawMessengerDlg.cpp +++ b/DitGlassRawMessenger/DitGlassRawMessenger/DitGlassRawMessengerDlg.cpp @@ -1,5 +1,5 @@ -// DitGlassRawMessengerDlg.cpp : 占쏙옙占쏙옙 占쏙옙占쏙옙 +// DitGlassRawMessengerDlg.cpp : 구현 파일 // #include "stdafx.h" @@ -23,20 +23,20 @@ #define GRID_TEXT_COLOR RGB(255,255,255) #define GRID_ALARM_TEXT_COLOR RGB(255,0,0) #define GRID_LINE_COLOR GRID_FIX_COLOR -// 占쏙옙占쏙옙 占쏙옙占싸그뤄옙 占쏙옙占쏙옙占쏙옙 占쏙옙占실댐옙 CAboutDlg 占쏙옙화 占쏙옙占쏙옙占쌉니댐옙. +// 응용 프로그램 정보에 사용되는 CAboutDlg 대화 상자입니다. class CAboutDlg : public CDialog { public: CAboutDlg(); -// 占쏙옙화 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙占쌉니댐옙. +// 대화 상자 데이터입니다. enum { IDD = IDD_ABOUTBOX }; protected: - virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 占쏙옙占쏙옙占쌉니댐옙. + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 지원입니다. -// 占쏙옙占쏙옙占쌉니댐옙. +// 구현입니다. protected: DECLARE_MESSAGE_MAP() }; @@ -54,7 +54,7 @@ END_MESSAGE_MAP() -// CDitGlassRawMessengerDlg 占쏙옙화 占쏙옙占쏙옙 +// CDitGlassRawMessengerDlg 대화 상자 @@ -127,11 +127,10 @@ m_vecStrGridDefectHeader.push_back("CellY(mm)"); m_vecStrGridDefectHeader.push_back("ScrtRatio"); m_vecStrGridDefectHeader.push_back("Density"); - //201207 CJH - Merge 占쏙옙占쏙옙 확占쏙옙 + //201207 CJH - Merge 여부 확인 m_vecStrGridDefectHeader.push_back("MergeState"); } - void CDitGlassRawMessengerDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); @@ -166,6 +165,9 @@ ON_BN_CLICKED(IDC_BTN_STACKAPPLY, &CDitGlassRawMessengerDlg::OnBnClickedBtnStackapply) ON_BN_CLICKED(IDC_TEST_CMD, &CDitGlassRawMessengerDlg::OnBnClickedTestCmd) ON_BN_CLICKED(IDC_BTN_FTP_MANUALUPLOAD, &CDitGlassRawMessengerDlg::OnBnClickedBtnFtpManualupload) + /* <LJC 20211122 : #3820 ADD Start> */ + ON_WM_COPYDATA() + /* <LJC 20211122 : #3820 ADD End> */ END_MESSAGE_MAP() void GetCompileTime(tm& timestruct) @@ -192,16 +194,22 @@ if (timestruct.tm_mon>11 || timestruct.tm_mon<0 ) ASSERT(FALSE); } -// CDitGlassRawMessengerDlg 占쌨쏙옙占쏙옙 처占쏙옙占쏙옙 +// CDitGlassRawMessengerDlg 메시지 처리기 BOOL CDitGlassRawMessengerDlg::OnInitDialog() { + + /* <LJC 20220407 : #4053 MOD Start> */ + CString strTemp; + strTemp.Format(_T("Version : %s %s"), _T(__DATE__), _T(__TIME__)); + AKLOG("DITRawMessenger 프로그램 실행( : %s )", strTemp); + /* <LJC 20220407 : #4053 MOD End> */ CDialog::OnInitDialog(); DragAcceptFiles(TRUE); - // 占시쏙옙占쏙옙 占쌨댐옙占쏙옙 "占쏙옙占쏙옙..." 占쌨댐옙 占쌓몌옙占쏙옙 占쌩곤옙占쌌니댐옙. + // 시스템 메뉴에 "정보..." 메뉴 항목을 추가합니다. - // IDM_ABOUTBOX占쏙옙 占시쏙옙占쏙옙 占쏙옙占� 占쏙옙占쏙옙占쏙옙 占쌍억옙占� 占쌌니댐옙. + // IDM_ABOUTBOX는 시스템 명령 범위에 있어야 합니다. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); @@ -219,16 +227,16 @@ } } - // 占쏙옙 占쏙옙화 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙占쌌니댐옙. 占쏙옙占쏙옙 占쏙옙占싸그뤄옙占쏙옙 占쏙옙 창占쏙옙 占쏙옙화 占쏙옙占쌘곤옙 占싣댐옙 占쏙옙荑∽옙占� - // 占쏙옙占쏙옙占쌈울옙크占쏙옙 占쏙옙 占쌜억옙占쏙옙 占쌘듸옙占쏙옙占쏙옙 占쏙옙占쏙옙占쌌니댐옙. - SetIcon(m_hIcon, TRUE); // 큰 占쏙옙占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙占쌌니댐옙. - SetIcon(m_hIcon, FALSE); // 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙占쌌니댐옙. + // 이 대화 상자의 아이콘을 설정합니다. 응용 프로그램의 주 창이 대화 상자가 아닐 경우에는 + // 프레임워크가 이 작업을 자동으로 수행합니다. + SetIcon(m_hIcon, TRUE); // 큰 아이콘을 설정합니다. + SetIcon(m_hIcon, FALSE); // 작은 아이콘을 설정합니다. - //트占쏙옙占싱억옙占쏙옙占쏙옙 占쏙옙占쏙옙 + //트레이아이콘 구성 m_TrayIcon = FALSE; ResTrayIcon(); - //占쏙옙占� 占쏙옙占쏙옙 + //빌드 정보 { CString strBuild; tm tmBuild; @@ -237,7 +245,7 @@ SetDlgItemText(IDC_BUILDDATE, strBuild); } - //占쏙옙占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙 占싻억옙 占쏙옙占쏙옙 [占쏙옙占쏙옙占쏙옙 2018/11/20] + //설정파일 정보 읽어 오기 [김태현 2018/11/20] { m_strConfigFile; { @@ -251,9 +259,13 @@ akFileDB.getItem("DataMaxNumCell", &m_ConfigOption.m_nMaxDataNumCell, 200); akFileDB.getItem("DataMaxNumDefect", &m_ConfigOption.m_nMaxDataNumDefect, 50000); akFileDB.getItem("SelectRawType", &m_ConfigOption.m_nSelectRawType, 0); - akFileDB.getItem("LogFilePath", m_ConfigOption.m_strLogFilePath, "c:\\AOIServer\\LogRawMessenger\\LogRawMessenger"); + akFileDB.getItem("LogFilePath", m_ConfigOption.m_strLogFilePath, "D:\\AOIServer\\LogRawMessenger\\LogRawMessenger"); akFileDB.getItem("Stack_Use", &m_ConfigOption.m_bUseStack, 0); akFileDB.getItem("Stack_LocalPath", m_ConfigOption.m_strStackLocalPath, "D:\\DIT_ResultData\\Stack"); + /*< KJG 20211024 - #3487 ADD Start >*/ + akFileDB.getItem("RawMerge_Use", &m_ConfigOption.m_bUseRawMerge, 0); + akFileDB.getItem("RawMerge_LocalPath", m_ConfigOption.m_strRawMergeLocalPath, "D:\\DIT_ResultData\\RawMerge"); + /*< KJG 20211024 - #3487 ADD End >*/ akFileDB.getItem("Stack_EquipID",m_ConfigOption.m_strStackEquipID, "AAAAA"); akFileDB.getItem("Stack_Param1",m_ConfigOption.m_strStackParam1, ""); akFileDB.getItem("Stack_Param2",m_ConfigOption.m_strStackParam2, ""); @@ -263,12 +275,14 @@ ((CButton*)GetDlgItem(IDC_CHECK_STACKFILEREAD))->SetCheck(m_ConfigOption.m_bUseStack); SetDlgItemText(IDC_EDIT_STACK_LOCALSAVEPATH, m_ConfigOption.m_strStackLocalPath); + ((CButton*)GetDlgItem(IDC_CHECK_RAWMERGEFILEREAD))->SetCheck(m_ConfigOption.m_bUseRawMerge); + SetDlgItemText(IDC_EDIT_RAWMERGE_LOCALSAVEPATH, m_ConfigOption.m_strRawMergeLocalPath); SetDlgItemText(IDC_EDIT_STACK_EQUIPID, m_ConfigOption.m_strStackEquipID); SetDlgItemText(IDC_EDIT_STACK_PARAM1, m_ConfigOption.m_strStackParam1); SetDlgItemText(IDC_EDIT_STACK_PARAM2, m_ConfigOption.m_strStackParam2); } - //占싸깍옙 占쏙옙占쏙옙 [占쏙옙占쏙옙占쏙옙 2018/11/20] + //로그 관련 [김태현 2018/11/20] { CakFileUtil fileutil; char strPath[256]; @@ -276,7 +290,7 @@ CreateDirectory(strPath, NULL); //CakLoggerExt::getInstance()->setWriteFileMode(m_ConfigOption.m_strLogFilePath); - CakLoggerExt::getInstance()->setWriteFileMode2("C:\\DIT_LogData\\", "logGlassRawMessenger"); + CakLoggerExt::getInstance()->setWriteFileMode2("D:\\DIT_LogData\\", "logGlassRawMessenger"); CakLoggerExt::getInstance()->m_hParent = GetSafeHwnd(); m_ctrlLoggerList; @@ -371,30 +385,30 @@ if(m_Server.CreateServer(m_ConfigOption.m_nMaxDataNumCell, m_ConfigOption.m_nMaxDataNumDefect) == FALSE) { - AfxMessageBox("占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙 占쌌니댐옙."); + AfxMessageBox("서버 생성 실패 종료 합니다."); exit(0); } - //占쏙옙占썹값 占쏙옙占쏙옙 [占쏙옙占쏙옙占쏙옙 2019/1/12] + //현재값 적용 [김태현 2019/1/12] { CDitGlassRawServer* pServer = (CDitGlassRawServer*) &m_Server; CgrmGlassRawData* pRawDataBuffer = &m_GlassRawDataBuffer; pRawDataBuffer->ImportGlassRaw(pServer->GetGlassRawInfo(), (char*)pServer->GetGlassData()); } - //占쌜억옙 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙 [占쏙옙占쏙옙占쏙옙 2018/11/13] + //작업 쓰레드 생성 [김태현 2018/11/13] { _beginthread(threadMain, NULL, this); } PostMessage(UM_GLASSRAW_CLIENTMESSAGE); - return TRUE; // 占쏙옙커占쏙옙占쏙옙 占쏙옙트占싼울옙 占쏙옙占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 TRUE占쏙옙 占쏙옙환占쌌니댐옙. + return TRUE; // 포커스를 컨트롤에 설정하지 않으면 TRUE를 반환합니다. } void CDitGlassRawMessengerDlg::OnBnClickedOk() { - // TODO: 占쏙옙占썩에 占쏙옙트占쏙옙 占싯몌옙 처占쏙옙占쏙옙 占쌘드를 占쌩곤옙占쌌니댐옙. + // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다. OnOK(); } @@ -403,14 +417,14 @@ { NOTIFYICONDATA nid; nid.cbSize = sizeof(nid); - nid.hWnd = m_hWnd; // 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 占쌘듸옙 - nid.uID = IDR_MAINFRAME; // 占쏙옙占쏙옙占쏙옙 占쏙옙占쌀쏙옙 ID - nid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP; // 占시뤄옙占쏙옙 占쏙옙占쏙옙 - nid.uCallbackMessage = UM_TRAYICON_MSG; // 占쌥뱄옙聘占쏙옙占� 占쏙옙占쏙옙 - nid.hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); // 占쏙옙占쏙옙占쏙옙 占싸듸옙 + nid.hWnd = m_hWnd; // 메인 윈도우 핸들 + nid.uID = IDR_MAINFRAME; // 아이콘 리소스 ID + nid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP; // 플래그 설정 + nid.uCallbackMessage = UM_TRAYICON_MSG; // 콜백메시지 설정 + nid.hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); // 아이콘 로드 char strTitle[256]; - GetWindowText(strTitle, sizeof(strTitle)); // 캡占실바울옙 占쏙옙쨉占� 占쏙옙占쌘울옙 占쏙옙占쏙옙 + GetWindowText(strTitle, sizeof(strTitle)); // 캡션바에 출력된 문자열 얻음 lstrcpy(nid.szTip, strTitle); Shell_NotifyIcon(NIM_ADD, &nid); SendMessage(WM_SETICON, (WPARAM)TRUE, (LPARAM)nid.hIcon); @@ -433,8 +447,8 @@ GetCursorPos(&pos); { HMENU hMenu = CreatePopupMenu(); - AppendMenu(hMenu, MF_STRING, 0, "占쏙옙占쏙옙占쏙옙2占쏙옙트占쏙옙품"); - AppendMenu(hMenu, MF_STRING, WM_DESTROY, "Exit"); + AppendMenu(hMenu, MF_STRING, 0, "연구소2파트작품"); + AppendMenu(hMenu, MF_STRING, WM_DESTROY, "Exit"); TrackPopupMenu(hMenu, TPM_LEFTALIGN | TPM_RIGHTBUTTON, pos.x, pos.y, 0, GetSafeHwnd(), NULL); } @@ -461,19 +475,19 @@ } } -// 占쏙옙화 占쏙옙占쌘울옙 占쌍쇽옙화 占쏙옙占쌩몌옙 占쌩곤옙占쏙옙 占쏙옙占� 占쏙옙占쏙옙占쏙옙占쏙옙 占쌓몌옙占쏙옙占쏙옙 -// 占싣뤄옙 占쌘드가 占십울옙占쌌니댐옙. 占쏙옙占쏙옙/占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙求占� MFC 占쏙옙占쏙옙 占쏙옙占싸그뤄옙占쏙옙 占쏙옙荑∽옙占� -// 占쏙옙占쏙옙占쌈울옙크占쏙옙占쏙옙 占쏙옙 占쌜억옙占쏙옙 占쌘듸옙占쏙옙占쏙옙 占쏙옙占쏙옙占쌌니댐옙. +// 대화 상자에 최소화 단추를 추가할 경우 아이콘을 그리려면 +// 아래 코드가 필요합니다. 문서/뷰 모델을 사용하는 MFC 응용 프로그램의 경우에는 +// 프레임워크에서 이 작업을 자동으로 수행합니다. void CDitGlassRawMessengerDlg::OnPaint() { if (IsIconic()) { - CPaintDC dc(this); // 占쌓몌옙占썩를 占쏙옙占쏙옙 占쏙옙占쏙옙決占� 占쏙옙占쌔쏙옙트 + CPaintDC dc(this); // 그리기를 위한 디바이스 컨텍스트 SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0); - // 클占쏙옙占싱억옙트 占썹각占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙占쏙옙 占쏙옙占쏘데占쏙옙 占쏙옙占쏙옙求占�. + // 클라이언트 사각형에서 아이콘을 가운데에 맞춥니다. int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; @@ -481,7 +495,7 @@ int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; - // 占쏙옙占쏙옙占쏙옙占쏙옙 占쌓몌옙占싹댐옙. + // 아이콘을 그립니다. dc.DrawIcon(x, y, m_hIcon); } else @@ -490,8 +504,8 @@ } } -// 占쏙옙占쏙옙微占� 占쌍쇽옙화占쏙옙 창占쏙옙 占쏙옙占� 占쏙옙占싫울옙 커占쏙옙占쏙옙 표占시되듸옙占쏙옙 占시쏙옙占쌜울옙占쏙옙 -// 占쏙옙 占쌉쇽옙占쏙옙 호占쏙옙占쌌니댐옙. +// 사용자가 최소화된 창을 끄는 동안에 커서가 표시되도록 시스템에서 +// 이 함수를 호출합니다. HCURSOR CDitGlassRawMessengerDlg::OnQueryDragIcon() { return static_cast<HCURSOR>(m_hIcon); @@ -501,15 +515,15 @@ void CDitGlassRawMessengerDlg::OnDropFiles(HDROP hDropInfo) { int nFiles; - char szPathName[MAX_PATH]; // 占쏙옙占쏙옙 占쏙옙罐占쏙옙占� 占쏙옙載o옙占�. + char szPathName[MAX_PATH]; // 파일 경로면이 들어간다. CString strFileName; - // 占쏙옙撻占� 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙 + // 드롭된 파일의 갯수 nFiles = ::DragQueryFile( hDropInfo, 0xFFFFFFFF, szPathName, MAX_PATH ); - for(int i = nFiles-1 ; i >= 0; i--) //占쏙옙撻占� 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙큼 占쏙옙占쏙옙占쏙옙 占쏙옙占썽서 占쏙옙占쏙옙 占쏙옙罐占� 占쌨쇽옙占쏙옙 占쌘쏙옙占쏙옙 占쏙옙占� + for(int i = nFiles-1 ; i >= 0; i--) //드롭된 파일 갯수만큼 루프를 돌면서 파일 경로를 메세지 박스로 출력 { - // 占쏙옙占쏙옙占쏙옙 占쏙옙占� 占쏙옙占쏙옙 + // 파일의 경로 얻어옴 ::DragQueryFile(hDropInfo, i, szPathName, MAX_PATH); SetDlgItemText(IDC_EDIT_RAWFILENAME, szPathName); @@ -593,6 +607,9 @@ Sleep(10); } pThis->m_nThreadMainFlag = 0; + /* <KMH 20220407 : #4053 ADD Start> */ + AKLOG("Main Thread End"); + /* <KMH 20220407 : #4053 ADD End> */ } void CDitGlassRawMessengerDlg::MainProcess() @@ -601,18 +618,18 @@ if(pRawInfo->m_nCommandIdxWrite != pRawInfo->m_nCommandIdxRead) { - int nReadIdx = (pRawInfo->m_nCommandIdxRead+1)%COMMAND_MAXCOUNT; //占쏙옙占쏙옙占� 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙트占쏙옙占쏙옙占쏙옙 占싹놂옙 占쏙옙占쏙옙占쏙옙占싼쇽옙 占싻는댐옙. [占쏙옙占쏙옙占쏙옙 2018/11/13] + int nReadIdx = (pRawInfo->m_nCommandIdxRead+1)%COMMAND_MAXCOUNT; //현재는 읽은 마지막 포인트임으로 하나 증가시켜서 읽는다. [김태현 2018/11/13] _grmDitCommand::_grmCommand* pCommand = &pRawInfo->m_nCommandBuffer[nReadIdx]; AKLOG("Recv Command ID:%d(r%d/w%d)", pCommand->nCommand, nReadIdx, pRawInfo->m_nCommandIdxWrite); pRawInfo->m_nCommandIdxRead = nReadIdx; - if(pCommand->nResult == -1) //占쏙옙占� 占쏙옙占쏙옙 占쏙옙 [占쏙옙占쏙옙占쏙옙 2018/11/13] + if(pCommand->nResult == -1) //명령 수행 전 [김태현 2018/11/13] { pCommand->nResult = ProcessCommand( (emGlassRawCommand)pCommand->nCommand, pCommand->strParam ); } else { - //占싱뱄옙 처占쏙옙 占싫곤옙 [占쏙옙占쏙옙占쏙옙 2018/11/13] + //이미 처리 된거 [김태현 2018/11/13] } AKLOG("Recv Command ID:%d(r%d/w%d) Process End(Result:%d)", pCommand->nCommand, nReadIdx, pRawInfo->m_nCommandIdxWrite, pCommand->nResult); @@ -658,7 +675,7 @@ { nResult = m_pGlassRawMaker->SequenceInspectEnd(pRawDataBuffer); pServer->GetGlassRawInfo()->m_ServerProcStep = APS_InspectEnd; - //Stack 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙占쌨모리울옙 占쌥울옙 占싹깍옙 占쏙옙占쏙옙 Export + //Stack 정보를 공유메모리에 반영 하기 위한 Export //pRawDataBuffer->ExportGlassRaw(pServer->GetGlassRawInfo(), (char*)pServer->GetGlassData()); break; } @@ -677,7 +694,7 @@ case grcSequenceCustomReviewDataRead: { nResult = m_pGlassRawMaker->SequenceCustomizeReview(pRawDataBuffer); - ////Customize Review占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙트 + ////Customize Review를 위한 업데이트 //{ // memcpy(pServer->GetDefectData(0), pRawDataBuffer->GetDefectData(0), sizeof(_grmDefectData)*pServer->GetGlassRawInfo()->m_nDefectMaxDataNum); // memcpy(pServer->GetCellData(0), pRawDataBuffer->GetCellData(0), sizeof(_grmCellData)*pServer->GetGlassRawInfo()->m_nCellMaxDataNum); @@ -763,7 +780,6 @@ } - BOOL CDitGlassRawMessengerDlg::DestroyWindow() { if(m_nThreadMainFlag != 0) @@ -777,14 +793,14 @@ if(m_pGlassRawMaker) delete m_pGlassRawMaker; - if(m_TrayIcon) // 占쏙옙占쏙옙 트占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙占실억옙占쏙옙占쏙옙 확占쏙옙 + if(m_TrayIcon) // 현재 트레이 아이콘으로 설정되었는지 확인 { NOTIFYICONDATA nid; nid.cbSize = sizeof(nid); - nid.hWnd = m_hWnd; // 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 占쌘듸옙 + nid.hWnd = m_hWnd; // 메인 윈도우 핸들 nid.uID = IDR_MAINFRAME; - // 占쌜억옙 표占쏙옙占쏙옙(TaskBar)占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙占싼댐옙. + // 작업 표시줄(TaskBar)의 상태 영역에 아이콘을 삭제한다. Shell_NotifyIcon(NIM_DELETE, &nid); } @@ -942,7 +958,7 @@ BOOL CDitGlassRawMessengerDlg::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult) { - // TODO: 占쏙옙占썩에 특占쏙옙화占쏙옙 占쌘드를 占쌩곤옙 占쏙옙/占실댐옙 占썩본 클占쏙옙占쏙옙占쏙옙 호占쏙옙占쌌니댐옙. + // TODO: 여기에 특수화된 코드를 추가 및/또는 기본 클래스를 호출합니다. if (m_gridCellInfo.GetSafeHwnd() && wParam == (WPARAM)m_gridCellInfo.GetDlgCtrlID()) { *pResult = 1; @@ -1264,7 +1280,7 @@ CString str; strItem = _T(" "); - // Panel x占쏙옙, y占쏙옙占쏙옙 占쌜라스울옙 占쌥댐옙 [6/9/2017 bhs] + // Panel x축, y축은 글라스와 반대 [6/9/2017 bhs] if(1)//g_pBasic->GetScanCoordination() == SC_XCoord) str.Format("% 5.3f", (double)pDefect->m_nUMCellX / 1000.0); else @@ -1287,7 +1303,7 @@ CString str; strItem = _T(" "); - // Panel x占쏙옙, y占쏙옙占쏙옙 占쌜라스울옙 占쌥댐옙 [6/9/2017 bhs] + // Panel x축, y축은 글라스와 반대 [6/9/2017 bhs] if(1)//g_pBasic->GetScanCoordination() == SC_XCoord) str.Format("% 5.3f", (double)pDefect->m_nUMCellY / 1000.0); else @@ -1345,6 +1361,10 @@ akFileDB.setItem("Stack_Use", m_ConfigOption.m_bUseStack); akFileDB.setItem("Stack_LocalPath", m_ConfigOption.m_strStackLocalPath); + /*< KJG 20211024 - #3487 ADD Start >*/ + akFileDB.setItem("RawMerge_Use", m_ConfigOption.m_bUseRawMerge); + akFileDB.setItem("RawMerge_LocalPath", m_ConfigOption.m_strRawMergeLocalPath); + /*< KJG 20211024 - #3487 ADD End >*/ akFileDB.setItem("Stack_EquipID", m_ConfigOption.m_strStackEquipID); akFileDB.setItem("Stack_Param1",m_ConfigOption.m_strStackParam1); akFileDB.setItem("Stack_Param2",m_ConfigOption.m_strStackParam2); @@ -1439,7 +1459,7 @@ void CDitGlassRawMessengerDlg::OnBnClickedBtnImportRaw() { - AKLOG("占싱깍옙占쏙옙占� 占쏙옙占쏙옙占쏙옙 占십요가 占쌍겠놂옙.. 占쏙옙占쏙옙占쏙옙..."); + AKLOG("이기능은 가급적 필요가 있겠나.. 싶으네..."); PostMessage(UM_GLASSRAW_CLIENTMESSAGE); } @@ -1524,6 +1544,10 @@ { m_ConfigOption.m_bUseStack = ((CButton*)GetDlgItem(IDC_CHECK_STACKFILEREAD))->GetCheck(); GetDlgItemText(IDC_EDIT_STACK_LOCALSAVEPATH,m_ConfigOption.m_strStackLocalPath, 256); + /*< KJG 20211024 - #3487 ADD Start >*/ + m_ConfigOption.m_bUseRawMerge = ((CButton*)GetDlgItem(IDC_CHECK_RAWMERGEFILEREAD))->GetCheck(); + GetDlgItemText(IDC_EDIT_RAWMERGE_LOCALSAVEPATH, m_ConfigOption.m_strRawMergeLocalPath, 256); + /*< KJG 20211024 - #3487 ADD End >*/ GetDlgItemText(IDC_EDIT_STACK_EQUIPID,m_ConfigOption.m_strStackEquipID, 32); GetDlgItemText(IDC_EDIT_STACK_PARAM1,m_ConfigOption.m_strStackParam1, 32); GetDlgItemText(IDC_EDIT_STACK_PARAM2,m_ConfigOption.m_strStackParam2, 32); @@ -1574,13 +1598,13 @@ - CString str = _T("All(*.*)|*.*|"); // 占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙 + CString str = _T("All(*.*)|*.*|"); // 선택할 파일 종류 CString File; CString strFileList; CFileDialog dlg(TRUE, NULL, NULL, OFN_ALLOWMULTISELECT, str, this); - const int c_cMaxFiles = 400 /*占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙*/ ; // 占쌨몌옙 占쏙옙占쏙옙占쏙옙占쏙옙占쏙옙占쏙옙 확占쏙옙 占쏙옙占쏙옙占쌍몌옙 占쏘개 占쏙옙占쏙옙 + const int c_cMaxFiles = 400 /*선택할 파일 숫자*/ ; // 메모리 부족현상으로 확장 안해주면 몇개 못씀 const int c_cbBuffSize = (c_cMaxFiles * (MAX_PATH + 1)) + 1; dlg.GetOFN().lpstrFile = strFileList.GetBuffer(c_cbBuffSize); dlg.GetOFN().nMaxFile = c_cbBuffSize; @@ -1591,7 +1615,7 @@ { for(POSITION pos=dlg.GetStartPosition(); pos != NULL;) { - // 占쏙옙체占쏙옙占쏙옙占쏙옙 ResetContent + // 전체삭제는 ResetContent File = dlg.GetNextPathName(pos); @@ -1605,3 +1629,51 @@ } + +/* <LJC 20211122 : #3820 ADD Start> */ +BOOL CDitGlassRawMessengerDlg::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct) +{ + // TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다. + CDitGlassRawServer* pServer = (CDitGlassRawServer*)&m_Server; + CgrmGlassRawData* pRawDataBuffer = &m_GlassRawDataBuffer; + pRawDataBuffer->ImportGlassRaw(pServer->GetGlassRawInfo(), (char*)pServer->GetGlassData(), true); + CFTPCopyDataParam* FTPCopyDataParam = ((CFTPCopyDataParam*)pCopyDataStruct->lpData); + switch (pCopyDataStruct->dwData) + { + case COPYDATA_RAW_DOWNLOAD_ACK: + { + if (FTPCopyDataParam->m_nProcessType == CFTPCopyDataParam::FTPProcessType_DownFile && pServer->GetGlassRawInfo()->m_ServerProcStep == APS_GlassLoading && m_pGlassRawMaker->GetEnableFtpAck() == TRUE) + { + if (FTPCopyDataParam->m_nSendResultCode == TRUE) + { + m_pGlassRawMaker->SetEnableFtpAck(FALSE); + m_pGlassRawMaker->SearchFIle(pRawDataBuffer); + break; + } + else + { + m_nMaxMergeList++; + m_pGlassRawMaker->DownLoadMergeFile(pRawDataBuffer); + if (m_nMaxMergeList > 10) + { + m_nMaxMergeList = 0; + break; + } + + } + } + else + { + break; + } + + } + break; + + default: + break; + } + + return CDialog::OnCopyData(pWnd, pCopyDataStruct); +} +/* <LJC 20211122 : #3820 ADD End> */ \ No newline at end of file -- Gitblit v1.9.3