.gitignore
@@ -29,10 +29,6 @@ DitGlassRawMessenger/lib/ DitGlassRawMessenger/Backup/ ReviewHistory/.vs/ ReviewHistory/bin/ ReviewHistory/lib/ *.sdf *.opensdf *.suo 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,7 +127,7 @@ 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"); } @@ -192,16 +192,16 @@ if (timestruct.tm_mon>11 || timestruct.tm_mon<0 ) ASSERT(FALSE); } // CDitGlassRawMessengerDlg �޽��� �� // CDitGlassRawMessengerDlg ë©ìì§ ì²ë¦¬ê¸° BOOL CDitGlassRawMessengerDlg::OnInitDialog() { CDialog::OnInitDialog(); DragAcceptFiles(TRUE); // �ý��� �޴��� "����..." �޴� �׸��� �߰��մϴ�. // ìì¤í ë©ë´ì "ì ë³´..." ë©ë´ í목ì ì¶ê°í©ëë¤. // IDM_ABOUTBOX�� �ý��� ��� ������ �־�� �մϴ�. // IDM_ABOUTBOXë ìì¤í ëª ë ¹ ë²ìì ìì´ì¼ í©ëë¤. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); @@ -219,16 +219,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 +237,7 @@ SetDlgItemText(IDC_BUILDDATE, strBuild); } //�������� ���� �о� ���� [������ 2018/11/20] //ì¤ì íì¼ ì ë³´ ì½ì´ ì¤ê¸° [ê¹íí 2018/11/20] { m_strConfigFile; { @@ -268,7 +268,7 @@ SetDlgItemText(IDC_EDIT_STACK_PARAM2, m_ConfigOption.m_strStackParam2); } //�α� ���� [������ 2018/11/20] //ë¡ê·¸ ê´ë ¨ [ê¹íí 2018/11/20] { CakFileUtil fileutil; char strPath[256]; @@ -371,30 +371,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 +403,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,7 +433,7 @@ GetCursorPos(&pos); { HMENU hMenu = CreatePopupMenu(); AppendMenu(hMenu, MF_STRING, 0, "������2��Ʈ��ǰ"); 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 +461,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 +481,7 @@ int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // �������� �׸��ϴ�. // ìì´ì½ì 그립ëë¤. dc.DrawIcon(x, y, m_hIcon); } else @@ -490,8 +490,8 @@ } } // ����ڰ� �ּ�È�� � ��� ���ȿ� Ŀ���� ǥ�õǵ��� �ý��ۿ��� // �� �Լ��� ȣ���մϴ�. // ì¬ì©ìê° ìµìíë ì°½ì ëë ëìì 커ìê° íìëëë¡ ìì¤í ìì // ì´ í¨ì를 í¸ì¶í©ëë¤. HCURSOR CDitGlassRawMessengerDlg::OnQueryDragIcon() { return static_cast<HCURSOR>(m_hIcon); @@ -501,15 +501,15 @@ void CDitGlassRawMessengerDlg::OnDropFiles(HDROP hDropInfo) { int nFiles; char szPathName[MAX_PATH]; // ���� ���� ����. 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); @@ -601,18 +601,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 +658,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 +677,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); @@ -707,12 +707,6 @@ nResult = m_pGlassRawMaker->ReadBinFile(pRawDataBuffer); break; } case grcReviewWriteBIn: { nResult = m_pGlassRawMaker->ReviewWriteBin(pRawDataBuffer); break; } } PostMessage(UM_GLASSRAW_CLIENTMESSAGE, nCmd); @@ -777,14 +771,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 +936,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 +1258,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 +1281,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 @@ -1439,7 +1433,7 @@ void CDitGlassRawMessengerDlg::OnBnClickedBtnImportRaw() { AKLOG("�̱���� ������ �ʿ䰡 �ְڳ�.. ������..."); AKLOG("ì´ê¸°ë¥ì ê°ê¸ì íìê° ìê² ë.. ì¶ì¼ë¤..."); PostMessage(UM_GLASSRAW_CLIENTMESSAGE); } @@ -1574,13 +1568,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 +1585,7 @@ { for(POSITION pos=dlg.GetStartPosition(); pos != NULL;) { // ��ü������ ResetContent // ì ì²´ìì ë ResetContent File = dlg.GetNextPathName(pos); DitGlassRawMessenger/DitGlassRawMessenger/GlassRawBase.cpp
@@ -98,34 +98,3 @@ return TRUE; } BOOL CGlassRawBase::ReviewWriteBin(CgrmGlassRawData* pData) { CString strFileName; strFileName.Format("D:\\DIT_ResultData\\RawBin\\%s", pData->GetGlassData()->m_strFileName); FILE* pf = fopen(strFileName.GetBuffer(0), "wb"); if (pf) { fwrite(pData->GetMemInfo(), sizeof(_grmDitMemInfo), 1, pf); fwrite(pData->GetGlassData(), pData->GetMemInfo()->m_nSizeOfGlassData, sizeof(char), pf); for (int i = 0; i < pData->GetGlassData()->m_nCellNum; i++) { fwrite(pData->GetCellData(i), pData->GetMemInfo()->m_nSizeOfCellData, sizeof(char), pf); } for (int i = 0; i < pData->GetGlassData()->m_nDefectNum; i++) { fwrite(pData->GetDefectData(i), pData->GetMemInfo()->m_nSizeOfDefectData, sizeof(char), pf); } fclose(pf); } else { return FALSE; } return TRUE; } DitGlassRawMessenger/DitGlassRawMessenger/GlassRawBase.h
@@ -3,13 +3,13 @@ #include "DitGlassRawStruct.h" ////////////////////////////////////////////////////////////////////////// // Recipe���� Server�� Inspector�� �����ϴ� ��������. // Recipeìì Serverì Inspectorê° ê³µì íë ì¤ì ì ë³´. enum ThreadCount { Thread_1 = 0, Thread_2, Thread_4, Thread_6, Thread_8, Thread_11, Thread_12, Thread_22, Thread_24 }; enum CameraType { CamType_Unknown = 0, CamType_Transfer, CamType_Reflex }; enum ScanCoordinate { SC_XCoord = 0, SC_YCoord }; // ��ĵ����. ���� ��ǥ ����� �߿�. enum ScanDirectionEng { SD_Right2Left = 0, SD_Left2Right }; // �۾��ڰ� �� ��ĵ ����. enum ScanDirectionIns { SD_Forward = 0, SD_Backward, SD_Unknown }; // Glass ���� Scan ����. enum ScanType { ST_SingleScan = 0, ST_DualScan }; // SingleScan - �ܹ���, DualScan - ����� enum ScanCoordinate { SC_XCoord = 0, SC_YCoord }; // ì¤ìºë°©í¥. ê²°í¨ ì¢í ì°ì°ì ì¤ì. enum ScanDirectionEng { SD_Right2Left = 0, SD_Left2Right }; // ìì ìê° ë³¸ ì¤ìº ë°©í¥. enum ScanDirectionIns { SD_Forward = 0, SD_Backward, SD_Unknown }; // Glass ê¸°ì¤ Scan ë°©í¥. enum ScanType { ST_SingleScan = 0, ST_DualScan }; // SingleScan - ë¨ë°©í¥, DualScan - ìë°©í¥ enum GlassDirection { GD_LeftTop = 0, GD_RightTop = 1, GD_LeftBottom = 10, GD_RightBottom = 11 }; enum AcqMode { Acq_Unknown = 0, Acq_Grab, Acq_Snap, Acq_Matrox, Acq_Simul }; enum FindBoundary { FB_NotFind = 0, FB_PitchMatching, FB_ManualMatching }; @@ -20,7 +20,7 @@ enum DefectFiltering { Filtering_NO = 0, Filtering_CO, Filtering_Cutoff, Filtering_DXDY, Filtering_TD, Filtering_FALSE }; // Filtering_CO : Cosmic Ray FALSE enum ALIGN_MARK_CLASSIFY { eAMC_First = 0, eAMC_Second }; ////////////////////////////////////////////////////////////////////////// // Defect�� ���Ǵ� Ÿ�Ե�. // Defectì ì¬ì©ëë íì ë¤. enum SERVER_DefectType { DefectType_TBlack = 0, DefectType_TWhite, DefectType_RBlack, DefectType_RWhite, DefectType_BBlack, DefectType_BWhite, DefectType_Unknown }; enum SERVER_DefectSizeType { SizeType_Unknown = 0, SizeType_Small, SizeType_Mid, SizeType_Large, SizeType_Huge, SizeType_Ultra }; enum SERVER_DefectJudgementType { JudgementType_OK = 0, JudgementType_TR, JudgementType_PR, JudgementType_UNKNOWN }; @@ -34,7 +34,7 @@ enum ReKind { Re_Other, Re_TFE_CIRCLE, Re_PI_CONVEX, Re_PI_CONCAVE, Re_PI_1, Re_PI_2, Re_PI_3 }; //choigudal jude fix 2012.03.07 enum Judgement { Judge_OK = 0, Judge_RP, Judge_NG, Judge_TR, Judge_PR, Judge_PT, Judge_Review, Judge_RC, Judge_Size, Judge_VI, Judge_Rework, Judge_Unknown };//2016.07.13 LHS Judge_Size �߰� enum Judgement { Judge_OK = 0, Judge_RP, Judge_NG, Judge_TR, Judge_PR, Judge_PT, Judge_Review, Judge_RC, Judge_Size, Judge_VI, Judge_Rework, Judge_Unknown };//2016.07.13 LHS Judge_Size ì¶ê° enum MAP16_DefectClass { CLASS_C1 = 1, CLASS_C2, CLASS_C3, CLASS_C4, CLASS_C5, CLASS_C6, CLASS_C7, CLASS_C8, CLASS_C9, CLASS_C10, CLASS_C11, CLASS_C12, CLASS_C13, CLASS_C14, CLASS_C15, CLASS_C16 }; enum MAP16_SizeType { SIZE_SS = 0, SIZE_SM, SIZE_SL, SIZE_SOH, SIZE_IDX_MAX }; enum MAP16_PeakType { PEEK_PS = 0, PEEK_PL, PEEK_PH, PEEK_POH, PEAK_IDX_MAX }; @@ -60,8 +60,6 @@ virtual BOOL WriteBinFile(CgrmGlassRawData* pData); virtual BOOL ReadBinFile(CgrmGlassRawData* pData); virtual BOOL ReviewWriteBin(CgrmGlassRawData* pData); virtual BOOL WriteAOIFile(CgrmGlassRawData* pData){return TRUE;}; virtual BOOL ReadAOIFile(CgrmGlassRawData* pData){return TRUE;}; DitGlassRawMessenger/DitGlassRawMessenger/GlassRawCPJT.cpp
@@ -437,11 +437,11 @@ strValue = "ITEM PANEL MODULETYPE MODULEID PROCESSID PRODUCTID STEPID PROD_TYPE BATCHID H_PANELID E_PANELID P_PANELID OPERID COMP_COUNT PPID GRADE CODE R_GRADE MAP_IMAGE L_TIME U_TIME S_TIME E_TIME T_DEFECT TR PR TB TW RB RW T_STACK MAX_AVG_GRAY MAX_PORTION OK_CELL RJ_CELL RW_CELL NR_CELL CSTID SLOT_NO JOB_END TD_DEFECT SD_DEFECT PD_DEFECT SP_DEFECT PAD_GATE PAD_DATA M_DEFECT C_DEFECT BR_DEFECT IMG_COUNT RECIPE SHRINK RAW_CUT"; //53ea strLine += strValue; strLine += "\n"; strValue = "ITEM SUBPANEL SUBPANELID COORD_X COORD_Y SIZE_X SIZE_Y GATELINE DATALINE GRADE CODE R_GRADE T_DEFECT TD_DEFECT SD_DEFECT PD_DEFECT SP_DEFECT PAD_GATE PAD_DATA M_DEFECT C_DEFECT PRO_IMAGE AVG_GRAY_0 PORTION_0 CORNER_GRAY_0 AVG_AMP_0 FFT_VAR_0 FFT_VAH_0 FFT_VAQ_0 FFT_PK_0 AVG_GRAY_1 PORTION_1 CORNER_GRAY_1 AVG_AMP_1 FFT_VAR_1 FFT_VAH_1 FFT_VAQ_1 FFT_PK_1 AVG_GRAY_2 PORTION_2 CORNER_GRAY_2 AVG_AMP_2 FFT_VAR_2 FFT_VAH_2 FFT_VAQ_2 FFT_PK_2 AVG_GRAY_3 PORTION_3 CORNER_GRAY_3 AVG_AMP_3 FFT_VAR_3 FFT_VAH_3 FFT_VAQ_3 FFT_PK_3"; //54ea 21-06-21 Mura Data ì¶ê° strValue = "ITEM SUBPANEL SUBPANELID COORD_X COORD_Y SIZE_X SIZE_Y GATELINE DATALINE GRADE CODE R_GRADE T_DEFECT TD_DEFECT SD_DEFECT PD_DEFECT SP_DEFECT PAD_GATE PAD_DATA M_DEFECT C_DEFECT PRO_IMAGE AVG_GRAY_0 PORTION_0 AVG_GRAY_1 PORTION_1 AVG_GRAY_2 PORTION_2 AVG_GRAY_3 PORTION_3"; //30ea 21-05-12 Mura Data ì¶ê° strLine += strValue; strLine += "\n"; //210405 //ITEM DEFECT ID DEF_NO COORD_X COORD_Y GATELINE DATALINE SIZE_S SIZE_W SIZE_L SIZE_H GRADE CODE STACK_FLAG STACK_COUNT STACK_STEP IMAGE_FILE DSC_CODE VC_CODE DCR_CODE DEFECT_SIZE REPEAT_DEFECT WSI_HEIGHT CS_HEIGHT C_GRADE GRAY_MIN GRAY_MAX GRAY_AVG GRAY_DEF WSI_IMAGE USE_CCDIMAGE SCAN_NUM CAM_POSITION CCD_NO R_GRAY_MIN R_GRAY_MAX R_GRAY_AVG SCAN_AI REVIEW_AI INS_MODE INS_CHANNEL COMPACTNESS THICKNESS MAJOR MINOR WSI_TYPE DEFECT_TYPE SHRINK strValue = "ITEM DEFECT ID DEF_NO COORD_X COORD_Y GATELINE DATALINE SIZE_S SIZE_W SIZE_L SIZE_H GRADE CODE STACK_FLAG STACK_COUNT STACK_STEP IMAGE_FILE DSC_CODE VC_CODE DCR_CODE DEFECT_SIZE REPEAT_DEFECT WSI_HEIGHT CS_HEIGHT C_GRADE GRAY_MIN GRAY_MAX GRAY_AVG GRAY_DEF WSI_IMAGE USE_CCDIMAGE SCAN_NUM CAM_POSITION CCD_NO R_GRAY_MIN R_GRAY_MAX R_GRAY_AVG R_HEIGHT G_HEIGHT B_HEIGHT INS_CHANNEL COMPACTNESS THICKNESS MAJOR MINOR WSI_TYPE DEFECT_TYPE SHRINK CLASS_CODE"; //50ea strValue = "ITEM DEFECT ID DEF_NO COORD_X COORD_Y GATELINE DATALINE SIZE_S SIZE_W SIZE_L SIZE_H GRADE CODE STACK_FLAG STACK_COUNT STACK_STEP IMAGE_FILE DSC_CODE VC_CODE DCR_CODE DEFECT_SIZE REPEAT_DEFECT WSI_HEIGHT CS_HEIGHT C_GRADE GRAY_MIN GRAY_MAX GRAY_AVG GRAY_DEF WSI_IMAGE USE_CCDIMAGE SCAN_NUM CAM_POSITION CCD_NO R_GRAY_MIN R_GRAY_MAX R_GRAY_AVG R_HEIGHT G_HEIGHT B_HEIGHT INS_CHANNEL COMPACTNESS THICKNESS MAJOR MINOR WSI_TYPE DEFECT_TYPE SHRINK"; //49ea strLine += strValue; } @@ -931,69 +931,8 @@ { SPRINTRAW(12, "*"); } //kyh 0622 // 25 12 CORNER_GRAY_0 if (strlen(pCellData->m_strCorner_Gray_0)) { SPRINTRAW(12, "%s", pCellData->m_strCorner_Gray_0); } else { SPRINTRAW(12, "*"); } // 26 12 AVG_AMP_0 if (strlen(pCellData->m_strAvgAmp_0)) { SPRINTRAW(12, "%s", pCellData->m_strAvgAmp_0); } else { SPRINTRAW(12, "*"); } // 27 12 FFT_VAR_0 if (strlen(pCellData->m_strFFTVar_0)) { SPRINTRAW(12, "%s", pCellData->m_strFFTVar_0); } else { SPRINTRAW(12, "*"); } // 28 12 FFT_VAH_0 if (strlen(pCellData->m_strFFTVah_0)) { SPRINTRAW(12, "%s", pCellData->m_strFFTVah_0); } else { SPRINTRAW(12, "*"); } // 29 12 FFT_VAQ_0 if (strlen(pCellData->m_strFFTVaq_0)) { SPRINTRAW(12, "%s", pCellData->m_strFFTVaq_0); } else { SPRINTRAW(12, "*"); } // 30 12 FFT_PK_0 if (strlen(pCellData->m_strFFTPK_0)) { SPRINTRAW(12, "%s", pCellData->m_strFFTPK_0); } else { SPRINTRAW(12, "*"); } // 31 12 AVG_GRAY_1 // 25 12 AVG_GRAY_1 if (strlen(pCellData->m_strAvgGray_1)) { SPRINTRAW(12, "%s", pCellData->m_strAvgGray_1); @@ -1002,7 +941,7 @@ { SPRINTRAW(12, "*"); } // 32 12 PORTION_1 // 26 12 PORTION_1 if (strlen(pCellData->m_strPortion_1)) { SPRINTRAW(12, "%s", pCellData->m_strPortion_1); @@ -1011,69 +950,7 @@ { SPRINTRAW(12, "*"); } //kyh 0622 // 33 12 CORNER_GRAY_1 if (strlen(pCellData->m_strCorner_Gray_1)) { SPRINTRAW(12, "%s", pCellData->m_strCorner_Gray_1); } else { SPRINTRAW(12, "*"); } // 34 12 AVG_AMP_1 if (strlen(pCellData->m_strAvgAmp_1)) { SPRINTRAW(12, "%s", pCellData->m_strAvgAmp_1); } else { SPRINTRAW(12, "*"); } // 35 12 FFT_VAR_1 if (strlen(pCellData->m_strFFTVar_1)) { SPRINTRAW(12, "%s", pCellData->m_strFFTVar_1); } else { SPRINTRAW(12, "*"); } // 36 12 FFT_VAH_1 if (strlen(pCellData->m_strFFTVah_1)) { SPRINTRAW(12, "%s", pCellData->m_strFFTVah_1); } else { SPRINTRAW(12, "*"); } // 37 12 FFT_VAQ_1 if (strlen(pCellData->m_strFFTVaq_1)) { SPRINTRAW(12, "%s", pCellData->m_strFFTVaq_1); } else { SPRINTRAW(12, "*"); } // 38 12 FFT_PK_1 if (strlen(pCellData->m_strFFTPK_1)) { SPRINTRAW(12, "%s", pCellData->m_strFFTPK_1); } else { SPRINTRAW(12, "*"); } // 39 12 AVG_GRAY_2 // 27 12 AVG_GRAY_2 if (strlen(pCellData->m_strAvgGray_2)) { SPRINTRAW(12, "%s", pCellData->m_strAvgGray_2); @@ -1082,7 +959,7 @@ { SPRINTRAW(12, "*"); } // 40 12 PORTION_2 // 28 12 PORTION_2 if (strlen(pCellData->m_strPortion_2)) { SPRINTRAW(12, "%s", pCellData->m_strPortion_2); @@ -1091,69 +968,7 @@ { SPRINTRAW(12, "*"); } //kyh 0622 // 41 12 CORNER_GRAY_2 if (strlen(pCellData->m_strCorner_Gray_2)) { SPRINTRAW(12, "%s", pCellData->m_strCorner_Gray_2); } else { SPRINTRAW(12, "*"); } // 42 12 AVG_AMP_2 if (strlen(pCellData->m_strAvgAmp_2)) { SPRINTRAW(12, "%s", pCellData->m_strAvgAmp_2); } else { SPRINTRAW(12, "*"); } // 43 12 FFT_VAR_2 if (strlen(pCellData->m_strFFTVar_2)) { SPRINTRAW(12, "%s", pCellData->m_strFFTVar_2); } else { SPRINTRAW(12, "*"); } // 44 12 FFT_VAH_2 if (strlen(pCellData->m_strFFTVah_2)) { SPRINTRAW(12, "%s", pCellData->m_strFFTVah_2); } else { SPRINTRAW(12, "*"); } // 45 12 FFT_VAQ_2 if (strlen(pCellData->m_strFFTVaq_2)) { SPRINTRAW(12, "%s", pCellData->m_strFFTVaq_2); } else { SPRINTRAW(12, "*"); } // 46 12 FFT_PK_2 if (strlen(pCellData->m_strFFTPK_2)) { SPRINTRAW(12, "%s", pCellData->m_strFFTPK_2); } else { SPRINTRAW(12, "*"); } // 47 12 AVG_GRAY_3 // 29 12 AVG_GRAY_3 if (strlen(pCellData->m_strAvgGray_3)) { SPRINTRAW(12, "%s", pCellData->m_strAvgGray_3); @@ -1162,71 +977,10 @@ { SPRINTRAW(12, "*"); } // 48 12 PORTION_3 // 30 12 PORTION_3 if (strlen(pCellData->m_strPortion_3)) { SPRINTRAW(12, "%s", pCellData->m_strPortion_3); } else { SPRINTRAW(12, "*"); } //kyh 0622 // 49 12 CORNER_GRAY_3 if (strlen(pCellData->m_strCorner_Gray_3)) { SPRINTRAW(12, "%s", pCellData->m_strCorner_Gray_3); } else { SPRINTRAW(12, "*"); } // 50 12 AVG_AMP_3 if (strlen(pCellData->m_strAvgAmp_3)) { SPRINTRAW(12, "%s", pCellData->m_strAvgAmp_3); } else { SPRINTRAW(12, "*"); } // 51 12 FFT_VAR_3 if (strlen(pCellData->m_strFFTVar_3)) { SPRINTRAW(12, "%s", pCellData->m_strFFTVar_3); } else { SPRINTRAW(12, "*"); } // 52 12 FFT_VAH_3 if (strlen(pCellData->m_strFFTVah_3)) { SPRINTRAW(12, "%s", pCellData->m_strFFTVah_3); } else { SPRINTRAW(12, "*"); } // 53 12 FFT_VAQ_3 if (strlen(pCellData->m_strFFTVaq_3)) { SPRINTRAW(12, "%s", pCellData->m_strFFTVaq_3); } else { SPRINTRAW(12, "*"); } // 54 12 FFT_PK_3 if (strlen(pCellData->m_strFFTPK_3)) { SPRINTRAW(12, "%s", pCellData->m_strFFTPK_3); } else { @@ -1416,7 +1170,6 @@ nValue = nValue << 1; } SPRINTRAW(12, "%04X", nValue); // 22 12 DEFECT_SIZE // Common 04 ë¶ë í¬ê¸° (L,H,M,S) if (pDefectData->m_DefectSizeType == SizeType_Small) { @@ -1636,17 +1389,6 @@ // 49 12 Frame Shrink ì ë³´ ì¶ê° SPRINTRAW(12, "%d", pDefectData->m_bShrinked); // 50 12 CLASS_NO // Zone Classification NO // Zone Data nValue = 0; for (int i = 15; i >= 0; i--) { if (pDefectData->m_sZoneClassPixelCount[i] > 0) nValue += 1; if (i > 0) nValue = nValue << 1; } SPRINTRAW(12, "%04X", nValue); SPRINTRAWEND; //ì¤ì!!! ì ¤ ë§ì§ë§ì ê¼ ìì´ì¼í¨!!!(ìì ê¸ì§) [ê¹íí2020/9/23] DitGlassRawMessenger/DitGlassRawMessenger/MacroResultFile.cpp
@@ -254,47 +254,16 @@ if (strlen(buffer) <= 0) continue; paser.process(buffer, " "); int nTokNum = paser.getTokNum(); if (nTokNum < 52) continue; //kyh 31->52 if (nTokNum < 31) continue; MacroSubPanel.PRO_IMAGE = paser.getTokStr(20); MacroSubPanel.AVG_GRAY_0 = paser.getTokStr(21); MacroSubPanel.PORTION_0 = paser.getTokStr(22); //kyh ì¶ê° MacroSubPanel.CORNER_GRAY_0 = paser.getTokStr(23); MacroSubPanel.AVG_AMP_0 = paser.getTokStr(24); MacroSubPanel.FFT_VAR_0 = paser.getTokStr(25); MacroSubPanel.FFT_VAH_0 = paser.getTokStr(26); MacroSubPanel.FFT_VAQ_0 = paser.getTokStr(27); MacroSubPanel.FFT_PK_0 = paser.getTokStr(28); MacroSubPanel.AVG_GRAY_1 = paser.getTokStr(29); MacroSubPanel.PORTION_1 = paser.getTokStr(30); //kyh ì¶ê° MacroSubPanel.CORNER_GRAY_1 = paser.getTokStr(31); MacroSubPanel.AVG_AMP_1 = paser.getTokStr(32); MacroSubPanel.FFT_VAR_1 = paser.getTokStr(33); MacroSubPanel.FFT_VAH_1 = paser.getTokStr(34); MacroSubPanel.FFT_VAQ_1 = paser.getTokStr(35); MacroSubPanel.FFT_PK_1 = paser.getTokStr(36); MacroSubPanel.AVG_GRAY_2 = paser.getTokStr(37); MacroSubPanel.PORTION_2 = paser.getTokStr(38); //kyh ì¶ê° MacroSubPanel.CORNER_GRAY_2 = paser.getTokStr(39); MacroSubPanel.AVG_AMP_2 = paser.getTokStr(40); MacroSubPanel.FFT_VAR_2 = paser.getTokStr(41); MacroSubPanel.FFT_VAH_2 = paser.getTokStr(42); MacroSubPanel.FFT_VAQ_2 = paser.getTokStr(43); MacroSubPanel.FFT_PK_2 = paser.getTokStr(44); MacroSubPanel.AVG_GRAY_3 = paser.getTokStr(45); MacroSubPanel.PORTION_3 = paser.getTokStr(46); //kyh ì¶ê° MacroSubPanel.CORNER_GRAY_3 = paser.getTokStr(47); MacroSubPanel.AVG_AMP_3 = paser.getTokStr(48); MacroSubPanel.FFT_VAR_3 = paser.getTokStr(49); MacroSubPanel.FFT_VAH_3 = paser.getTokStr(50); MacroSubPanel.FFT_VAQ_3 = paser.getTokStr(51); MacroSubPanel.FFT_PK_3 = paser.getTokStr(52); MacroSubPanel.AVG_GRAY_1 = paser.getTokStr(24); MacroSubPanel.PORTION_1 = paser.getTokStr(25); MacroSubPanel.AVG_GRAY_2 = paser.getTokStr(27); MacroSubPanel.PORTION_2 = paser.getTokStr(28); MacroSubPanel.AVG_GRAY_3 = paser.getTokStr(30); MacroSubPanel.PORTION_3 = paser.getTokStr(31); vecMacroSubPanel.push_back(MacroSubPanel); } @@ -311,43 +280,12 @@ strcpy(pGrmMura->m_strProImage, m_vecMacroSubPanel[i].PRO_IMAGE.GetBuffer(0)); strcpy(pGrmMura->m_strAvgGray_0, m_vecMacroSubPanel[i].AVG_GRAY_0.GetBuffer(0)); strcpy(pGrmMura->m_strPortion_0, m_vecMacroSubPanel[i].PORTION_0.GetBuffer(0)); //kyh 0622 strcpy(pGrmMura->m_strCorner_Gray_0, m_vecMacroSubPanel[i].CORNER_GRAY_0.GetBuffer(0)); strcpy(pGrmMura->m_strAvgAmp_0, m_vecMacroSubPanel[i].AVG_AMP_0.GetBuffer(0)); strcpy(pGrmMura->m_strFFTVar_0, m_vecMacroSubPanel[i].FFT_VAR_0.GetBuffer(0)); strcpy(pGrmMura->m_strFFTVah_0, m_vecMacroSubPanel[i].FFT_VAH_0.GetBuffer(0)); strcpy(pGrmMura->m_strFFTVaq_0, m_vecMacroSubPanel[i].FFT_VAQ_0.GetBuffer(0)); strcpy(pGrmMura->m_strFFTPK_0, m_vecMacroSubPanel[i].FFT_PK_0.GetBuffer(0)); strcpy(pGrmMura->m_strAvgGray_1, m_vecMacroSubPanel[i].AVG_GRAY_1.GetBuffer(0)); strcpy(pGrmMura->m_strPortion_1, m_vecMacroSubPanel[i].PORTION_1.GetBuffer(0)); //kyh 0622 strcpy(pGrmMura->m_strCorner_Gray_1, m_vecMacroSubPanel[i].CORNER_GRAY_1.GetBuffer(0)); strcpy(pGrmMura->m_strAvgAmp_1, m_vecMacroSubPanel[i].AVG_AMP_1.GetBuffer(0)); strcpy(pGrmMura->m_strFFTVar_1, m_vecMacroSubPanel[i].FFT_VAR_1.GetBuffer(0)); strcpy(pGrmMura->m_strFFTVah_1, m_vecMacroSubPanel[i].FFT_VAH_1.GetBuffer(0)); strcpy(pGrmMura->m_strFFTVaq_1, m_vecMacroSubPanel[i].FFT_VAQ_1.GetBuffer(0)); strcpy(pGrmMura->m_strFFTPK_1, m_vecMacroSubPanel[i].FFT_PK_1.GetBuffer(0)); strcpy(pGrmMura->m_strAvgGray_2, m_vecMacroSubPanel[i].AVG_GRAY_2.GetBuffer(0)); strcpy(pGrmMura->m_strPortion_2, m_vecMacroSubPanel[i].PORTION_2.GetBuffer(0)); //kyh 0622 strcpy(pGrmMura->m_strCorner_Gray_2, m_vecMacroSubPanel[i].CORNER_GRAY_2.GetBuffer(0)); strcpy(pGrmMura->m_strAvgAmp_2, m_vecMacroSubPanel[i].AVG_AMP_2.GetBuffer(0)); strcpy(pGrmMura->m_strFFTVar_2, m_vecMacroSubPanel[i].FFT_VAR_2.GetBuffer(0)); strcpy(pGrmMura->m_strFFTVah_2, m_vecMacroSubPanel[i].FFT_VAH_2.GetBuffer(0)); strcpy(pGrmMura->m_strFFTVaq_2, m_vecMacroSubPanel[i].FFT_VAQ_2.GetBuffer(0)); strcpy(pGrmMura->m_strFFTPK_2, m_vecMacroSubPanel[i].FFT_PK_2.GetBuffer(0)); strcpy(pGrmMura->m_strAvgGray_3, m_vecMacroSubPanel[i].AVG_GRAY_3.GetBuffer(0)); strcpy(pGrmMura->m_strPortion_3, m_vecMacroSubPanel[i].PORTION_3.GetBuffer(0)); //kyh 0622 strcpy(pGrmMura->m_strCorner_Gray_3, m_vecMacroSubPanel[i].CORNER_GRAY_3.GetBuffer(0)); strcpy(pGrmMura->m_strAvgAmp_3, m_vecMacroSubPanel[i].AVG_AMP_3.GetBuffer(0)); strcpy(pGrmMura->m_strFFTVar_3, m_vecMacroSubPanel[i].FFT_VAR_3.GetBuffer(0)); strcpy(pGrmMura->m_strFFTVah_3, m_vecMacroSubPanel[i].FFT_VAH_3.GetBuffer(0)); strcpy(pGrmMura->m_strFFTVaq_3, m_vecMacroSubPanel[i].FFT_VAQ_3.GetBuffer(0)); strcpy(pGrmMura->m_strFFTPK_3, m_vecMacroSubPanel[i].FFT_PK_3.GetBuffer(0)); } strcpy(pShared->GetGlassData()->m_strMaxAvgGray, strMaxAvgGray.GetBuffer(0)); strcpy(pShared->GetGlassData()->m_strMaxPortion, strMaxPortion.GetBuffer(0)); DitGlassRawMessenger/DitGlassRawMessenger/MacroResultFile.h
@@ -127,36 +127,12 @@ CString PRO_IMAGE; CString AVG_GRAY_0; // 0 Scan 0 Model CString PORTION_0; CString CORNER_GRAY_0; // kyh ê²°ê³¼íì¼ í¬ë§· ìì CString AVG_AMP_0; CString FFT_VAR_0; CString FFT_VAH_0; CString FFT_VAQ_0; CString FFT_PK_0; // kyh end CString AVG_GRAY_1; // 0 Scan 1 Model CString PORTION_1; CString CORNER_GRAY_1; // kyh ê²°ê³¼íì¼ í¬ë§· ìì CString AVG_AMP_1; CString FFT_VAR_1; CString FFT_VAH_1; CString FFT_VAQ_1; CString FFT_PK_1; // kyh end CString AVG_GRAY_2; // 1 Scan 0 Model CString PORTION_2; CString CORNER_GRAY_2; // kyh ê²°ê³¼íì¼ í¬ë§· ìì CString AVG_AMP_2; CString FFT_VAR_2; CString FFT_VAH_2; CString FFT_VAQ_2; CString FFT_PK_2; // kyh end CString AVG_GRAY_3; // 1 Scan 1 Model CString PORTION_3; CString CORNER_GRAY_3; // kyh ê²°ê³¼íì¼ í¬ë§· ìì CString AVG_AMP_3; CString FFT_VAR_3; CString FFT_VAH_3; CString FFT_VAQ_3; CString FFT_PK_3; // kyh end }; class CMacroResultFile DitGlassRawMessenger/Extern/DitGlassRawClient.cpp
@@ -119,11 +119,6 @@ return SetCommand(grcReadBin); } BOOL CDitGlassRawClient::WriteReviewRawBinFile() { return SetCommand(grcReviewWriteBIn); } BOOL CDitGlassRawClient::SetCommand( emGlassRawCommand nCmd ) { if(m_pGlassRawInfo == NULL) return FALSE; @@ -132,14 +127,14 @@ int nCmdId = (m_pGlassRawInfo->m_nCommandIdxWrite+1) % COMMAND_MAXCOUNT; if(m_pGlassRawInfo->m_nCommandIdxRead == nCmdId)//���� ���ٴ°��� ��ŧ�� ���۰� �ѹ��� ���Ҵٴ°�!! [������ 2018/11/12] if(m_pGlassRawInfo->m_nCommandIdxRead == nCmdId)//ëì´ ê°ë¤ëê²ì ìíë¬ ë²í¼ê° íë°í´ ëìë¤ëê²!! [ê¹íí 2018/11/12] { m_pGlassRawInfo->m_nCommandIdxRead++;//���� ������ ��� �ϳ��� �����Ѵ�. [������ 2018/11/12] m_pGlassRawInfo->m_nCommandIdxRead++;//ê°ì¥ ì¤ëë ëª ë ¹ íë를 ìì íë¤. [ê¹íí 2018/11/12] } m_pGlassRawInfo->m_nCommandBuffer[nCmdId].nCommand = (short)nCmd; m_pGlassRawInfo->m_nCommandBuffer[nCmdId].strParam; m_pGlassRawInfo->m_nCommandBuffer[nCmdId].nResult = -1; //-1������, 0����, 1���� [������ 2018/11/13] m_pGlassRawInfo->m_nCommandBuffer[nCmdId].nResult = -1; //-1ìíì , 0ì¤í¨, 1ì±ê³µ [ê¹íí 2018/11/13] m_nLastCommandIdx = m_pGlassRawInfo->m_nCommandIdxWrite = nCmdId; @@ -200,7 +195,7 @@ void CDitGlassRawClient::RemoveReviewDefects() { int nDefectNum = m_pGlassData->m_nDefectNum; int nRightDefectNum = 0;//������ �����ʿ� ��ġ�� ���� ���� int nRightDefectNum = 0;//기ì¤ì ì¤ë¥¸ìª½ì ìì¹í ê²°í¨ ê°¯ì int nDefectDeleteNum = 0; for(int i=nDefectNum-1; i>=0; i--) { DitGlassRawMessenger/Extern/DitGlassRawClient.h
@@ -22,7 +22,7 @@ BOOL SetReviewComtomize(); void RemoveReviewDefects();//AOI���� ������ ���� ������ �����ϰ�, ���信�� ������ User Ȥ�� Reflow ������ �����Ѵ�. void RemoveReviewDefects();//AOIìì ìì±í ëí ì 보를 ì ì¸íê³ , 리뷰ìì ìì±í User í¹ì Reflow ê²°í¨ì ì ì¸íë¤. _grmDitMemInfo* GetGlassMeminfo(){return (_grmDitMemInfo*)m_pGlassRawInfo;}; _grmGlassData* GetGlassData(){return m_pGlassData;}; @@ -31,16 +31,14 @@ _grmDefectData* GetDefectData(int nIndex){return &m_pDefectData[nIndex];}; _grmDefectData* GetStackData(int nIndex) { return &m_pStackData[nIndex];}; //��� ���� ���� ���� ��� [������ 2018/11/12] //ê²°ê³¼ íì¼ ê°ì ì°ê¸° ëª ë ¹ [ê¹íí 2018/11/12] BOOL WriteAOIRawFile(); //������� ���� ���̳ʸ� ���·� ���� [������ 2018/11/12] //ê²°ê³¼íì¼ ê°ì ë°ì´ë리 ííë¡ ì°ê¸° [ê¹íí 2018/11/12] BOOL WriteAOIRawBinFile(); //������� ���� ���̳ʸ� �б� //ê²°ê³¼íì¼ ê°ì ë°ì´ë리 ì½ê¸° BOOL ReadAOIRawBinFile(); BOOL WriteReviewRawBinFile(); protected: BOOL ConnectGlassRawInfo(); DitGlassRawMessenger/Extern/DitGlassRawStruct.h
@@ -47,7 +47,7 @@ memset(this, 0, sizeof(_grmGlassData)); } //Glass ���� //Glass ì ë³´ char m_strFileName[64]; char m_strPath[256]; @@ -56,12 +56,12 @@ int m_nOriginDirection; //{ GD_LeftTop = 0, GD_RightTop = 1, GD_LeftBottom = 10, GD_RightBottom = 11 }; int m_nConerCutDirection; int m_nScanCoordinateY; //���Ⱑ 0�̸� �Ϲ�, 1�̸� Scan������ y��(�� scan������ ����, offline ���� ����) int m_nScanCoordinateY; //ì¬ê¸°ê° 0ì´ë©´ ì¼ë°, 1ì´ë©´ Scanë°©í¥ì´ yì¶(ì¦ scanë°©í¥ì´ ë¨ì¶, offline ì¤ë¹ ê°ì) int m_nGlassSizeWidth; int m_nGlassSizeHeight; //�������� //ì¤ë¹ì ë³´ char m_strLine[32]; char m_strEquipType[32]; char m_strEquipID[32]; @@ -74,7 +74,7 @@ CTime m_tmReviewLoading; CTime m_tmReviewEnd; //�⺻ �������� //기본 물ë¥ì ë³´ char m_strGlassID[32]; //Glass ID char m_strPPID[32]; char m_strEPPID[32]; @@ -91,7 +91,7 @@ char m_strVCRGlassID[32]; //���� ���� ���� ���� //ê²°í¨ ê°¯ì ê´ë¦¬ ë³ì int m_nDefectNumSizeSmall; int m_nDefectNumSizeMid; int m_nDefectNumSizeLarge; @@ -126,14 +126,14 @@ int m_nDefectNumStackSP; //ī�޶�/��ĵ ���� [������ 2018/12/5] //ì¹´ë©ë¼/ì¤ìº ì ë³´ [ê¹íí 2018/12/5] short m_nCameraNum; short m_nScanNum; unsigned char m_nGrayLevelAvg[RAWMESSENGER_MAXCAMNUM*RAWMESSENGER_MAXSCANNUM]; unsigned char m_nGrayLevelMin[RAWMESSENGER_MAXCAMNUM*RAWMESSENGER_MAXSCANNUM]; unsigned char m_nGrayLevelMax[RAWMESSENGER_MAXCAMNUM*RAWMESSENGER_MAXSCANNUM]; //����� ���� um[������ 2018/12/10] //ì¼ë¼ì¸ ì ë³´ um[ê¹íí 2018/12/10] double m_nAlignCcdTheta; double m_nAlignCcdShitftX; double m_nAlignCcdShitftY; @@ -143,11 +143,8 @@ double m_nAlignBasicTheta; double m_nAlignBasicShitftX; double m_nAlignBasicShitftY; char m_strAlignFirst[64]; char m_strAlignSecond[64]; // char m_strAlignPath[256]; //CSOT�� ���� ���� [������ 2018/12/5] //CSOTì© ë¬¼ë¥ ì ë³´ [ê¹íí 2018/12/5] char m_strCassetteSequenceNo[16]; char m_strOwnerCode[16]; //2. OWNER_CODE char m_strOwnerType[16]; //3. OWNER_TYPE @@ -162,7 +159,7 @@ char m_strGroupID[16]; //14.GROUP_ID char m_cAutoSampleFlag; //15.AUTOSAMPLEFLAG // CPRJ�� ���� ���� // CPRJì© ë¬¼ë¥ ì ë³´ char m_strProdType[3]; char m_strBatchID[13]; char m_strPairHPanelID[13]; @@ -188,17 +185,17 @@ BYTE m_nGlassDataBitSignal[4]; bool m_bJob_end; //201217 CJH - ���� Defect Review ���� //201217 CJH - ì°ì Defect Review ê°ì int m_nReviewNum; //201221 CJH - �Ľ��� Stack ��� //201221 CJH - íì±í Stack ê²°ê³¼ int m_nStackNum; BOOL m_bStackRead; //210203 CJH - CutOff ��� ���� �� //210203 CJH - CutOff ëì ê²°í¨ ì int m_nCutOffDefectNum; //210323 CJH - Server/Frame Shrink ���� �߰� //210323 CJH - Server/Frame Shrink ì ë³´ ì¶ê° char m_strShrinked[6]; //210326 CJH - RAW �Է� Defect ���� ���� ��뿩�� //210326 CJH - RAW ì ë ¥ Defect ìë ìí ì¬ì©ì¬ë¶ BOOL m_bRawCutoff; }; @@ -222,7 +219,7 @@ } int getTotalDefectNum(){return m_nDefectNumTypeTB+m_nDefectNumTypeTW+m_nDefectNumTypeRB+m_nDefectNumTypeRW; }; int m_nCellID; //1. PANEL_ID short m_nModelIdx; // �� ��° ���ΰ�? short m_nModelIdx; // ëª ë²ì§¸ 모ë¸ì¸ê°? char m_strCellName[32]; int m_rectCellLeft; @@ -235,7 +232,7 @@ int m_nJudgeGlade; //���� ���� ���� ���� //ê²°í¨ ê°¯ì ê´ë¦¬ ë³ì int m_nDefectNumSizeSmall; int m_nDefectNumSizeMid; int m_nDefectNumSizeLarge; @@ -259,43 +256,12 @@ char m_strProImage[32]; char m_strAvgGray_0[12]; char m_strPortion_0[12]; //kyh Mura Data �߰� 0622 char m_strCorner_Gray_0[12]; char m_strAvgAmp_0[12]; char m_strFFTVar_0[12]; char m_strFFTVah_0[12]; char m_strFFTVaq_0[12]; char m_strFFTPK_0[12]; char m_strAvgGray_1[12]; char m_strPortion_1[12]; //kyh Mura Data �߰� 0622 char m_strCorner_Gray_1[12]; char m_strAvgAmp_1[12]; char m_strFFTVar_1[12]; char m_strFFTVah_1[12]; char m_strFFTVaq_1[12]; char m_strFFTPK_1[12]; char m_strAvgGray_2[12]; char m_strPortion_2[12]; //kyh Mura Data �߰� 0622 char m_strCorner_Gray_2[12]; char m_strAvgAmp_2[12]; char m_strFFTVar_2[12]; char m_strFFTVah_2[12]; char m_strFFTVaq_2[12]; char m_strFFTPK_2[12]; char m_strAvgGray_3[12]; char m_strPortion_3[12]; //kyh Mura Data �߰� 0622 char m_strCorner_Gray_3[12]; char m_strAvgAmp_3[12]; char m_strFFTVar_3[12]; char m_strFFTVah_3[12]; char m_strFFTVaq_3[12]; char m_strFFTPK_3[12]; int m_nDefectNumJudgeOKWhite; int m_nDefectNumJudgeOKBlack; @@ -308,17 +274,17 @@ int m_nReflowResult[8]; // 0: Reflow X 1: Reflow OK 2: Reflow NG // Filtering�� Stack�� �� // Filteringë Stackë³ ì int m_nDefectTDCount; int m_nDefectSDCount; int m_nDefectPDCount; int m_nDefectSPCount; // Gate/Data �� ���� // Gate/Data ì´ ê°¯ì int m_nGateNum; int m_nDataNum; // 210129 CJH - Cell Origin ���� // 210129 CJH - Cell Origin ë°©í¥ int m_nCellXDir; int m_nCellYDir; }; @@ -331,27 +297,26 @@ } ////////////////////////////////////////////////////////////////////////// //���⼠���� ���� ���� [������ 2019/1/19] //ì¬ê¸°ì ë¶í° 리뷰 ìì [ê¹íí 2019/1/19] ditRaw::ReviewPlanType m_nPlanType ; int m_nResultCode; //0:None, 1:Success int m_nShotIndex; //���� ���� ���� [������ 2018/12/5] int m_nShotIndex; //리뷰 ì°ì ìë² [ê¹íí 2018/12/5] int m_nModuleIndex; int m_nMagnificIndex; float m_fManification; float m_fManificResoultion; char m_strRevImageName[256]; char m_strRevImagePath[256]; ////////////////////////////////////////////////////////////////////////// // Measure ���� // Measure ìì int m_nMeasure_Index; int m_nMeasure_ResultCode; //0:None, 1:Success float m_fMesure_ResultData[8]; // 0:Type, 1:ShiftX, 2:ShiftY ////////////////////////////////////////////////////////////////////////// // WSI���� // WSIìì int m_nWsi_ResultCode; //0:None, 1:Success int m_nWsi_Type; // �Ը� / ���� int m_nWsi_Type; // í¨ëª° / ë기 float m_fWsi_ResultData[8]; // 0:Type, 1:Height(um), 2:Width char m_strWsi_2DImageFilename[256]; char m_strWsi_3DImageFilename[256]; @@ -359,14 +324,14 @@ int m_nWsi_pReflowResultData[8]; double m_dWsi_DamDistance; double m_dWsiMmMotorX; // WSI ���� ��ǥ 20180223 HJH double m_dWsiMmMotorX; // WSI ëª¨í° ì¢í 20180223 HJH double m_dWsiMmMotorY; float m_fWsiManification; // WSI ���� float m_fWsiManification; // WSI ë°°ì¨ ////////////////////////////////////////////////////////////////////////// // Reflow ���� // Reflow ìì int m_nReflow_Index; int m_nReflow_ResultCode; //0:None, // ������ Line�� ����. 3 �̸� : DAM2 Reflow ����, 4~5 : DAM1 Reflow ����, 6 : no Reflow ���� / -1 : image not loaded, -2 : roi setting error, -3 : roi length error, -5 : select wrong side int m_nReflow_ResultCode; //0:None, // ê²ì¶í Lineì ê°ì. 3 ë¯¸ë§ : DAM2 Reflow íì , 4~5 : DAM1 Reflow íì , 6 : no Reflow íì / -1 : image not loaded, -2 : roi setting error, -3 : roi length error, -5 : select wrong side float m_fReflow_LinePosData[8]; int m_nReflow_Side; int m_nReflow_InspectionMode; @@ -382,108 +347,107 @@ short m_nDefectID; short m_nCameraID; short m_nScanIdx; //short m_nDefectIdx; // ī�޶󿡼��� ���� ��� int m_nDefectIdx; // ī�޶󿡼��� ���� ��� 201207 CJH - �ڸ� �� ��ħ. int������ ���� //short m_nDefectIdx; // ì¹´ë©ë¼ììì ê²°í¨ ì¸ë±ì¤ int m_nDefectIdx; // ì¹´ë©ë¼ììì ê²°í¨ ì¸ë±ì¤ 201207 CJH - ì릿 ì ë침. intíì¼ë¡ ë³ê²½ int m_nPixelConv; // pixel ���� ��ǥ int m_nPixelScan; // pixel ���� ��ǥ int m_nPixelConv; // pixel ë¨ì ì¢í int m_nPixelScan; // pixel ë¨ì ì¢í short m_nPixelSize; // ����ũ�� ---------------------------------PS short/*SERVER_DefectType*/ m_DefectType; // ���� Ÿ�� ---------------------------------DT short/*SERVER_DefectSubType*/ m_DefectSubType; // ������ ��������. short/*SERVER_DefectBDType*/ m_DefectBDType; // ���� Ÿ�� - Bright, Dark, Both short m_nPixelSize; // ê²°í¨í¬ê¸° ---------------------------------PS short/*SERVER_DefectType*/ m_DefectType; // ê²°í¨ íì ---------------------------------DT short/*SERVER_DefectSubType*/ m_DefectSubType; // ê²°í¨ì íì ìí. short/*SERVER_DefectBDType*/ m_DefectBDType; // ê²°í¨ íì - Bright, Dark, Both short m_sPixelWidth; // �ȼ����� ���� �ʺ� short m_sPixelHeight; // �ȼ����� ���� ���� short m_nLevelSrcMin; // ���� ��� Min -----------------------------SN short m_nLevelSrcMax; // ���� ��� Max -----------------------------SX short m_nLevelSrcAvg; // ���� ��� Avg -----------------------------SA short m_nLevelRefMin; // �ñ±³´ï¿½ï¿½ ��� Min -------------------------RN short m_nLevelRefMax; // �ñ±³´ï¿½ï¿½ ��� Max -------------------------RX short m_nLevelRefAvg; // �ñ±³´ï¿½ï¿½ ��� Avg -------------------------RA short m_nLevelDiffMin; // ���� Min ---------------------------------DN short m_nLevelDiffMax; // ���� Max ---------------------------------DX short m_nLevelDiffAvg; // ���� Avg ---------------------------------DA short m_sPixelWidth; // í½ì ë¨ì ê²°í¨ ëë¹ short m_sPixelHeight; // í½ì ë¨ì ê²°í¨ ëì´ short m_nLevelSrcMin; // ê²°í¨ ë°ê¸° Min -----------------------------SN short m_nLevelSrcMax; // ê²°í¨ ë°ê¸° Max -----------------------------SX short m_nLevelSrcAvg; // ê²°í¨ ë°ê¸° Avg -----------------------------SA short m_nLevelRefMin; // ë¹êµëì ë°ê¸° Min -------------------------RN short m_nLevelRefMax; // ë¹êµëì ë°ê¸° Max -------------------------RX short m_nLevelRefAvg; // ë¹êµëì ë°ê¸° Avg -------------------------RA short m_nLevelDiffMin; // ë¹êµì°¨ Min ---------------------------------DN short m_nLevelDiffMax; // ë¹êµì°¨ Max ---------------------------------DX short m_nLevelDiffAvg; // ë¹êµì°¨ Avg ---------------------------------DA int m_nDefectRScale; // �ȼ����� ���� ���� -------------------------RS short m_sThreshold; // ������ ������ ���� Threshold short m_sThresholdAvg; // ������ ������ ���� Threshold AVG short m_sDefectPeak; // ������ Peak. short m_sDefectLevel; // (DiffAvg - Th) BOE 8G ��û���� int m_nDefectRScale; // í½ì ë¨ì ê²°í¨ ëì´ -------------------------RS short m_sThreshold; // ê²°í¨ì ê²ì¶í ëì Threshold short m_sThresholdAvg; // ê²°í¨ì ê²ì¶í ëì Threshold AVG short m_sDefectPeak; // ê²°í¨ì Peak. short m_sDefectLevel; // (DiffAvg - Th) BOE 8G ìì²ì¬í int m_nPixelGlassStart; // Glass ���� �ȼ� int m_nPixelGlassStart; // Glass ìì í½ì short m_sDefectLoc; short m_sZoneClassPixelCount[16]; short m_sZonePixelCount[16]; // Zone�� ���� Pixel �� short m_sZoneValueMin[16]; // Zone�� ���� Min short m_sZoneValueMax[16]; // Zone�� ���� Max short m_sZoneValueAvg[16]; // Zone�� ���� Avg short m_sZonePixelCount[16]; // Zoneë³ ê²°í¨ Pixel ì short m_sZoneValueMin[16]; // Zoneë³ ê²°í¨ Min short m_sZoneValueMax[16]; // Zoneë³ ê²°í¨ Max short m_sZoneValueAvg[16]; // Zoneë³ ê²°í¨ Avg short m_sZonePixelPercent[16]; // --------------------------------------Z0~ZF //210127 CJH - Zone�� Source Gray �Է� short m_sZoneValueSrcMin[16]; // Zone�� Source Min short m_sZoneValueSrcMax[16]; // Zone�� Source Max short m_sZoneValueSrcAvg[16]; // Zone�� Source Avg //210127 CJH - Zoneë³ Source Gray ì ë ¥ short m_sZoneValueSrcMin[16]; // Zoneë³ Source Min short m_sZoneValueSrcMax[16]; // Zoneë³ Source Max short m_sZoneValueSrcAvg[16]; // Zoneë³ Source Avg int m_nUMOriginX; // um���� x��ǥ (��������) int m_nUMOriginY; // um���� y��ǥ (��������) int m_nUMCenterAlignX; // um���� X��ǥ (Glass Center ����, ������ ��) int m_nUMCenterAlignY; // um���� Y��ǥ (Glass Center ����, ������ ��) int m_nUMCenterX; // um���� X��ǥ (Glass Center ����, ������ ��) int m_nUMCenterY; // um���� Y��ǥ (Glass Center ����, ������ ��) int m_nUMSizeX; // um���� X ũ�� -----------------------------UX int m_nUMSizeY; // um���� Y ũ�� -----------------------------UY int m_nUMSize; // um���� ũ��. CRect m_RectUM; // ���� ���� ���� �簢��. int m_nUMOriginX; // umë¨ì xì¢í (ìì 기ì¤) int m_nUMOriginY; // umë¨ì yì¡°í (ìì 기ì¤) int m_nUMCenterAlignX; // umë¨ì Xì¢í (Glass Center 기ì¤, ì¼ë¼ì¸ë³´ì í) int m_nUMCenterAlignY; // umë¨ì Yì¢í (Glass Center 기ì¤, ì¼ë¼ì¸ë³´ì í) int m_nUMCenterX; // umë¨ì Xì¢í (Glass Center 기ì¤, ì¼ë¼ì¸ë³´ì ì ) int m_nUMCenterY; // umë¨ì Yì¢í (Glass Center 기ì¤, ì¼ë¼ì¸ë³´ì ì ) int m_nUMSizeX; // umë¨ì X í¬ê¸° -----------------------------UX int m_nUMSizeY; // umë¨ì Y í¬ê¸° -----------------------------UY int m_nUMSize; // umë¨ì í¬ê¸°. CRect m_RectUM; // ëí ì¼í° ê¸°ì¤ ì¬ê°í. short/*SERVER_DefectSizeType*/ m_DefectSizeType; // ���� ũ�� ����enum SERVER_DefectSizeType { SizeType_Unknown = 0, SizeType_Small, SizeType_Mid, SizeType_Large, SizeType_Huge, SizeType_Ultra }; short/*SERVER_DefectPeakType*/ m_DefectPeakType; // Peak�� ����. short/*Judgement*/ m_DefectJudgement; // ���� ����. BOOL m_bDefectCutoff; // �� ���� ����(TRUE= Cutoff, FALSE) short/*MAP16_DefectClass*/ m_DefectClass; // BOE Defect Class 16��� ���� int m_nPadRegionIdx; // PAD ���� ��� short/*SERVER_DefectSizeType*/ m_DefectSizeType; // ê²°í¨ í¬ê¸° ì¢ ë¥enum SERVER_DefectSizeType { SizeType_Unknown = 0, SizeType_Small, SizeType_Mid, SizeType_Large, SizeType_Huge, SizeType_Ultra }; short/*SERVER_DefectPeakType*/ m_DefectPeakType; // Peakì ì¢ ë¥. short/*Judgement*/ m_DefectJudgement; // ê²°í¨ íì . BOOL m_bDefectCutoff; // ì»· ì¤í ëí(TRUE= Cutoff, FALSE) short/*MAP16_DefectClass*/ m_DefectClass; // BOE Defect Class 16ë±ë¶ êµ¬ë¶ int m_nPadRegionIdx; // PAD ìì ì¸ë±ì¤ int m_nUMCellX; // �� ���� ���� x ��ǥ int m_nUMCellY; // �� ���� ���� y ��ǥ short m_nModelIdx; // �� ��° ���ΰ�? short m_nCellIdx; // ���° ���ΰ�? short m_nCellGate; // ���� Gate����(����� ���� ��) short m_nCellData; // ���� Data����(����� ���� ��) short m_nCellGateAlign; // ���� Gate����(����� ���� ��) short m_nCellDataAlign; // ���� Data����(����� ���� ��) int m_nUMCellX; // ì ìì ê¸°ì¤ x ì¢í int m_nUMCellY; // ì ìì ê¸°ì¤ y ì¢í short m_nModelIdx; // ëª ë²ì§¸ 모ë¸ì¸ê°? short m_nCellIdx; // ëªë²ì§¸ ì ì¸ê°? short m_nCellGate; // ì ë³ Gateë¼ì¸(ì¼ë¼ì¸ ë³´ì ì ) short m_nCellData; // ì ë³ Dataë¼ì¸(ì¼ë¼ì¸ ë³´ì ì ) short m_nCellGateAlign; // ì ë³ Gateë¼ì¸(ì¼ë¼ì¸ ë³´ì í) short m_nCellDataAlign; // ì ë³ Dataë¼ì¸(ì¼ë¼ì¸ ë³´ì í) int m_nUMShotX; // �� ���� X��ǥ int m_nUMShotY; // �� ���� Y��ǥ short m_nMaskDefectIdx; // �� Glass���� �߰ߵ� ����ũ���� ������ ���. short m_nShotIdx; // �뱤�� ��ȣ short m_nMatchShotCount; // ������ ����ũ ������ ��. short m_nMatchMaxSize; // ������ ����ũ �� ���� Å« ������ ũ��. int m_nUMShotX; // ì· ê¸°ì¤ Xì¢í int m_nUMShotY; // ì· ê¸°ì¤ Yì¢í short m_nMaskDefectIdx; // í Glassìì ë°ê²¬ë ë§ì¤í¬ê²°í¨ 묶ìì ì¸ë±ì¤. short m_nShotIdx; // ë ¸ê´ì· ë²í¸ short m_nMatchShotCount; // ëì¼í ë§ì¤í¬ ê²°í¨ì ì. short m_nMatchMaxSize; // ëì¼í ë§ì¤í¬ ì¤ ê°ì¥ í° ê²°í¨ì í¬ê¸°. short m_nRepeatCount; // ���Ӱ��Թ߰����� ������ǥ �ݺ��� short m_nRepeatCount; // ì°ìê²°í¨ë°ê²¬ìí ëì¼ì¢í ë°ë³µì short m_nMaskRepeatCount; int m_StackInfo; // Stack Flag BOOL m_bRealStack; // Stack ������ ���� TD(TRUE) ����, ���͸��� ���� TD(FALSE)������ �� �ִ�. short m_nStackStepCount; // Stack �� short m_nStackColorIdx; // Color�� �����ϴ� ���. BOOL m_bRealStack; // Stack 머ì§ì ìí TD(TRUE) ì¸ì§, íí°ë§ì ìí TD(FALSE)구ë¶í ì ìë¤. short m_nStackStepCount; // Stack ì short m_nStackColorIdx; // Color를 ì ííë ì¸ë±ì¤. //CString m_strStackStep[CFDEFECT_STACKCOUNT]; // Stack Step. char m_strStackFirst[60]; // Stack Step. //201221 CJH - �ִ� ������ 60bytes char m_strUnitID[16]; // ���־��̵� char m_strStackFirst[60]; // Stack Step. //201221 CJH - ìµë ì¬ì´ì¦ 60bytes char m_strUnitID[16]; // ì ëìì´ë int m_ClassificationType; // enum ClassificationType { ClassType_None= 0, ClassType_PI_Over= 1, ClassType_PI_Under= 2, ClassType_TFE_Circle= 3, ClassType_Bubble, ClassType_Scratch, ClassType_Particle}; Classification Type, PI�� TFE�� �߰� �з� �˰���� ���� ���. int m_nAtomWidth; // TFE �� �ʺ� int m_nAtomHeight; // TFE �� ���� short/*ReKind*/ m_DefectKind; // ���� ���� int m_ClassificationType; // enum ClassificationType { ClassType_None= 0, ClassType_PI_Over= 1, ClassType_PI_Under= 2, ClassType_TFE_Circle= 3, ClassType_Bubble, ClassType_Scratch, ClassType_Particle}; Classification Type, PIë TFEë± ì¶ê° ë¶ë¥ ìê³ ë¦¬ì¦ ì ì© ê²°ê³¼. int m_nAtomWidth; // TFE íµ ëë¹ int m_nAtomHeight; // TFE íµ ëì´ short/*ReKind*/ m_DefectKind; // ê²°í¨ ì¢ ë¥ char m_strDefectCode[32]; // Defect Code BOOL m_bMergeState; // Merge Status char m_strAoiImageName[256]; // Defect Image Name(CCD Image) int m_nDefectMerge; // ���� ������ ���� ���� int m_nDefectMerge; // íì¬ ëíì ë¨¸ì§ ì¬ë¶ int m_nPixelSizeOrigin; int m_nScratchRatio; int m_nDensity; // ���� ���� ������ ���� �е� [2017.8.2 bhs] int m_nDensity; // ìí ê²°í¨ êµ¬ë¶ì ìí ë°ë [2017.8.2 bhs] char m_strDefectName[16]; char m_strDefectType[16]; @@ -491,27 +455,19 @@ double m_dScanResolution; double m_dConvResolution; int m_nAngle; // ���� int m_nMajor; // ���� ����(Long) int m_nMinor; // ���� ����(Short) int m_nCompact; // Blob ������ �������� �ϴ� ���� ���̿� Blob ������ ���� int m_nThickness; // Blob ���̿� ������ ���� (Area / Major) int m_nAngle; // ê°ë int m_nMajor; // ì¥ì¶ 길ì´(Long) int m_nMinor; // ë¨ì¶ 길ì´(Short) int m_nCompact; // Blob ì¥ì¶ì ì§ë¦ì¼ë¡ íë ìì ëì´ì Blob ëì´ì ë¹ì¨ int m_nThickness; // Blob ëì´ì ì¥ì¶ì ë¹ì¨ (Area / Major) short m_nHliLevelIdx; // �� ��° ����(�)�ΰ�? int m_nHliLayers; // �ش���Կ� ���Ե� ���̾� bitó�� short m_nHliLevelIdx; // ëª ë²ì§¸ ë 벨(ì±ë)ì¸ê°? int m_nHliLayers; // í´ë¹ê²°í¨ì í¬í¨ë ë ì´ì´ bitì²ë¦¬ BOOL m_bShrinked; //210323 CJH - Frame Shrink ���� �߰� char m_strAoiImagePath[255]; char m_strReviewImagePath[255]; int m_nAlignRectLeft; int m_nAlignRectTop; int m_nAlignRectBottom; int m_nAlignRectRight; BOOL m_bShrinked; //210323 CJH - Frame Shrink ì ë³´ ì¶ê° //���� ���� ���� [������ 2019/1/19] //리뷰 ëí ì ë³´ [ê¹íí 2019/1/19] _grmDefectReviewData m_ReviewDefect; }; @@ -535,8 +491,6 @@ grcWriteBin = 201, grcReadBin = 202, grcReviewWriteBIn = 301, grcGlassRawCommand }; @@ -556,7 +510,7 @@ struct _grmDitMemInfo { //���� �޸� ������ ���� ���� [������ 2018/11/12] //ê³µì ë©ëª¨ë¦¬ ìì±í ê³µê° ê²°ì [ê¹íí 2018/11/12] size_t m_nGlassRawDataSize; int m_nGlassMaxDataNum; int m_nBlockMaxDataNum; @@ -564,7 +518,7 @@ int m_nDefectMaxDataNum; int m_nStackMaxDataNum; //Char ���� �ڷᰡ �ִ� ���� ��ġ [������ 2018/11/12] //Char ê¸°ì¤ ìë£ê° ìë ìì ìì¹ [ê¹íí 2018/11/12] int m_nGlassDataPoint; int m_nBlockDataPoint; int m_nCellDataPoint; @@ -580,8 +534,8 @@ struct _grmDitGlassRawInfo : public _grmDitMemInfo, public _grmDitCommand { size_t m_nGlassLoadingCount; emAOIProcStep m_ClientProcStep; //AOI, Review�� ���� ��� emAOIProcStep m_ServerProcStep; //GlassRaw Messenger(Server)�� ó�� �Ϸ� �� ��� emAOIProcStep m_ClientProcStep; //AOI, Reviewê° ë³´ë¸ ëª ë ¹ emAOIProcStep m_ServerProcStep; //GlassRaw Messenger(Server)ê° ì²ë¦¬ ìë£ í ëª ë ¹ }; class CgrmGlassRawData @@ -668,7 +622,7 @@ { if(pInfo == NULL || pData == NULL) return FALSE; if(1) //new type //�޸� �� ���� ũ�⿡ ������� if(1) //new type //ë©ëª¨ë¦¬ ì´ ê³µê° í¬ê¸°ì ìê´ìì´ { //if(pInfo->m_nGlassRawDataSize != m_MemInfo.m_nGlassRawDataSize) return FALSE; ReviewHistory/ReveiwHistory/AlignDlg.cpp
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/AlignDlg.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/AnaResultFile.cpp
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/AnaResultFile.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/CHRectTracker.cpp
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/CHRectTracker.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/CHTrackerView.cpp
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/CHTrackerView.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/CameraImageView.cpp
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/CameraImageView.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/CustomizeReview.cpp
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/CustomizeReview.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/DitGlassRawClient.cpp
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/DitGlassRawClient.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/DitGlassRawServer.cpp
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/DitGlassRawServer.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/DitGlassRawStruct.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/GlassRawBase.cpp
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/GlassRawBase.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/GlassRawCEC.cpp
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/GlassRawCEC.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/GlassRawCPJT.cpp
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/GlassRawCPJT.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/GlassRawCSOT.cpp
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/GlassRawCSOT.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/GlassRawDemo.cpp
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/GlassRawDemo.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/GlassRawRTMS.cpp
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/GlassRawRTMS.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/InterfaceFTP.cpp
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/InterfaceFTP.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/MacroResultFile.cpp
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/MacroResultFile.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/PathSettingDlg.cpp
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/PathSettingDlg.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/ReveiwHistory.cpp
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/ReveiwHistory.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/ReveiwHistory.rcBinary files differ
ReviewHistory/ReveiwHistory/ReveiwHistory.vcxproj
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/ReveiwHistory.vcxproj.filters
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/ReveiwHistoryDlg.cpp
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/ReveiwHistoryDlg.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/Singleton.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/StackResultCPJT.cpp
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/StackResultCPJT.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/StackResultCSOT.cpp
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/StackResultCSOT.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/aaa.txt
ReviewHistory/ReveiwHistory/akDefectFormation.cpp
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/akDefectFormation.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/akFormationMap.cpp
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/akFormationMap.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/akGridData.cpp
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/akGridData.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/akIPCNetAOISystem.cpp
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/akIPCNetAOISystem.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/akImageView.cpp
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/akImageView.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/akLoggerExt.cpp
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/akLoggerExt.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/akWndArrange.cpp
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/akWndArrange.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/res/History.icoBinary files differ
ReviewHistory/ReveiwHistory/res/ReveiwHistory.icoBinary files differ
ReviewHistory/ReveiwHistory/res/ReveiwHistory.rc2Binary files differ
ReviewHistory/ReveiwHistory/resource.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/stdafx.cpp
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/stdafx.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/targetver.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/ReveiwHistory/x64/Debug/reveiwhistorydlg.obj.encBinary files differ
ReviewHistory/ReviewHistory.sln
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akCore/akBit.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akCore/akColorStruct.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akCore/akCoordinate.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akCore/akCoreLinker.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akCore/akDE.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akCore/akDE2.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akCore/akDefine.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akCore/akFileDB.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akCore/akFileDBHash.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akCore/akFileMgr.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akCore/akFileMgrAdv.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akCore/akFileMgrB.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akCore/akFileUtil.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akCore/akInterpolation.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akCore/akLogger.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akCore/akMath.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akCore/akMatrix.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akCore/akPathFileUtil.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akCore/akRandom.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akCore/akString.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akCore/akStruct.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akCore/akStructColor.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akCore/akStructPoint.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akCore/akStructRect.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akCore/akStructVector.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akCore/akSyncObject.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akCore/akText.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akCore/akTextExt.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akCore/akTimeManager.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akCore/akTrace.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akCore/akTraceExt.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akCore/akTrajectoryModel.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akCore/akVector.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akCore/akWGS84.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akCore/akWaypoint.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akGraph/akColorSettingDlg.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akGraph/akColorTable.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akGraph/akColorTableOption.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akGraph/akDDSettingDlg.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akGraph/akDataBasic1.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akGraph/akDataBasic2.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akGraph/akDataBasic3.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akGraph/akDataImage.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akGraph/akDataMesh.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akGraph/akDataVector2.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akGraph/akGraphBase.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akGraph/akGraphBasic3.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akGraph/akGraphCodeJ.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akGraph/akGraphImage.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akGraph/akGraphLinker.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akGraph/akGraphMesh.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akGraph/akGraphStruct.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akGraph/akGraphType2V.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akGraph/akGraphUtil.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akGraph/akMemDC.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akGraph/akPixel.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akGraph/akRangeSettingDlg.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akGraph/akRangeSettingNormalDlg.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akGraph/akRangeSettingTimeDlg.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akGraph/akRaySettingDlg.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akGraph/akResource.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akGraph/akSelectDataDlg.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akGraph/akSyncObject.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akGraph/akUnit.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akGraph/khDataBase.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akGridCtrl/CellRange.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akGridCtrl/GridCell.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akGridCtrl/GridCellBase.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akGridCtrl/GridCellCheck.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akGridCtrl/GridDropTarget.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akGridCtrl/InPlaceEdit.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akGridCtrl/MemDC.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akGridCtrl/NewCellTypes/GridCellCheck.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akGridCtrl/NewCellTypes/GridCellCombo.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akGridCtrl/NewCellTypes/GridCellDateTime.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akGridCtrl/NewCellTypes/GridCellNumeric.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akGridCtrl/NewCellTypes/GridURLCell.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akGridCtrl/TitleTip.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akGridCtrl/akGridCtrl.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akGridCtrl/akGridCtrlLinker.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akGridCtrl/testCtrl.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akSTL/akColor.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akSTL/akPoint.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akSTL/akPointT.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akSTL/akQueue.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akSTL/akQueueCircle.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akSTL/akRect.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akSTL/akRectT.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akSTL/akSTLLinker.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akSTL/akStruct.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akSTL/akTrace.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akSTL/akTrajectory.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akSTL/akVector.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akSTL/akVectorT.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akSTL/backup/akColorStruct.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akSTL/backup/akCoordinate.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akSTL/backup/akFileMgr.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akSTL/backup/akFileMgrAdv.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akSTL/backup/akFileMgrB.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akSTL/backup/akFileUtil.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akSTL/backup/akInterpolation.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akSTL/backup/akMath.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akSTL/backup/akMatrix.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akSTL/backup/akMemory.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akSTL/backup/akRandom.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akSTL/backup/akString.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akSTL/backup/akSyncObject.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akSTL/backup/akText.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akSTL/backup/akTextExt.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akSTL/backup/akTimeManager.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akSTL/backup/akTraceExt.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akSTL/backup/akTrajectoryModel.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akSTL/backup/akWGS84.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akSTL/backup/akWaypoint.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akSTL/inl/akPointT.inl
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akSTL/inl/akRectT.inl
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akSTL/inl/akVectorT.inl
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akSTL/»õ Æú´õ/akColorStruct.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akSTL/»õ Æú´õ/akCoordinate.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akSTL/»õ Æú´õ/akFileMgr.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akSTL/»õ Æú´õ/akFileMgrAdv.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akSTL/»õ Æú´õ/akFileMgrB.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akSTL/»õ Æú´õ/akFileUtil.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akSTL/»õ Æú´õ/akInterpolation.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akSTL/»õ Æú´õ/akMath.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akSTL/»õ Æú´õ/akMatrix.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akSTL/»õ Æú´õ/akMemory.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akSTL/»õ Æú´õ/akRandom.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akSTL/»õ Æú´õ/akString.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akSTL/»õ Æú´õ/akSyncObject.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akSTL/»õ Æú´õ/akText.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akSTL/»õ Æú´õ/akTextExt.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akSTL/»õ Æú´õ/akTimeManager.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akSTL/»õ Æú´õ/akTraceExt.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akSTL/»õ Æú´õ/akTrajectoryModel.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akSTL/»õ Æú´õ/akWGS84.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewHistory/include/akSTL/»õ Æú´õ/akWaypoint.h
ÆÄÀÏÀÌ »èÁ¦µÊ ReviewSystem/ReviewSystem/DitGlassRawClient.cpp
@@ -124,11 +124,6 @@ return SetCommand(grcReadBin); } BOOL CDitGlassRawClient::WriteReviewRawBinFile() { return SetCommand(grcReviewWriteBIn); } BOOL CDitGlassRawClient::SetCommand( emGlassRawCommand nCmd ) { if(m_pGlassRawInfo == NULL) return FALSE; @@ -137,14 +132,14 @@ int nCmdId = (m_pGlassRawInfo->m_nCommandIdxWrite+1) % COMMAND_MAXCOUNT; if(m_pGlassRawInfo->m_nCommandIdxRead == nCmdId)//���� ���ٴ°��� ��ŧ�� ���۰� �ѹ��� ���Ҵٴ°�!! [������ 2018/11/12] if(m_pGlassRawInfo->m_nCommandIdxRead == nCmdId)//ëì´ ê°ë¤ëê²ì ìíë¬ ë²í¼ê° íë°í´ ëìë¤ëê²!! [ê¹íí 2018/11/12] { m_pGlassRawInfo->m_nCommandIdxRead++;//���� ������ ��� �ϳ��� �����Ѵ�. [������ 2018/11/12] m_pGlassRawInfo->m_nCommandIdxRead++;//ê°ì¥ ì¤ëë ëª ë ¹ íë를 ìì íë¤. [ê¹íí 2018/11/12] } m_pGlassRawInfo->m_nCommandBuffer[nCmdId].nCommand = (short)nCmd; m_pGlassRawInfo->m_nCommandBuffer[nCmdId].strParam; m_pGlassRawInfo->m_nCommandBuffer[nCmdId].nResult = -1; //-1������, 0����, 1���� [������ 2018/11/13] m_pGlassRawInfo->m_nCommandBuffer[nCmdId].nResult = -1; //-1ìíì , 0ì¤í¨, 1ì±ê³µ [ê¹íí 2018/11/13] m_nLastCommandIdx = m_pGlassRawInfo->m_nCommandIdxWrite = nCmdId; @@ -215,7 +210,7 @@ void CDitGlassRawClient::RemoveReviewDefects() { int nDefectNum = m_pGlassData->m_nDefectNum; int nRightDefectNum = 0;//������ �����ʿ� ��ġ�� ���� ���� int nRightDefectNum = 0;//기ì¤ì ì¤ë¥¸ìª½ì ìì¹í ê²°í¨ ê°¯ì int nDefectDeleteNum = 0; for(int i=nDefectNum-1; i>=0; i--) { ReviewSystem/ReviewSystem/DitGlassRawClient.h
@@ -25,7 +25,7 @@ BOOL SetReviewComtomize(); void RemoveReviewDefects();//AOI���� ������ ���� ������ �����ϰ�, ���信�� ������ User Ȥ�� Reflow ������ �����Ѵ�. void RemoveReviewDefects();//AOIìì ìì±í ëí ì 보를 ì ì¸íê³ , 리뷰ìì ìì±í User í¹ì Reflow ê²°í¨ì ì ì¸íë¤. _grmDitMemInfo* GetGlassMeminfo(){return (_grmDitMemInfo*)m_pGlassRawInfo;}; _grmGlassData* GetGlassData(){return m_pGlassData;}; @@ -34,16 +34,14 @@ _grmDefectData* GetDefectData(int nIndex){return &m_pDefectData[nIndex];}; _grmDefectData* GetStackData(int nIndex) { return &m_pStackData[nIndex];}; //��� ���� ���� ���� ��� [������ 2018/11/12] //ê²°ê³¼ íì¼ ê°ì ì°ê¸° ëª ë ¹ [ê¹íí 2018/11/12] BOOL WriteAOIRawFile(); //������� ���� ���̳ʸ� ���·� ���� [������ 2018/11/12] //ê²°ê³¼íì¼ ê°ì ë°ì´ë리 ííë¡ ì°ê¸° [ê¹íí 2018/11/12] BOOL WriteAOIRawBinFile(); //������� ���� ���̳ʸ� �б� //ê²°ê³¼íì¼ ê°ì ë°ì´ë리 ì½ê¸° BOOL ReadAOIRawBinFile(); BOOL WriteReviewRawBinFile(); protected: BOOL ConnectGlassRawInfo(); ReviewSystem/ReviewSystem/DitGlassRawStruct.h
@@ -47,7 +47,7 @@ memset(this, 0, sizeof(_grmGlassData)); } //Glass ���� //Glass ì ë³´ char m_strFileName[64]; char m_strPath[256]; @@ -56,12 +56,12 @@ int m_nOriginDirection; //{ GD_LeftTop = 0, GD_RightTop = 1, GD_LeftBottom = 10, GD_RightBottom = 11 }; int m_nConerCutDirection; int m_nScanCoordinateY; //���Ⱑ 0�̸� �Ϲ�, 1�̸� Scan������ y��(�� scan������ ����, offline ���� ����) int m_nScanCoordinateY; //ì¬ê¸°ê° 0ì´ë©´ ì¼ë°, 1ì´ë©´ Scanë°©í¥ì´ yì¶(ì¦ scanë°©í¥ì´ ë¨ì¶, offline ì¤ë¹ ê°ì) int m_nGlassSizeWidth; int m_nGlassSizeHeight; //�������� //ì¤ë¹ì ë³´ char m_strLine[32]; char m_strEquipType[32]; char m_strEquipID[32]; @@ -74,7 +74,7 @@ CTime m_tmReviewLoading; CTime m_tmReviewEnd; //�⺻ �������� //기본 물ë¥ì ë³´ char m_strGlassID[32]; //Glass ID char m_strPPID[32]; char m_strEPPID[32]; @@ -91,7 +91,7 @@ char m_strVCRGlassID[32]; //���� ���� ���� ���� //ê²°í¨ ê°¯ì ê´ë¦¬ ë³ì int m_nDefectNumSizeSmall; int m_nDefectNumSizeMid; int m_nDefectNumSizeLarge; @@ -126,14 +126,14 @@ int m_nDefectNumStackSP; //ī�޶�/��ĵ ���� [������ 2018/12/5] //ì¹´ë©ë¼/ì¤ìº ì ë³´ [ê¹íí 2018/12/5] short m_nCameraNum; short m_nScanNum; unsigned char m_nGrayLevelAvg[RAWMESSENGER_MAXCAMNUM*RAWMESSENGER_MAXSCANNUM]; unsigned char m_nGrayLevelMin[RAWMESSENGER_MAXCAMNUM*RAWMESSENGER_MAXSCANNUM]; unsigned char m_nGrayLevelMax[RAWMESSENGER_MAXCAMNUM*RAWMESSENGER_MAXSCANNUM]; //����� ���� um[������ 2018/12/10] //ì¼ë¼ì¸ ì ë³´ um[ê¹íí 2018/12/10] double m_nAlignCcdTheta; double m_nAlignCcdShitftX; double m_nAlignCcdShitftY; @@ -143,11 +143,8 @@ double m_nAlignBasicTheta; double m_nAlignBasicShitftX; double m_nAlignBasicShitftY; char m_strAlignFirst[64]; char m_strAlignSecond[64]; // char m_strAlignPath[256]; //CSOT�� ���� ���� [������ 2018/12/5] //CSOTì© ë¬¼ë¥ ì ë³´ [ê¹íí 2018/12/5] char m_strCassetteSequenceNo[16]; char m_strOwnerCode[16]; //2. OWNER_CODE char m_strOwnerType[16]; //3. OWNER_TYPE @@ -162,7 +159,7 @@ char m_strGroupID[16]; //14.GROUP_ID char m_cAutoSampleFlag; //15.AUTOSAMPLEFLAG // CPRJ�� ���� ���� // CPRJì© ë¬¼ë¥ ì ë³´ char m_strProdType[3]; char m_strBatchID[13]; char m_strPairHPanelID[13]; @@ -188,17 +185,17 @@ BYTE m_nGlassDataBitSignal[4]; bool m_bJob_end; //201217 CJH - ���� Defect Review ���� //201217 CJH - ì°ì Defect Review ê°ì int m_nReviewNum; //201221 CJH - �Ľ��� Stack ��� //201221 CJH - íì±í Stack ê²°ê³¼ int m_nStackNum; BOOL m_bStackRead; //210203 CJH - CutOff ��� ���� �� //210203 CJH - CutOff ëì ê²°í¨ ì int m_nCutOffDefectNum; //210323 CJH - Server/Frame Shrink ���� �߰� //210323 CJH - Server/Frame Shrink ì ë³´ ì¶ê° char m_strShrinked[6]; //210326 CJH - RAW �Է� Defect ���� ���� ��뿩�� //210326 CJH - RAW ì ë ¥ Defect ìë ìí ì¬ì©ì¬ë¶ BOOL m_bRawCutoff; }; @@ -222,7 +219,7 @@ } int getTotalDefectNum(){return m_nDefectNumTypeTB+m_nDefectNumTypeTW+m_nDefectNumTypeRB+m_nDefectNumTypeRW; }; int m_nCellID; //1. PANEL_ID short m_nModelIdx; // �� ��° ���ΰ�? short m_nModelIdx; // ëª ë²ì§¸ 모ë¸ì¸ê°? char m_strCellName[32]; int m_rectCellLeft; @@ -235,7 +232,7 @@ int m_nJudgeGlade; //���� ���� ���� ���� //ê²°í¨ ê°¯ì ê´ë¦¬ ë³ì int m_nDefectNumSizeSmall; int m_nDefectNumSizeMid; int m_nDefectNumSizeLarge; @@ -259,43 +256,12 @@ char m_strProImage[32]; char m_strAvgGray_0[12]; char m_strPortion_0[12]; //kyh Mura Data �߰� 0622 char m_strCorner_Gray_0[12]; char m_strAvgAmp_0[12]; char m_strFFTVar_0[12]; char m_strFFTVah_0[12]; char m_strFFTVaq_0[12]; char m_strFFTPK_0[12]; char m_strAvgGray_1[12]; char m_strPortion_1[12]; //kyh Mura Data �߰� 0622 char m_strCorner_Gray_1[12]; char m_strAvgAmp_1[12]; char m_strFFTVar_1[12]; char m_strFFTVah_1[12]; char m_strFFTVaq_1[12]; char m_strFFTPK_1[12]; char m_strAvgGray_2[12]; char m_strPortion_2[12]; //kyh Mura Data �߰� 0622 char m_strCorner_Gray_2[12]; char m_strAvgAmp_2[12]; char m_strFFTVar_2[12]; char m_strFFTVah_2[12]; char m_strFFTVaq_2[12]; char m_strFFTPK_2[12]; char m_strAvgGray_3[12]; char m_strPortion_3[12]; //kyh Mura Data �߰� 0622 char m_strCorner_Gray_3[12]; char m_strAvgAmp_3[12]; char m_strFFTVar_3[12]; char m_strFFTVah_3[12]; char m_strFFTVaq_3[12]; char m_strFFTPK_3[12]; int m_nDefectNumJudgeOKWhite; int m_nDefectNumJudgeOKBlack; @@ -308,17 +274,17 @@ int m_nReflowResult[8]; // 0: Reflow X 1: Reflow OK 2: Reflow NG // Filtering�� Stack�� �� // Filteringë Stackë³ ì int m_nDefectTDCount; int m_nDefectSDCount; int m_nDefectPDCount; int m_nDefectSPCount; // Gate/Data �� ���� // Gate/Data ì´ ê°¯ì int m_nGateNum; int m_nDataNum; // 210129 CJH - Cell Origin ���� // 210129 CJH - Cell Origin ë°©í¥ int m_nCellXDir; int m_nCellYDir; }; @@ -331,27 +297,26 @@ } ////////////////////////////////////////////////////////////////////////// //���⼠���� ���� ���� [������ 2019/1/19] //ì¬ê¸°ì ë¶í° 리뷰 ìì [ê¹íí 2019/1/19] ditRaw::ReviewPlanType m_nPlanType ; int m_nResultCode; //0:None, 1:Success int m_nShotIndex; //���� ���� ���� [������ 2018/12/5] int m_nShotIndex; //리뷰 ì°ì ìë² [ê¹íí 2018/12/5] int m_nModuleIndex; int m_nMagnificIndex; float m_fManification; float m_fManificResoultion; char m_strRevImageName[256]; char m_strRevImagePath[256]; ////////////////////////////////////////////////////////////////////////// // Measure ���� // Measure ìì int m_nMeasure_Index; int m_nMeasure_ResultCode; //0:None, 1:Success float m_fMesure_ResultData[8]; // 0:Type, 1:ShiftX, 2:ShiftY ////////////////////////////////////////////////////////////////////////// // WSI���� // WSIìì int m_nWsi_ResultCode; //0:None, 1:Success int m_nWsi_Type; // �Ը� / ���� int m_nWsi_Type; // í¨ëª° / ë기 float m_fWsi_ResultData[8]; // 0:Type, 1:Height(um), 2:Width char m_strWsi_2DImageFilename[256]; char m_strWsi_3DImageFilename[256]; @@ -359,14 +324,14 @@ int m_nWsi_pReflowResultData[8]; double m_dWsi_DamDistance; double m_dWsiMmMotorX; // WSI ���� ��ǥ 20180223 HJH double m_dWsiMmMotorX; // WSI ëª¨í° ì¢í 20180223 HJH double m_dWsiMmMotorY; float m_fWsiManification; // WSI ���� float m_fWsiManification; // WSI ë°°ì¨ ////////////////////////////////////////////////////////////////////////// // Reflow ���� // Reflow ìì int m_nReflow_Index; int m_nReflow_ResultCode; //0:None, // ������ Line�� ����. 3 �̸� : DAM2 Reflow ����, 4~5 : DAM1 Reflow ����, 6 : no Reflow ���� / -1 : image not loaded, -2 : roi setting error, -3 : roi length error, -5 : select wrong side int m_nReflow_ResultCode; //0:None, // ê²ì¶í Lineì ê°ì. 3 ë¯¸ë§ : DAM2 Reflow íì , 4~5 : DAM1 Reflow íì , 6 : no Reflow íì / -1 : image not loaded, -2 : roi setting error, -3 : roi length error, -5 : select wrong side float m_fReflow_LinePosData[8]; int m_nReflow_Side; int m_nReflow_InspectionMode; @@ -382,108 +347,107 @@ short m_nDefectID; short m_nCameraID; short m_nScanIdx; //short m_nDefectIdx; // ī�޶󿡼��� ���� ��� int m_nDefectIdx; // ī�޶󿡼��� ���� ��� 201207 CJH - �ڸ� �� ��ħ. int������ ���� //short m_nDefectIdx; // ì¹´ë©ë¼ììì ê²°í¨ ì¸ë±ì¤ int m_nDefectIdx; // ì¹´ë©ë¼ììì ê²°í¨ ì¸ë±ì¤ 201207 CJH - ì릿 ì ë침. intíì¼ë¡ ë³ê²½ int m_nPixelConv; // pixel ���� ��ǥ int m_nPixelScan; // pixel ���� ��ǥ int m_nPixelConv; // pixel ë¨ì ì¢í int m_nPixelScan; // pixel ë¨ì ì¢í short m_nPixelSize; // ����ũ�� ---------------------------------PS short/*SERVER_DefectType*/ m_DefectType; // ���� Ÿ�� ---------------------------------DT short/*SERVER_DefectSubType*/ m_DefectSubType; // ������ ��������. short/*SERVER_DefectBDType*/ m_DefectBDType; // ���� Ÿ�� - Bright, Dark, Both short m_nPixelSize; // ê²°í¨í¬ê¸° ---------------------------------PS short/*SERVER_DefectType*/ m_DefectType; // ê²°í¨ íì ---------------------------------DT short/*SERVER_DefectSubType*/ m_DefectSubType; // ê²°í¨ì íì ìí. short/*SERVER_DefectBDType*/ m_DefectBDType; // ê²°í¨ íì - Bright, Dark, Both short m_sPixelWidth; // �ȼ����� ���� �ʺ� short m_sPixelHeight; // �ȼ����� ���� ���� short m_nLevelSrcMin; // ���� ��� Min -----------------------------SN short m_nLevelSrcMax; // ���� ��� Max -----------------------------SX short m_nLevelSrcAvg; // ���� ��� Avg -----------------------------SA short m_nLevelRefMin; // �ñ±³´ï¿½ï¿½ ��� Min -------------------------RN short m_nLevelRefMax; // �ñ±³´ï¿½ï¿½ ��� Max -------------------------RX short m_nLevelRefAvg; // �ñ±³´ï¿½ï¿½ ��� Avg -------------------------RA short m_nLevelDiffMin; // ���� Min ---------------------------------DN short m_nLevelDiffMax; // ���� Max ---------------------------------DX short m_nLevelDiffAvg; // ���� Avg ---------------------------------DA short m_sPixelWidth; // í½ì ë¨ì ê²°í¨ ëë¹ short m_sPixelHeight; // í½ì ë¨ì ê²°í¨ ëì´ short m_nLevelSrcMin; // ê²°í¨ ë°ê¸° Min -----------------------------SN short m_nLevelSrcMax; // ê²°í¨ ë°ê¸° Max -----------------------------SX short m_nLevelSrcAvg; // ê²°í¨ ë°ê¸° Avg -----------------------------SA short m_nLevelRefMin; // ë¹êµëì ë°ê¸° Min -------------------------RN short m_nLevelRefMax; // ë¹êµëì ë°ê¸° Max -------------------------RX short m_nLevelRefAvg; // ë¹êµëì ë°ê¸° Avg -------------------------RA short m_nLevelDiffMin; // ë¹êµì°¨ Min ---------------------------------DN short m_nLevelDiffMax; // ë¹êµì°¨ Max ---------------------------------DX short m_nLevelDiffAvg; // ë¹êµì°¨ Avg ---------------------------------DA int m_nDefectRScale; // �ȼ����� ���� ���� -------------------------RS short m_sThreshold; // ������ ������ ���� Threshold short m_sThresholdAvg; // ������ ������ ���� Threshold AVG short m_sDefectPeak; // ������ Peak. short m_sDefectLevel; // (DiffAvg - Th) BOE 8G ��û���� int m_nDefectRScale; // í½ì ë¨ì ê²°í¨ ëì´ -------------------------RS short m_sThreshold; // ê²°í¨ì ê²ì¶í ëì Threshold short m_sThresholdAvg; // ê²°í¨ì ê²ì¶í ëì Threshold AVG short m_sDefectPeak; // ê²°í¨ì Peak. short m_sDefectLevel; // (DiffAvg - Th) BOE 8G ìì²ì¬í int m_nPixelGlassStart; // Glass ���� �ȼ� int m_nPixelGlassStart; // Glass ìì í½ì short m_sDefectLoc; short m_sZoneClassPixelCount[16]; short m_sZonePixelCount[16]; // Zone�� ���� Pixel �� short m_sZoneValueMin[16]; // Zone�� ���� Min short m_sZoneValueMax[16]; // Zone�� ���� Max short m_sZoneValueAvg[16]; // Zone�� ���� Avg short m_sZonePixelCount[16]; // Zoneë³ ê²°í¨ Pixel ì short m_sZoneValueMin[16]; // Zoneë³ ê²°í¨ Min short m_sZoneValueMax[16]; // Zoneë³ ê²°í¨ Max short m_sZoneValueAvg[16]; // Zoneë³ ê²°í¨ Avg short m_sZonePixelPercent[16]; // --------------------------------------Z0~ZF //210127 CJH - Zone�� Source Gray �Է� short m_sZoneValueSrcMin[16]; // Zone�� Source Min short m_sZoneValueSrcMax[16]; // Zone�� Source Max short m_sZoneValueSrcAvg[16]; // Zone�� Source Avg //210127 CJH - Zoneë³ Source Gray ì ë ¥ short m_sZoneValueSrcMin[16]; // Zoneë³ Source Min short m_sZoneValueSrcMax[16]; // Zoneë³ Source Max short m_sZoneValueSrcAvg[16]; // Zoneë³ Source Avg int m_nUMOriginX; // um���� x��ǥ (��������) int m_nUMOriginY; // um���� y��ǥ (��������) int m_nUMCenterAlignX; // um���� X��ǥ (Glass Center ����, ������ ��) int m_nUMCenterAlignY; // um���� Y��ǥ (Glass Center ����, ������ ��) int m_nUMCenterX; // um���� X��ǥ (Glass Center ����, ������ ��) int m_nUMCenterY; // um���� Y��ǥ (Glass Center ����, ������ ��) int m_nUMSizeX; // um���� X ũ�� -----------------------------UX int m_nUMSizeY; // um���� Y ũ�� -----------------------------UY int m_nUMSize; // um���� ũ��. CRect m_RectUM; // ���� ���� ���� �簢��. int m_nUMOriginX; // umë¨ì xì¢í (ìì 기ì¤) int m_nUMOriginY; // umë¨ì yì¡°í (ìì 기ì¤) int m_nUMCenterAlignX; // umë¨ì Xì¢í (Glass Center 기ì¤, ì¼ë¼ì¸ë³´ì í) int m_nUMCenterAlignY; // umë¨ì Yì¢í (Glass Center 기ì¤, ì¼ë¼ì¸ë³´ì í) int m_nUMCenterX; // umë¨ì Xì¢í (Glass Center 기ì¤, ì¼ë¼ì¸ë³´ì ì ) int m_nUMCenterY; // umë¨ì Yì¢í (Glass Center 기ì¤, ì¼ë¼ì¸ë³´ì ì ) int m_nUMSizeX; // umë¨ì X í¬ê¸° -----------------------------UX int m_nUMSizeY; // umë¨ì Y í¬ê¸° -----------------------------UY int m_nUMSize; // umë¨ì í¬ê¸°. CRect m_RectUM; // ëí ì¼í° ê¸°ì¤ ì¬ê°í. short/*SERVER_DefectSizeType*/ m_DefectSizeType; // ���� ũ�� ����enum SERVER_DefectSizeType { SizeType_Unknown = 0, SizeType_Small, SizeType_Mid, SizeType_Large, SizeType_Huge, SizeType_Ultra }; short/*SERVER_DefectPeakType*/ m_DefectPeakType; // Peak�� ����. short/*Judgement*/ m_DefectJudgement; // ���� ����. BOOL m_bDefectCutoff; // �� ���� ����(TRUE= Cutoff, FALSE) short/*MAP16_DefectClass*/ m_DefectClass; // BOE Defect Class 16��� ���� int m_nPadRegionIdx; // PAD ���� ��� short/*SERVER_DefectSizeType*/ m_DefectSizeType; // ê²°í¨ í¬ê¸° ì¢ ë¥enum SERVER_DefectSizeType { SizeType_Unknown = 0, SizeType_Small, SizeType_Mid, SizeType_Large, SizeType_Huge, SizeType_Ultra }; short/*SERVER_DefectPeakType*/ m_DefectPeakType; // Peakì ì¢ ë¥. short/*Judgement*/ m_DefectJudgement; // ê²°í¨ íì . BOOL m_bDefectCutoff; // ì»· ì¤í ëí(TRUE= Cutoff, FALSE) short/*MAP16_DefectClass*/ m_DefectClass; // BOE Defect Class 16ë±ë¶ êµ¬ë¶ int m_nPadRegionIdx; // PAD ìì ì¸ë±ì¤ int m_nUMCellX; // �� ���� ���� x ��ǥ int m_nUMCellY; // �� ���� ���� y ��ǥ short m_nModelIdx; // �� ��° ���ΰ�? short m_nCellIdx; // ���° ���ΰ�? short m_nCellGate; // ���� Gate����(����� ���� ��) short m_nCellData; // ���� Data����(����� ���� ��) short m_nCellGateAlign; // ���� Gate����(����� ���� ��) short m_nCellDataAlign; // ���� Data����(����� ���� ��) int m_nUMCellX; // ì ìì ê¸°ì¤ x ì¢í int m_nUMCellY; // ì ìì ê¸°ì¤ y ì¢í short m_nModelIdx; // ëª ë²ì§¸ 모ë¸ì¸ê°? short m_nCellIdx; // ëªë²ì§¸ ì ì¸ê°? short m_nCellGate; // ì ë³ Gateë¼ì¸(ì¼ë¼ì¸ ë³´ì ì ) short m_nCellData; // ì ë³ Dataë¼ì¸(ì¼ë¼ì¸ ë³´ì ì ) short m_nCellGateAlign; // ì ë³ Gateë¼ì¸(ì¼ë¼ì¸ ë³´ì í) short m_nCellDataAlign; // ì ë³ Dataë¼ì¸(ì¼ë¼ì¸ ë³´ì í) int m_nUMShotX; // �� ���� X��ǥ int m_nUMShotY; // �� ���� Y��ǥ short m_nMaskDefectIdx; // �� Glass���� �߰ߵ� ����ũ���� ������ ���. short m_nShotIdx; // �뱤�� ��ȣ short m_nMatchShotCount; // ������ ����ũ ������ ��. short m_nMatchMaxSize; // ������ ����ũ �� ���� Å« ������ ũ��. int m_nUMShotX; // ì· ê¸°ì¤ Xì¢í int m_nUMShotY; // ì· ê¸°ì¤ Yì¢í short m_nMaskDefectIdx; // í Glassìì ë°ê²¬ë ë§ì¤í¬ê²°í¨ 묶ìì ì¸ë±ì¤. short m_nShotIdx; // ë ¸ê´ì· ë²í¸ short m_nMatchShotCount; // ëì¼í ë§ì¤í¬ ê²°í¨ì ì. short m_nMatchMaxSize; // ëì¼í ë§ì¤í¬ ì¤ ê°ì¥ í° ê²°í¨ì í¬ê¸°. short m_nRepeatCount; // ���Ӱ��Թ߰����� ������ǥ �ݺ��� short m_nRepeatCount; // ì°ìê²°í¨ë°ê²¬ìí ëì¼ì¢í ë°ë³µì short m_nMaskRepeatCount; int m_StackInfo; // Stack Flag BOOL m_bRealStack; // Stack ������ ���� TD(TRUE) ����, ���͸��� ���� TD(FALSE)������ �� �ִ�. short m_nStackStepCount; // Stack �� short m_nStackColorIdx; // Color�� �����ϴ� ���. BOOL m_bRealStack; // Stack 머ì§ì ìí TD(TRUE) ì¸ì§, íí°ë§ì ìí TD(FALSE)구ë¶í ì ìë¤. short m_nStackStepCount; // Stack ì short m_nStackColorIdx; // Color를 ì ííë ì¸ë±ì¤. //CString m_strStackStep[CFDEFECT_STACKCOUNT]; // Stack Step. char m_strStackFirst[60]; // Stack Step. //201221 CJH - �ִ� ������ 60bytes char m_strUnitID[16]; // ���־��̵� char m_strStackFirst[60]; // Stack Step. //201221 CJH - ìµë ì¬ì´ì¦ 60bytes char m_strUnitID[16]; // ì ëìì´ë int m_ClassificationType; // enum ClassificationType { ClassType_None= 0, ClassType_PI_Over= 1, ClassType_PI_Under= 2, ClassType_TFE_Circle= 3, ClassType_Bubble, ClassType_Scratch, ClassType_Particle}; Classification Type, PI�� TFE�� �߰� �з� �˰���� ���� ���. int m_nAtomWidth; // TFE �� �ʺ� int m_nAtomHeight; // TFE �� ���� short/*ReKind*/ m_DefectKind; // ���� ���� int m_ClassificationType; // enum ClassificationType { ClassType_None= 0, ClassType_PI_Over= 1, ClassType_PI_Under= 2, ClassType_TFE_Circle= 3, ClassType_Bubble, ClassType_Scratch, ClassType_Particle}; Classification Type, PIë TFEë± ì¶ê° ë¶ë¥ ìê³ ë¦¬ì¦ ì ì© ê²°ê³¼. int m_nAtomWidth; // TFE íµ ëë¹ int m_nAtomHeight; // TFE íµ ëì´ short/*ReKind*/ m_DefectKind; // ê²°í¨ ì¢ ë¥ char m_strDefectCode[32]; // Defect Code BOOL m_bMergeState; // Merge Status char m_strAoiImageName[256]; // Defect Image Name(CCD Image) int m_nDefectMerge; // ���� ������ ���� ���� int m_nDefectMerge; // íì¬ ëíì ë¨¸ì§ ì¬ë¶ int m_nPixelSizeOrigin; int m_nScratchRatio; int m_nDensity; // ���� ���� ������ ���� �е� [2017.8.2 bhs] int m_nDensity; // ìí ê²°í¨ êµ¬ë¶ì ìí ë°ë [2017.8.2 bhs] char m_strDefectName[16]; char m_strDefectType[16]; @@ -491,27 +455,19 @@ double m_dScanResolution; double m_dConvResolution; int m_nAngle; // ���� int m_nMajor; // ���� ����(Long) int m_nMinor; // ���� ����(Short) int m_nCompact; // Blob ������ �������� �ϴ� ���� ���̿� Blob ������ ���� int m_nThickness; // Blob ���̿� ������ ���� (Area / Major) int m_nAngle; // ê°ë int m_nMajor; // ì¥ì¶ 길ì´(Long) int m_nMinor; // ë¨ì¶ 길ì´(Short) int m_nCompact; // Blob ì¥ì¶ì ì§ë¦ì¼ë¡ íë ìì ëì´ì Blob ëì´ì ë¹ì¨ int m_nThickness; // Blob ëì´ì ì¥ì¶ì ë¹ì¨ (Area / Major) short m_nHliLevelIdx; // �� ��° ����(�)�ΰ�? int m_nHliLayers; // �ش���Կ� ���Ե� ���̾� bitó�� short m_nHliLevelIdx; // ëª ë²ì§¸ ë 벨(ì±ë)ì¸ê°? int m_nHliLayers; // í´ë¹ê²°í¨ì í¬í¨ë ë ì´ì´ bitì²ë¦¬ BOOL m_bShrinked; //210323 CJH - Frame Shrink ���� �߰� char m_strAoiImagePath[255]; char m_strReviewImagePath[255]; int m_nAlignRectLeft; int m_nAlignRectTop; int m_nAlignRectBottom; int m_nAlignRectRight; BOOL m_bShrinked; //210323 CJH - Frame Shrink ì ë³´ ì¶ê° //���� ���� ���� [������ 2019/1/19] //리뷰 ëí ì ë³´ [ê¹íí 2019/1/19] _grmDefectReviewData m_ReviewDefect; }; @@ -535,8 +491,6 @@ grcWriteBin = 201, grcReadBin = 202, grcReviewWriteBIn = 301, grcGlassRawCommand }; @@ -556,7 +510,7 @@ struct _grmDitMemInfo { //���� �޸� ������ ���� ���� [������ 2018/11/12] //ê³µì ë©ëª¨ë¦¬ ìì±í ê³µê° ê²°ì [ê¹íí 2018/11/12] size_t m_nGlassRawDataSize; int m_nGlassMaxDataNum; int m_nBlockMaxDataNum; @@ -564,7 +518,7 @@ int m_nDefectMaxDataNum; int m_nStackMaxDataNum; //Char ���� �ڷᰡ �ִ� ���� ��ġ [������ 2018/11/12] //Char ê¸°ì¤ ìë£ê° ìë ìì ìì¹ [ê¹íí 2018/11/12] int m_nGlassDataPoint; int m_nBlockDataPoint; int m_nCellDataPoint; @@ -580,8 +534,8 @@ struct _grmDitGlassRawInfo : public _grmDitMemInfo, public _grmDitCommand { size_t m_nGlassLoadingCount; emAOIProcStep m_ClientProcStep; //AOI, Review�� ���� ��� emAOIProcStep m_ServerProcStep; //GlassRaw Messenger(Server)�� ó�� �Ϸ� �� ��� emAOIProcStep m_ClientProcStep; //AOI, Reviewê° ë³´ë¸ ëª ë ¹ emAOIProcStep m_ServerProcStep; //GlassRaw Messenger(Server)ê° ì²ë¦¬ ìë£ í ëª ë ¹ }; class CgrmGlassRawData @@ -668,7 +622,7 @@ { if(pInfo == NULL || pData == NULL) return FALSE; if(1) //new type //�޸� �� ���� ũ�⿡ ������� if(1) //new type //ë©ëª¨ë¦¬ ì´ ê³µê° í¬ê¸°ì ìê´ìì´ { //if(pInfo->m_nGlassRawDataSize != m_MemInfo.m_nGlassRawDataSize) return FALSE; ReviewSystem/ReviewSystem/ReviewProcessor.cpp
@@ -233,11 +233,6 @@ m_strSaveImageUploadPath = strImagePath; } void CReviewProcessor::SetReviewImagePath(const CString& strImagePath) { m_strSaveImageReviewPath = strImagePath; } void CReviewProcessor::GetSaveImageBasePath( CString& strPath ) { strPath = m_strSaveImageBasePath; @@ -246,11 +241,6 @@ CString CReviewProcessor::GetUploadImagePath() { return m_strSaveImageUploadPath; } CString CReviewProcessor::GetReviewUploadImagePath() { return m_strSaveImageReviewPath; } void CReviewProcessor::SetRTMSUploadImagePath(const CString& strImagePath) ReviewSystem/ReviewSystem/ReviewProcessor.h
@@ -174,8 +174,6 @@ void SetUploadImagePath(const CString& strImagePath); void SetRTMSUploadImagePath(const CString& strImagePath); void SetReviewImagePath(const CString& strReviewImagePath); //Planì§íê° Count í기 void SetPlanReviewCount(int ncount) { nPlanReviewCount = ncount; @@ -198,8 +196,6 @@ void GetSaveImageBasePath(CString& strPath); CString GetUploadImagePath(); CString GetRTMSUploadImagePath(); CString GetReviewUploadImagePath(); // Cell function @@ -269,7 +265,6 @@ // image path CString m_strSaveImageBasePath; CString m_strSaveImageUploadPath; CString m_strSaveImageReviewPath; CString m_strInspectImagePath; CString m_strRTMSImagePath; int m_nReviewCount; // [2017:5:21]-[WEZASW] : Review ì´ë¯¸ì§ ë¤ì´ë° 룰ì ìí SequenceNo ì¹´ì´í¸(리뷰 í¬ì¸í¸ ìì) ReviewSystem/ReviewSystem/ReviewProcessor_CPJT.cpp
@@ -88,7 +88,7 @@ int nEndResultIdx = pReviewResult->GetEndSReviewResultIndex(); // ����� ���� ������ ��� ���� Ŭ��.. // ì¸ë±ì¤ê° íì¬ ë§ì§ë§ ì¸ë±ì¤ ë³´ë¤ í´ì.. if (nCurResultIdx > nEndResultIdx) { LeaveCriticalSection(&m_csUserCriticalSection); @@ -97,7 +97,7 @@ } // ���� ��������� ���� // íì¬ ê²°ê³¼ë°ì´í° ì ì¥ wsiResult.nWsi_ResultIndex = measureResut.nResultIndex; wsiResult.nResultCode = measureResut.nResultCode; @@ -138,8 +138,8 @@ // g_pLog->DisplayMessage(_T("[ReviewProcessor]JugementR [%d] JugementG [%d] JugementB [%d]"), wsiResult.nJugementR, wsiResult.nJugementG, wsiResult.nJugementB); // g_pLog->DisplayMessage(_T("[ReviewProcessor]RZoneHeight [%.03lf] GZoneHeight [%.03lf] BZoneHeight [%.03lf]"), wsiResult.dRZoneHeight, wsiResult.dGZoneHeight, wsiResult.dBZoneHeight); // wsiResult.�߰� �ϼ���= measureResut.nMultiShot; // wsiResult.�߰� �ϼ���= measureResut.nCurrentShotNumber; // wsiResult.ì¶ê° íì¸ì= measureResut.nMultiShot; // wsiResult.ì¶ê° íì¸ì= measureResut.nCurrentShotNumber; break; case 3: //BANK wsiResult.dRZoneHeight = measureResut.dRZoneHeight; @@ -147,14 +147,14 @@ wsiResult.dBZoneHeight = measureResut.dBZoneHeight; wsiResult.dDefectHeight = measureResut.dDefectHeight; wsiResult.nWsi_DefectType = measureResut.nDefectType; // wsiResult.�߰� �ϼ���= measureResut.nMultiShot; // wsiResult.�߰� �ϼ���= measureResut.nCurrentShotNumber; // wsiResult.ì¶ê° íì¸ì= measureResut.nMultiShot; // wsiResult.ì¶ê° íì¸ì= measureResut.nCurrentShotNumber; break; case 4: //CS wsiResult.dCSHeight = measureResut.dCSHeight; wsiResult.dDefectHeight = measureResut.dDefectHeight; wsiResult.nWsi_DefectType = measureResut.nDefectType; // wsiResult.�߰� �ϼ���= measureResut.nMultiShot; // wsiResult.ì¶ê° íì¸ì= measureResut.nMultiShot; break; } @@ -163,7 +163,7 @@ memcpy(wsiResult.pWsi_ResultData, measureResut.pResultData, sizeof(wsiResult.pWsi_ResultData)); // ��� ������ �߰� // ê²°ê³¼ ë°ì´í° ì¶ê° SReviewResult *pProcessResult = NULL; if (pGlassResult->SetWsiResultData(nModuleIndex, nCurResultIdx, wsiResult, nGlassPosX, nGlassPosY, nMotorPosX, nMotorPosY, dTime)) { @@ -173,10 +173,10 @@ pProcessResult = pReviewResult->GetSReviewResult(nCurResultIdx); } // ���� ������, ���� ������� ������ ���� // ì ì¥ ì±ê³µì, 리뷰 íë¡ì¸ìì í¬ì¸í° ì ë¬ if (pProcessResult) { // ó�� ������ ���� // ì²ë¦¬ ì°ë ë ìí if (AddReviewProcessData(pProcessResult)==1) { g_pLog->DisplayMessage(_T("[ReviewProcessor]Add Process Data module[%d] result[%d]"), nModuleIndex, nCurResultIdx); @@ -192,7 +192,7 @@ LeaveCriticalSection(&m_csUserCriticalSection); // ��� ����. // ê²°ê³¼ ê°±ì . m_pRP2P->IRP2P_UpdateReviewResult(nModuleIndex, pGlassResult); return; @@ -238,7 +238,7 @@ int nEndResultIdx = pReviewResult->GetEndSReviewResultIndex(); // ����� ���� ������ ��� ���� Ŭ��.. // ì¸ë±ì¤ê° íì¬ ë§ì§ë§ ì¸ë±ì¤ ë³´ë¤ í´ì.. if (nCurResultIdx > nEndResultIdx) { LeaveCriticalSection(&m_csUserCriticalSection); @@ -246,14 +246,14 @@ g_pLog->DisplayMessage(_T("[ReviewProcessor]SetWsiResultData module[%d] point[%d] result[%d]"), nModuleIndex, measureResut.nResultIndex, nCurResultIdx); } // ���� ��������� ���� // íì¬ ê²°ê³¼ë°ì´í° ì ì¥ wsiUserResult.nWsi_ResultCode = measureResut.nResultCode; wsiUserResult.nWsi_Type = measureResut.nResultType; wsiUserResult.nWsi_SlopeWarn = measureResut.nXSlopeWarn; memcpy(wsiUserResult.pWsi_ResultData, measureResut.pResultData, sizeof(wsiUserResult.pWsi_ResultData)); // ��� ������ �߰� // ê²°ê³¼ ë°ì´í° ì¶ê° SReviewResult *pProcessResult = NULL; if (pGlassResult->SetUserWsiResultData(nModuleIndex, nCurResultIdx, wsiUserResult, nGlassPosX, nGlassPosY, nMotorPosX, nMotorPosY, dTime)) { @@ -263,10 +263,10 @@ pProcessResult = pReviewResult->GetSReviewResult(nCurResultIdx); } // ���� ������, ���� ������� ������ ���� // ì ì¥ ì±ê³µì, 리뷰 íë¡ì¸ìì í¬ì¸í° ì ë¬ if (pProcessResult) { // ó�� ������ ���� // ì²ë¦¬ ì°ë ë ìí if (AddReviewProcessData(pProcessResult)==1) { g_pLog->DisplayMessage(_T("[ReviewProcessor]Add Process Data module[%d] result[%d]"), nModuleIndex, nCurResultIdx); @@ -282,7 +282,7 @@ LeaveCriticalSection(&m_csUserCriticalSection); // ��� ����. // ê²°ê³¼ ê°±ì . m_pRP2P->IRP2P_UpdateReviewResult(nModuleIndex, pGlassResult); return; @@ -337,7 +337,7 @@ int nEndResultIdx = pReviewResult->GetEndSReviewResultIndex(); // ����� ���� ������ ��� ���� Ŭ��.. // ì¸ë±ì¤ê° íì¬ ë§ì§ë§ ì¸ë±ì¤ ë³´ë¤ í´ì.. if (nCurResultIdx > nEndResultIdx) { LeaveCriticalSection(&m_csUserCriticalSection); @@ -345,7 +345,7 @@ g_pLog->DisplayMessage(_T("[ReviewProcessor]SetWsiMultiShotResultData module[%d] point[%d] result[%d]"), nModuleIndex, measureResut.nResultIndex, nCurResultIdx); } // ���� ��������� ���� // íì¬ ê²°ê³¼ë°ì´í° ì ì¥ wsiResult.nWsi_ResultCode = measureResut.nResultCode; wsiResult.nWsi_Type = measureResut.nResultType; wsiResult.nWsi_SlopeWarn = measureResut.nXSlopeWarn; @@ -353,7 +353,7 @@ memcpy(wsiResult.pWsi_ResultData, measureResut.pResultData, sizeof(wsiResult.pWsi_ResultData)); // ��� ������ �߰� // ê²°ê³¼ ë°ì´í° ì¶ê° SReviewResult *pProcessResult = NULL; if (pGlassResult->SetWsiResultData(nModuleIndex, nCurResultIdx, wsiResult, nGlassPosX, nGlassPosY, nMotorPosX, nMotorPosY, dTime)) { @@ -363,10 +363,10 @@ pProcessResult = pReviewResult->GetSReviewResult(nCurResultIdx); } // ���� ������, ���� ������� ������ ���� // ì ì¥ ì±ê³µì, 리뷰 íë¡ì¸ìì í¬ì¸í° ì ë¬ if (pProcessResult) { // ó�� ������ ���� // ì²ë¦¬ ì°ë ë ìí if (AddReviewProcessData(pProcessResult) == 1) { g_pLog->DisplayMessage(_T("[ReviewProcessor]Add Process Data module[%d] result[%d]"), nModuleIndex, nCurResultIdx); @@ -382,7 +382,7 @@ LeaveCriticalSection(&m_csUserCriticalSection); // ��� ����. // ê²°ê³¼ ê°±ì . m_pRP2P->IRP2P_UpdateReviewResult(nModuleIndex, pGlassResult); return; @@ -457,7 +457,7 @@ int nStartResultIdx = pReviewResult->GetStartSReviewResultIndex(); int nEndResultIdx = pReviewResult->GetEndSReviewResultIndex(); // ����� ���� ������ ��� ���� Ŭ��.. // ì¸ë±ì¤ê° íì¬ ë§ì§ë§ ì¸ë±ì¤ ë³´ë¤ í´ì.. if (nCurResultIdx > nEndResultIdx) { LeaveCriticalSection(&m_csUserCriticalSection); @@ -465,7 +465,7 @@ g_pLog->DisplayMessage(_T("[ReviewProcessor]SetReviewResultData module[%d] point[%d] result[%d]"), nModuleIndex, nResultIndex, nCurResultIdx); } // ���� ����̹��� ���� // íì¬ ê²°ê³¼ì´ë¯¸ì§ ì ì¥ SReviewResult *pProcessResult = NULL; switch(GetReviewProcessStatus()) { @@ -509,10 +509,10 @@ break; } // ���� ������, ���� ������� ������ ���� // ì ì¥ ì±ê³µì, 리뷰 íë¡ì¸ìì í¬ì¸í° ì ë¬ if (pProcessResult) { // ó�� ������ ���� // ì²ë¦¬ ì°ë ë ìí if (AddReviewProcessData(pProcessResult)==1) { g_pLog->DisplayMessage(_T("[ReviewProcessor]Add Process Data module[%d] result[%d]"), nModuleIndex, nCurResultIdx); @@ -527,8 +527,8 @@ } LeaveCriticalSection(&m_csUserCriticalSection); //���� ��� ����������Ʈ ������ ���ع����� �Ʒ� ������ ��Ÿ�� �ٽ� ������ǥ �Ƚ��� // ��ȣó�� �ʿ��� �̰� ���� //ë§ì½ ì´ë í쪽ì´í¬ì¸í¸ ì§íì ë¤í´ë²ë¦¬ë©´ ìë 구문ì ìíì ë¤ì 모í°ì¢í ìì´ì¤ // ì í¸ì²ë¦¬ íìí¨ ì´ê±° ã±ã± if (nCurResultIdx + 1== pReviewResult->GetSReviewResultCount()) { if (nModuleIndex == 0) @@ -542,7 +542,7 @@ if (bLeftGantryReviewDone&&bRightGantryReviewDone) { ::Sleep(3000); // ����̴� �ʼ���. ������ ���� ����. ::Sleep(3000); // ëë ì´ë íìì. ìì¼ë©´ ëì ìí¨. g_pLog->DisplayMessage(_T("[ReviewProcessor]RemainReview Started module[%d]"), nModuleIndex); CSequenceProcessor* pSequenceProcessor = m_pRP2P->IRP2P_GetSequenceProcessor(); switch (GetReviewProcessStatus()) @@ -567,13 +567,13 @@ } else if(m_pRP2P->IRP2P_Recipe_GetRsRcpReviewInfo()->GetRcpSchedulingInfo()->GetSingleGantryPath()>0) { //20210302 �̱� ��Ʈ�� ���� ���� ������ ��� ��Ʈ���� �Ϸ�� ���¿��� //������ �ؾߵ����� Review ���� Count üũ �ϴ� ������� �Ѱ�Ʈ�� ���� 200������ ���ߴ� ���� �߻� //�׷��� �̱� ��Ʈ�� ���� ����ó�� �Ͽ� �����ϵ��� �ٲ�ߵ� CHM //20210302 ì±ê¸ ê²í¸ë¦¬ ì¬ì©ì ëª¨í° ë¡ì§ì ëê°ì ê²í¸ë¦¬ê° ìë£ë ìíìì //ììì í´ì¼ë¨ì¼ë¡ Review ìì Count ì²´í¬ íë 기ë¥ì¼ë¡ íê²í¸ë¦¬ ì¬ì©ì 200ê°ìì ë©ì¶ë íì ë°ì //ê·¸ëì ì±ê¸ ê²í¸ë¦¬ ì¬ì©ì ìì¸ì²ë¦¬ íì¬ ëìíëë¡ ë°ê¿ì¼ë¨ CHM g_pLog->DisplayMessage(_T("[ReviewProcessor]Single GantryPath Use"), nModuleIndex); if (bLeftGantryReviewDone || bRightGantryReviewDone) { ::Sleep(3000); // ����̴� �ʼ���. ������ ���� ����. ::Sleep(3000); // ëë ì´ë íìì. ìì¼ë©´ ëì ìí¨. g_pLog->DisplayMessage(_T("[ReviewProcessor]RemainReview Started module[%d]"), nModuleIndex); CSequenceProcessor* pSequenceProcessor = m_pRP2P->IRP2P_GetSequenceProcessor(); switch (GetReviewProcessStatus()) @@ -601,7 +601,7 @@ } // ������ ����Ʈ���� �԰�, ������ ����� ���� ������... // ë§ì§ë§ í¬ì¸í¸ê¹ì§ ìê³ , 리뷰í ê²°ê³¼ê° ë¨ì ìì¼ë©´... if(nCurResultIdx==nEndResultIdx && nCurResultIdx+1 < pReviewResult->GetSReviewResultCount()) { @@ -624,8 +624,8 @@ pReviewResult->SetStartSReviewResultIndex(nStartResultIdx); pReviewResult->SetEndSReviewResultIndex(nEndResultIdx); // ������ ����Ʈ ���� ��������. ::Sleep(3000); // ����̴� �ʼ���. ������ ���� ����. // ëë¨¸ì§ í¬ì¸í¸ 리뷰 ìííì. ::Sleep(3000); // ëë ì´ë íìì. ìì¼ë©´ ëì ìí¨. if (bLeftGantryReviewDone&&bRightGantryReviewDone) { @@ -685,7 +685,7 @@ } } // ��� ����. // ê²°ê³¼ ê°±ì . m_pRP2P->IRP2P_UpdateReviewResult(nModuleIndex, pGlassResult, m_nReviewPlanIndex); return; @@ -729,7 +729,7 @@ { if (m_pRP2P==NULL) return 0; // ������ ����Ʈ���� Ȯ�� �� PCControl ReviewEnd ���� // ë§ì§ë§ í¬ì¸í¸ì¸ì§ íì¸ í PCControl ReviewEnd ì ì¡ CGlassResult *pGlassResult = m_pRP2P->IRP2P_GetCurrentGlassResult(); CSequenceProcessor* pSequenceProcessor = m_pRP2P->IRP2P_GetSequenceProcessor(); if (pGlassResult==NULL || pSequenceProcessor==NULL) @@ -737,7 +737,7 @@ return 1; } // ����Ȯ�� // ì¡°ê±´íì¸ if (pGlassResult->CheckReviewComplete()) { // check motor ready! @@ -763,7 +763,7 @@ { if (m_pRP2P==NULL) return 0; // ������ ����Ʈ���� Ȯ�� �� PCControl ReviewEnd ���� // ë§ì§ë§ í¬ì¸í¸ì¸ì§ íì¸ í PCControl ReviewEnd ì ì¡ CGlassResult *pGlassResult = m_pRP2P->IRP2P_GetCurrentGlassResult(); CSequenceProcessor* pSequenceProcessor = m_pRP2P->IRP2P_GetSequenceProcessor(); if (pGlassResult==NULL || pSequenceProcessor==NULL) @@ -771,7 +771,7 @@ return 1; } // ����Ȯ�� // ì¡°ê±´íì¸ if (pGlassResult->CheckUserComplete()) { m_pRP2P->IRP2P_DisplayMessage(_T("User Last Point Complete! ")); @@ -796,7 +796,7 @@ { if (m_pRP2P==NULL) return 0; // ������ ����Ʈ���� Ȯ�� �� PLC ReviewEnd ���� // ë§ì§ë§ í¬ì¸í¸ì¸ì§ íì¸ í PLC ReviewEnd ì ì¡ CGlassResult *pGlassResult = m_pRP2P->IRP2P_GetCurrentGlassResult(); CSequenceProcessor* pSequenceProcessor = m_pRP2P->IRP2P_GetSequenceProcessor(); if (pGlassResult==NULL || pSequenceProcessor==NULL) @@ -804,7 +804,7 @@ return 1; } // ����Ȯ�� // ì¡°ê±´íì¸ if (pGlassResult->CheckReflowComplete()) { m_pRP2P->IRP2P_DisplayMessage(_T("Reflow Last Point Complete! ")); @@ -829,7 +829,7 @@ { if (m_pRP2P==NULL) return 0; // ������ ����Ʈ���� Ȯ�� �� PCControl ReviewEnd ���� // ë§ì§ë§ í¬ì¸í¸ì¸ì§ íì¸ í PCControl ReviewEnd ì ì¡ CGlassResult *pGlassResult = m_pRP2P->IRP2P_GetCurrentGlassResult(); CSequenceProcessor* pSequenceProcessor = m_pRP2P->IRP2P_GetSequenceProcessor(); if (pGlassResult==NULL || pSequenceProcessor==NULL) @@ -837,7 +837,7 @@ return 1; } // ����Ȯ�� // ì¡°ê±´íì¸ if (pGlassResult->CheckWsiComplete()) { m_pRP2P->IRP2P_DisplayMessage(_T("Wsi Last Point Complete! ")); @@ -863,7 +863,7 @@ g_pLog->DisplayMessage(_T("PostProcessMeasureResult[%d]"),nThreadIdx); if (m_pRP2P==NULL) return 0; // ������ ����Ʈ���� Ȯ�� �� PCControl ReviewEnd ���� // ë§ì§ë§ í¬ì¸í¸ì¸ì§ íì¸ í PCControl ReviewEnd ì ì¡ CGlassResult *pGlassResult = m_pRP2P->IRP2P_GetCurrentGlassResult(); CSequenceProcessor* pSequenceProcessor = m_pRP2P->IRP2P_GetSequenceProcessor(); if (pGlassResult==NULL || pSequenceProcessor==NULL) @@ -871,7 +871,7 @@ return 1; } // ����Ȯ�� // ì¡°ê±´íì¸ if (pGlassResult->CheckMeasureComplete()) { m_pRP2P->IRP2P_DisplayMessage(_T("Measure Last Point Complete! ")); @@ -900,7 +900,7 @@ { if (m_pRP2P==NULL) return 0; // ������ ����Ʈ���� Ȯ�� �� PCControl ReviewEnd ���� // ë§ì§ë§ í¬ì¸í¸ì¸ì§ íì¸ í PCControl ReviewEnd ì ì¡ CGlassResult *pGlassResult = m_pRP2P->IRP2P_GetCurrentGlassResult(); CSequenceProcessor* pSequenceProcessor = m_pRP2P->IRP2P_GetSequenceProcessor(); if (pGlassResult==NULL || pSequenceProcessor==NULL) @@ -908,7 +908,7 @@ return 1; } // ����Ȯ�� // ì¡°ê±´íì¸ if (pGlassResult->CheckWsiReflowComplete()) { m_pRP2P->IRP2P_DisplayMessage(_T("Wsi Reflow Last Point Complete! ")); @@ -932,7 +932,7 @@ { if (m_pRP2P==NULL) return 0; // ������ ����Ʈ���� Ȯ�� �� PCControl ReviewEnd ���� // ë§ì§ë§ í¬ì¸í¸ì¸ì§ íì¸ í PCControl ReviewEnd ì ì¡ CGlassResult *pGlassResult = m_pRP2P->IRP2P_GetCurrentGlassResult(); CSequenceProcessor* pSequenceProcessor = m_pRP2P->IRP2P_GetSequenceProcessor(); if (pGlassResult==NULL || pSequenceProcessor==NULL) @@ -940,7 +940,7 @@ return 1; } // ����Ȯ�� // ì¡°ê±´íì¸ if (pGlassResult->CheckWsiUserComplete()) { m_pRP2P->IRP2P_DisplayMessage(_T("Wsi Last Point Complete! ")); @@ -965,7 +965,7 @@ { if (m_pRP2P == NULL) return 0; // ������ ����Ʈ���� Ȯ�� �� PCControl ReviewEnd ���� // ë§ì§ë§ í¬ì¸í¸ì¸ì§ íì¸ í PCControl ReviewEnd ì ì¡ CGlassResult *pGlassResult = m_pRP2P->IRP2P_GetCurrentGlassResult(); CSequenceProcessor* pSequenceProcessor = m_pRP2P->IRP2P_GetSequenceProcessor(); if (pGlassResult == NULL || pSequenceProcessor == NULL) @@ -973,7 +973,7 @@ return 1; } // ����Ȯ�� // ì¡°ê±´íì¸ if (pGlassResult->CheckWsiMultiShotComplete()) { m_pRP2P->IRP2P_DisplayMessage(_T("WsiMultiShot Last Point Complete! ")); @@ -1138,23 +1138,23 @@ return ReviewResult_Process_Fail; } // Snap �ð� ����. // Snap ìê° ì ì¥. CTime snapTime = CTime::GetCurrentTime(); pReviewResult->strSnapTime.Format(_T("%04d%02d%02d%02d%02d%02d"), snapTime.GetYear(), snapTime.GetMonth(), snapTime.GetDay(), snapTime.GetHour(), snapTime.GetMinute(), snapTime.GetSecond()); // snap_time // ���� ���ε� �̹��� ���� �̸� ����� // 리뷰 ì ë¡ë ì´ë¯¸ì§ íì¼ ì´ë¦ ë§ë¤ê¸° CString strImageFileName = _T(""); if (MakeReviewImageFileName(pReviewResult)==FALSE) { } //������� ���� �޸� ���� �̹��� �̸� �� ��ǥ ä���ֱ� //ê²°ê³¼íì¼ ê³µì ë©ëª¨ë¦¬ 리뷰 ì´ë¯¸ì§ ì´ë¦ ë° ì¢í ì±ì주기 if(!UpdateMemoryReviewPlan(pReviewResult)) m_pRP2P->IRP2P_DisplayMessage(_T("[ReviewPlan] Memory Update Fail!! DefectIdx : %d"), pReviewResult->nDefectidx2); // ���� �̹��� ���� ���� �̸� // ë¡ì»¬ ì´ë¯¸ì§ ì ì¥ íì¼ ì´ë¦ pReviewResult->strImgFileName = m_strSaveImageBasePath + _T("\\") +pReviewResult->strImgFileName; pReviewResult->nOpticType = 1; @@ -1178,7 +1178,7 @@ // UINT64 nSize = SaveReviewImage(&uploadImage, strPath, m_nReviewImageSize, m_nReviewImageQuality, m_nReviewImageStep); //if (nSize > 0) // m_pRP2P->IRP2P_DisplayMessage(_T("Backup Review Image Save Success! Size: %d byte [%s]"), nSize, pReviewResult->strUploadImgFileName); // ���ε� �̹��� ��� ���� 20190917 chm // ì ë¡ë ì´ë¯¸ì§ ê²½ë¡ ìì 20190917 chm strPath.Format(_T("%s\\%s"), m_strSaveImageUploadPath, pReviewResult->strUploadImgFileName); nSize = SaveReviewImage(&uploadImage, strPath, m_nReviewImageSize, m_nReviewImageQuality, m_nReviewImageStep); m_pRP2P->IRP2P_DisplayMessage(_T("Backup Review Image Save Success! Size: %d byte [%s]"), nSize, strPath); @@ -1193,13 +1193,13 @@ { m_pRP2P->IRP2P_DisplayMessage(_T("RTMS Review Image Save Fail [%s] index[%d]"), strRTMSPath, pReviewResult->nDefectIdx); } else m_pRP2P->IRP2P_DisplayMessage(_T("RTMS Review Image Save Success! Size: %d byte [%s] index[%d]"), nSize, strRTMSPath, pReviewResult->nDefectIdx); //taek 210128 �ӵ� ������ �ӽ÷� �α� ������ ���� else m_pRP2P->IRP2P_DisplayMessage(_T("RTMS Review Image Save Success! Size: %d byte [%s] index[%d]"), nSize, strRTMSPath, pReviewResult->nDefectIdx); //taek 210128 ìë 문ì ë¡ ììë¡ ë¡ê·¸ ë¨ê¸°ì§ ìì } if (nSize > 0) { int aoiindex = CDitGlassRawClient::GetInstance()->GetDefectData(pReviewResult->nDefectidx2)->m_nDefectIdx; m_pRP2P->IRP2P_DisplayMessage(_T("Upload Review Image Save Success! Size: %d byte [%s] index[%d] AOI NO[%d]"), nSize, strRTMSPath, pReviewResult->nDefectIdx, aoiindex); //taek 210128 �ӵ� ������ �ӽ÷� �α� ������ ���� m_pRP2P->IRP2P_DisplayMessage(_T("Upload Review Image Save Success! Size: %d byte [%s] index[%d] AOI NO[%d]"), nSize, strRTMSPath, pReviewResult->nDefectIdx, aoiindex); //taek 210128 ìë 문ì ë¡ ììë¡ ë¡ê·¸ ë¨ê¸°ì§ ìì //m_pRP2P->IRP2P_DisplayMessage(_T("Upload Review Image Save Success! Size: %d byte [%s]"), nSize, pReviewResult->strUploadImgFileName); } else @@ -1235,7 +1235,7 @@ const CRsRcpReviewInfo* psRcpReviewInfo = m_pRP2P->IRP2P_Recipe_GetRsRcpReviewInfo(); if(psRcpReviewInfo== NULL) m_pRP2P->IRP2P_DisplayMessage(_T("RcpReviewInfo is NULL")); if(psRcpReviewInfo->m_bDefocusUse) //190819chm ����Ŀ�� �˶� ��� if(psRcpReviewInfo->m_bDefocusUse) //190819chm ëí¬ì»¤ì¤ ìë ì¬ì© { if(pReviewResult->nLocation == DefectLoc_ASG || pReviewResult->nLocation == DefectLoc_PAD || pReviewResult->nLocation == DefectLoc_C2C) { @@ -1337,12 +1337,12 @@ return ReviewResult_Process_Fail; } // Snap �ð� ����. // Snap ìê° ì ì¥. CTime snapTime = CTime::GetCurrentTime(); pReviewResult->strSnapTime.Format(_T("%04d%02d%02d%02d%02d%02d"), snapTime.GetYear(), snapTime.GetMonth(), snapTime.GetDay(), snapTime.GetHour(), snapTime.GetMinute(), snapTime.GetSecond()); // snap_time // ���� ���ε� �̹��� ���� �̸� ����� // 리뷰 ì ë¡ë ì´ë¯¸ì§ íì¼ ì´ë¦ ë§ë¤ê¸° CString strImageFileName = _T(""); if (MakeUserImageFileName(pReviewResult)==FALSE) { @@ -1355,7 +1355,7 @@ m_pRP2P->IRP2P_DisplayMessage(_T("[UserPlan] Memory Update Fail!! DefectIdx : %d"), pReviewResult->nDefectidx2); //// ���� �̹��� ���� ���� �̸� //// ë¡ì»¬ ì´ë¯¸ì§ ì ì¥ íì¼ ì´ë¦ //strImageFileName.Format(_T("ModuleIdx[%d]_PointIdx[%d]_Zoom[%d]"), pReviewResult->nModuleIdx, pReviewResult->nResultIdx, pReviewResult->nZoomIdx); //pReviewResult->strImgFileName = strImageFileName; @@ -1374,10 +1374,10 @@ UINT64 nSize = SaveReviewImage(&uploadImage, strPath, m_nReviewImageSize, m_nReviewImageQuality, m_nReviewImageStep); m_pRP2P->IRP2P_DisplayMessage(_T("Upload Review Image Save Success! Size: %d byte"), nSize); //uploadImage.SaveImage(strPath, 40); // È�� 60% 150k //uploadImage.SaveImage(strPath, 40); // íì§ 60% 150k if(GetReviewProcessStatus() == ReviewProcessStatus_UserStart) { // ���ε� �̹��� ��� ���� 20190917 chm // ì ë¡ë ì´ë¯¸ì§ ê²½ë¡ ìì 20190917 chm //strPath.Format(_T("%s\\%s\\%s"), m_strSaveImageUploadPath, m_strGlassID, pReviewResult->strUploadImgFileName); strPath.Format(_T("%s\\%s"), m_strSaveImageUploadPath, pReviewResult->strUploadImgFileName); nSize = SaveReviewImage(&uploadImage, strPath, m_nReviewImageSize, m_nReviewImageQuality, m_nReviewImageStep); @@ -1399,7 +1399,7 @@ const CRsRcpReviewInfo* psRcpReviewInfo = m_pRP2P->IRP2P_Recipe_GetRsRcpReviewInfo(); if(psRcpReviewInfo== NULL) m_pRP2P->IRP2P_DisplayMessage(_T("RcpReviewInfo is NULL")); if(psRcpReviewInfo->m_bDefocusUse) //190819chm ����Ŀ�� �˶� ��� if(psRcpReviewInfo->m_bDefocusUse) //190819chm ëí¬ì»¤ì¤ ìë ì¬ì© { if(pReviewResult->nLocation == DefectLoc_ASG || pReviewResult->nLocation == DefectLoc_PAD || pReviewResult->nLocation == DefectLoc_C2C) { @@ -1457,7 +1457,7 @@ int nTestMode = FALSE; //�ù� �������� �̹��� ���� ���� 20190827 chm //ì뮬 ëë¦´ë ¤ë ì´ë¯¸ì§ íì¼ ì í 20190827 chm if(nTestMode){ Sleep(500); CString strPathName; @@ -1479,12 +1479,12 @@ return ReviewResult_Process_Fail; } // Snap �ð� ����. // Snap ìê° ì ì¥. CTime snapTime = CTime::GetCurrentTime(); pReviewResult->strSnapTime.Format(_T("%04d%02d%02d%02d%02d%02d"), snapTime.GetYear(), snapTime.GetMonth(), snapTime.GetDay(), snapTime.GetHour(), snapTime.GetMinute(), snapTime.GetSecond()); // snap_time // ���� ���ε� �̹��� ���� �̸� ����� // 리뷰 ì ë¡ë ì´ë¯¸ì§ íì¼ ì´ë¦ ë§ë¤ê¸° CString strImageFileName = _T(""); if (MakeReflowImageFileName(pReviewResult)==FALSE) { @@ -1500,8 +1500,8 @@ } reflowParam reParam; //Reflow ���� ���� reflowResult reResult;//Reflow ��� ���� reflowParam reParam; //Reflow ì°ì° ì ë³´ reflowResult reResult;//Reflow ê²°ê³¼ ì ë³´ ////////////////////////////////////////////////////////////////////////////////////////////// BOOL btFlag =0; @@ -1513,10 +1513,10 @@ CCHImageData tempImage; tempImageOrigin.CopyImageFrom(pImageData); if(pReviewResult->nReflow_Side==7) // ���� ���� if(pReviewResult->nReflow_Side==7) // ë°í ì°ì° { btFlag=1; CCHImageProcess::ImageRotate(pImageData,&tempImage,135);//���� �̹����� Right ȸ�� ���� Right ���� ���� CCHImageProcess::ImageRotate(pImageData,&tempImage,135);//ë°í ì´ë¯¸ì§ë¥¼ Right íì ìì¼ Right ì°ì° ì¤í pImageData = &tempImage; //reParam.nImageWidth = 2048; //reParam.nImageHeight = 2432; @@ -1626,9 +1626,9 @@ CCHImageData tmepData2; if(btFlag==1){ CCHImageProcess::ImageRotate(pImageData,&tmepData2,135);//Right ������ �ٽ� �̹��� ������ CCHImageProcess::ImageRotate(pImageData,&tmepData2,135);//Right ì°ì°í ë¤ì ì´ë¯¸ì§ ë리기 pImageData= &tmepData2; //pImageData->SaveImage(_T("D:\\Testafter.bmp"));//Test �� ���� bmp ���� //pImageData->SaveImage(_T("D:\\Testafter.bmp"));//Test 를 ìí bmp ì ì¥ } @@ -1653,17 +1653,17 @@ UINT64 nSize = SaveReviewImage(&uploadImage, strPath, m_nReviewImageSize, m_nReviewImageQuality, m_nReviewImageStep); m_pRP2P->IRP2P_DisplayMessage(_T("Upload Review Image Save Success! Size: %d byte"), nSize); //uploadImage.SaveImage(strPath, 40); // È�� 60% 150k //uploadImage.SaveImage(strPath, 40); // íì§ 60% 150k if(GetReviewProcessStatus() == ReviewProcessStatus_ReflowStart) { // ���ε� �̹��� ��� ���� 20190917 chm // ì ë¡ë ì´ë¯¸ì§ ê²½ë¡ ìì 20190917 chm //strPath.Format(_T("%s\\%s\\%s"), m_strSaveImageUploadPath, m_strGlassID, pReviewResult->strUploadImgFileName); strPath.Format(_T("%s\\%s"), m_strSaveImageUploadPath, pReviewResult->strUploadImgFileName); nSize = SaveReviewImage(&uploadImage, strPath, m_nReviewImageSize, m_nReviewImageQuality, m_nReviewImageStep); m_pRP2P->IRP2P_DisplayMessage(_T("Upload Reflow Image Save Success! Size: %d byte"), nSize); //�ùĵ����� �̹��� �ڵ����� ������ 20190927chm //ì뮬ëë¦¬ê³ ì´ë¯¸ì§ ìëì¼ë¡ ì´ì´ì¤ 20190927chm if(nTestMode) { CString csParam; @@ -1683,7 +1683,7 @@ m_pRP2P->IRP2P_DisplayMessage(_T("Upload Reflow Image Save Fail![%s]"), pReviewResult->strUploadImgFileName); } //�����޸� ������Ʈ //ê³µì ë©ëª¨ë¦¬ ì ë°ì´í¸ if(!UpdateMemoryReflowPlan(pReviewResult)) m_pRP2P->IRP2P_DisplayMessage(_T("[ReflowPlan] Memory Update Fail!! DefectIdx : %d"), pReviewResult->nDefectidx2); @@ -1896,7 +1896,7 @@ //���ϸ� 181227 cmark //íì¼ëª 181227 cmark BOOL CReviewProcessor_CPJT::MakeReviewImageFileName(SReviewResult* pReviewResult) { if (m_pRP2P==NULL || pReviewResult==NULL) return FALSE; @@ -1909,7 +1909,7 @@ if(GetReviewProcessStatus() == ReviewProcessStatus_ReviewStart) { // [2017:6:5]-[WEZASW] : Review Image ���ϸ�� '*' ��� ����.(����ó��) // [2017:6:5]-[WEZASW] : Review Image íì¼ëª ì '*' ì¬ì© ê¸ì§.(ìì¸ì²ë¦¬) if (pReviewResult->strDefectCode.Compare(_T("***")) == 0) strDefectCodeTemp = _T("DC"); else @@ -2000,24 +2000,23 @@ snapTime.GetHour(), snapTime.GetMinute(), snapTime.GetSecond()); // snap_time // [2017:4:10]-[WEZASW] : ����� ��û�� ���� bmp ���� �߰� ����. (�ӽû��) // [2017:4:10]-[WEZASW] : ê³ ê°ì¬ ìì²ì ìí bmp íì¼ ì¶ê° ì ì¥. (ììì¬ì©) pReviewResult->strOrignalImgFileName = strFileName + _T(".bmp"); strFileName += _T(".jpg"); pReviewResult->strUploadImgFileName = strFileName; pReviewResult->strImgFileName = strFileName; pReviewResult->strImgFilePath = GetReviewUploadImagePath(); return TRUE; } int CReviewProcessor_CPJT::ProcessWSIReflow(int nThreadIdx, SReviewResult* pReviewResult) { // [2016:11:15]-[WEZASW] : ���� �ʿ� // [2016:11:15]-[WEZASW] : ì ê² íì if(!UpdateMemoryWsiReflowPlan(pReviewResult)) m_pRP2P->IRP2P_DisplayMessage(_T("[WsiReflowPlan] Memory Update Fail!! DefectIdx : %d"), pReviewResult->nDefectidx2); // wsi�� return ������ ���� [6/20/2017 bhs] // wsiì© return ê°ì¼ë¡ ìì [6/20/2017 bhs] return WsiResultSuccess; } @@ -2061,7 +2060,7 @@ if(GetReviewProcessStatus() == ReviewProcessStatus_UserStart) { // [2017:6:5]-[WEZASW] : Review Image ���ϸ�� '*' ��� ����.(����ó��) // [2017:6:5]-[WEZASW] : Review Image íì¼ëª ì '*' ì¬ì© ê¸ì§.(ìì¸ì²ë¦¬) if (pReviewResult->strDefectCode.Compare(_T("***")) == 0) strDefectCodeTemp = _T("DC"); else @@ -2155,13 +2154,12 @@ // strFileName += pReviewResult->strSnapTime; // } // [2017:4:10]-[WEZASW] : ����� ��û�� ���� bmp ���� �߰� ����. (�ӽû��) // [2017:4:10]-[WEZASW] : ê³ ê°ì¬ ìì²ì ìí bmp íì¼ ì¶ê° ì ì¥. (ììì¬ì©) pReviewResult->strOrignalImgFileName = strFileName + _T(".bmp"); strFileName += _T(".jpg"); pReviewResult->strUploadImgFileName = strFileName; pReviewResult->strImgFileName = strFileName; pReviewResult->strImgFilePath = GetReviewUploadImagePath(); return TRUE; } @@ -2232,13 +2230,13 @@ void CReviewProcessor_CPJT::LoadAoiImage(const CString& strGlassID, int nOpticType, int nPosX, int nPosY, CCHImageData* pAoiDark, CCHImageData *pAoiBright) { // 3. �˻� ���� �̹��� � // 3. ê²ì¬ ê²°í¨ ì´ë¯¸ì§ 찾기 CString strAoiDarkPath = _T(""); CString strAoiBrightPath = _T(""); FindAoiDefectImagePath(strGlassID, nOpticType, nPosX, nPosY, strAoiDarkPath, strAoiBrightPath); // Dark, Bright ��� � ���� �ּ�ó�� [2017.7.1 bhs] // Dark, Bright 모ë 찾기 ìí´ ì£¼ìì²ë¦¬ [2017.7.1 bhs] // Dark image //if(nOpticType & DEFECT_OPTIC_DARK) { @@ -2283,7 +2281,7 @@ CFileFind finder; CString strSearchPath = _T(""); // Dark, Bright ��� � ���� �ּ�ó�� [2017.7.1 bhs] // Dark, Bright 모ë 찾기 ìí´ ì£¼ìì²ë¦¬ [2017.7.1 bhs] //if (nOpticType & DEFECT_OPTIC_DARK) { // Dark field @@ -2357,7 +2355,7 @@ processTimer.End(); } // 4-3. ������� ��� // 4-3. 리뷰íê· ë°ê¸° double dAverageGray = 0.0; if (CCHImageProcess::ImageAverage(&bandImage, dAverageGray)==1) { @@ -2394,14 +2392,14 @@ CCHImageData pReviewCam; CCHImageData tempImage1; // ������ �̹��� ȸ�� // ì¤ì ê° ì´ë¯¸ì§ íì if (m_nImageRotate > 0) { tempImage1.CopyImageFrom(pReviewCamSource); CCHImageProcess::ImageRotate(pReviewCamSource, &tempImage1, (90.0*m_nImageRotate)); } // ������ �̹��� ���� // ì¤ì ê° ì´ë¯¸ì§ ë°ì if (m_nimageFlip > 0) { if(m_nImageRotate > 0) @@ -2438,7 +2436,7 @@ // set total size * scale int nTotalWidth = int(m_nReviewResizeWidth * m_dReviewImageScale + 0.5); // 20170817 smok Dark, Bright �̹����� ���� �̹��� �Ʒ��� �ٵ��� ���� // 20170817 smok Dark, Bright ì´ë¯¸ì§ê° 리뷰 ì´ë¯¸ì§ ìëì ë¶ëë¡ ìì int nTotalHeight = int(m_nReviewResizeHeight * m_dReviewImageScale + 0.5 + max(pAoiDark2.GetHeight(), pAoiBright2.GetHeight())); int nTotalHeight2 = int(m_nReviewResizeHeight * m_dReviewImageScale + 0.5); @@ -2464,14 +2462,14 @@ double dRulerGab = 20.0 / m_dReviewImageScale; double dScaleResolution = pReviewResult->dMeasureResolution / m_dReviewImageScale; //DrawRuler(&memDC, nTotalWidth, nTotalHeight2, dScaleResolution, dRulerGab); // resolution, ruler gab //taek 210127 ��� X //DrawRuler(&memDC, nTotalWidth, nTotalHeight2, dScaleResolution, dRulerGab); // resolution, ruler gab //taek 210127 ì¬ì© X // draw text string DrawDefectInfo(&memDC, findResult, pReviewResult); //DrawAoiImage(&memDC, &pAoiDark2, &pAoiBright2, &pAoiDark2, &pAoiBright2, nAoiWidth, nAoiHeight); // draw line ���� ������ // draw line íí ê²ì¦ì© //DrawCenterLine(&memDC, nTotalWidth, nTotalHeight); // DrawCenterRect(&memDC, nTotalWidth, nTotalHeight, 100, 100, pReviewResult->dMeasureResolution); @@ -2499,7 +2497,7 @@ nWidthDark = nHeightDark = nWidthBright = nHeightBright = 0; // 20170817 smok Dark, Bright �̹����� ���� �̹��� �Ʒ��� �ٵ��� ���� // 20170817 smok Dark, Bright ì´ë¯¸ì§ê° 리뷰 ì´ë¯¸ì§ ìëì ë¶ëë¡ ìì // dark CCHImageData subImage; if(pAoiDark!=NULL && pAoiDark->GetImageExist()) @@ -2580,11 +2578,11 @@ int nTotalWidth = int(m_nReviewResizeWidth * m_dReviewImageScale + 0.5); int nTotalHeight = int(m_nReviewResizeHeight * m_dReviewImageScale + 0.5); // Dark, Bright �̹����� ������ �ٵ��� ����, Dark ��, Bright �Ʒ� - ����� ��û[2017.6.30 bhs] // Dark, Bright ì´ë¯¸ì§ê° ëëí ë¶ëë¡ ìì , Dark ì, Bright ìë - ê³ ê°ì¬ ìì²[2017.6.30 bhs] //int nX = nTotalWidth - nWidth; //int nY = nTotalHeight - (nHeight * 2); // 20170817 smok Dark, Bright �̹����� ���� �̹��� �Ʒ��� �ٵ��� ���� // 20170817 smok Dark, Bright ì´ë¯¸ì§ê° 리뷰 ì´ë¯¸ì§ ìëì ë¶ëë¡ ìì int nX = 0; int nY = nTotalHeight; pAoiDark1->ShowImage(pDC->m_hDC, nX, nY, pAoiDark1->GetWidth(), pAoiDark1->GetHeight(), 0, 0); @@ -2592,7 +2590,7 @@ //pAoiDark1->ShowImage(pDC->m_hDC, nTotalWidth - nWidth, nTotalHei4ght-nHeight, pAoiDark1->GetWidth(), pAoiDark1->GetHeight(), 0, 0); //pAoiBright1->ShowImage(pDC->m_hDC, nTotalWidth - nWidth, nTotalHeight-nHeight, pAoiBright1->GetWidth(), pAoiBright1->GetHeight(), 0, 0); // �˻� �̹��� �߾ӿ� È��ǥ ǥ�� - ����� ��û [2017.6.30 bhs] // ê²ì¬ ì´ë¯¸ì§ ì¤ìì íì´í íì - ê³ ê°ì¬ ìì² [2017.6.30 bhs] CFont Font; VERIFY(Font.CreateFont( 50, // nHeight @@ -2613,7 +2611,7 @@ CFont *pOldFont = pDC->SelectObject(&Font); pDC->SetTextColor(RGB(255,0,0)); CString strArrow = _T("��"); CString strArrow = _T("â"); CSize size = pDC->GetTextExtent(strArrow); int nCenterX = nX + (nWidth / 2) - size.cx; int nCenterY = nY + (nHeight / 2)/* + (size.cy / 2)*/; @@ -2816,7 +2814,7 @@ else { wchar_t pstrPrefix[128] ={}; //Zone �ѹ� 210127 //Zone ëë² 210127 int nValue = 0; for (int i = 15; i >= 0; i--) { @@ -2827,8 +2825,8 @@ } //taek 210127 //������� ��ǥ�� y �� *-1�� ���� //���� ID, �˻� ī�޶� ����, �˻� Camera ���� : (? ) Ä· ?, Cell ID, Review Cam ���� : Gantry ����, ���� Size, ���� Zone ����, Stak Flag, CODE ����, ��ǥ ���� //ê²°ê³¼íì¼ ì¢íê° y ë *-1ì íì //ì¤ë¹ ID, ê²ì¬ ì¹´ë©ë¼ ì ë³´, ê²ì¬ Camera ì ë³´ : (? ) ìº ?, Cell ID, Review Cam ì ë³´ : Gantry ì ë³´, ê²ì¶ Size, ê²ì¶ Zone ì ë³´, Stak Flag, CODE ì ë³´, ì¢í ì ë³´ // PPID // strValue.Format(_T("Tool[%s].Recipe[%s].ScanNo[%d/%d].Time[%4d/%2d/%2d_%d:%d:%d].MaxGray[%d].RefGray[%d].REVCnt[%d]"),pReviewResult->strEquipID,pGlassResult->m_strPPID,pReviewResult->nAOIScanIdx,0,snapTime.GetYear(), snapTime.GetMonth(), snapTime.GetDay(), @@ -3043,7 +3041,7 @@ if(GetReviewProcessStatus() == ReviewProcessStatus_ReflowStart) { // [2017:6:5]-[WEZASW] : Review Image ���ϸ�� '*' ��� ����.(����ó��) // [2017:6:5]-[WEZASW] : Review Image íì¼ëª ì '*' ì¬ì© ê¸ì§.(ìì¸ì²ë¦¬) if (pReviewResult->strDefectCode.Compare(_T("***")) == 0) strDefectCodeTemp = _T("DC"); else @@ -3120,7 +3118,7 @@ // strFileName += pReviewResult->strSnapTime; // } // [2017:4:10]-[WEZASW] : ����� ��û�� ���� bmp ���� �߰� ����. (�ӽû��) // [2017:4:10]-[WEZASW] : ê³ ê°ì¬ ìì²ì ìí bmp íì¼ ì¶ê° ì ì¥. (ììì¬ì©) pReviewResult->strOrignalImgFileName = strFileName + _T(".bmp"); strFileName += _T(".jpg"); @@ -3166,7 +3164,7 @@ int nStartResultIdx = pReviewResult->GetStartSReviewResultIndex(); int nEndResultIdx = pReviewResult->GetEndSReviewResultIndex(); // ����� ���� ������ ��� ���� Ŭ��.. // ì¸ë±ì¤ê° íì¬ ë§ì§ë§ ì¸ë±ì¤ ë³´ë¤ í´ì.. if (nCurResultIdx > nEndResultIdx) { LeaveCriticalSection(&m_csUserCriticalSection); @@ -3174,7 +3172,7 @@ g_pLog->DisplayMessage(_T("[ReviewProcessor]SetWsiResultData module[%d] point[%d] result[%d]"), nModuleIndex, measureResut.nResultIndex, nCurResultIdx); } // ���� ��������� ���� // íì¬ ê²°ê³¼ë°ì´í° ì ì¥ wsiResult.nWsi_ResultCode = measureResut.nResultCode; wsiResult.dWsi_DamDistance = measureResut.dDamDistance; @@ -3184,7 +3182,7 @@ } //memcpy(wsiResult.nWsi_pReflowResultData, measureResut.pReflowResultData, sizeof(wsiResult.nWsi_pReflowResultData)); // ��� ������ �߰� // ê²°ê³¼ ë°ì´í° ì¶ê° SReviewResult *pProcessResult = NULL; if (pGlassResult->SetWsiReflowResultData(nModuleIndex, nCurResultIdx, wsiResult, nGlassPosX, nGlassPosY, nMotorPosX, nMotorPosY, dTime)) { @@ -3193,10 +3191,10 @@ pProcessResult = pReviewResult->GetSReviewResult(nCurResultIdx); } // ���� ������, ���� ������� ������ ���� // ì ì¥ ì±ê³µì, 리뷰 íë¡ì¸ìì í¬ì¸í° ì ë¬ if (pProcessResult) { // ó�� ������ ���� // ì²ë¦¬ ì°ë ë ìí if (AddReviewProcessData(pProcessResult)==1) { g_pLog->DisplayMessage(_T("[ReviewProcessor]Add Wsi Reflow Process Data module[%d] result[%d]"), nModuleIndex, nCurResultIdx); @@ -3212,7 +3210,7 @@ LeaveCriticalSection(&m_csUserCriticalSection); // ��� ����. // ê²°ê³¼ ê°±ì . m_pRP2P->IRP2P_UpdateReviewResult(nModuleIndex, pGlassResult, 5); return; @@ -3221,7 +3219,7 @@ return; } //0129cmark ���� ��ġ�� ���� ��ǥ�� ���� ��ǥ�� ���� //0129cmark ìì ìì¹ë³ ì¼í° ì¢í를 ìì ì¢íë¡ ë³í double CReviewProcessor_CPJT::GetCentertoOrginCoordinate(double dPosX,double dPosY,int nCornercut,int nOriginDirection){ double nResultPosX=0.0; @@ -3230,60 +3228,60 @@ // CornerCutDirection { CLeftTop=0, CRightTop, CLeftBottom, CRightBottom }; // OriginDirection { OLeftTop=0, ORightTop, OLeftBottom, ORightBottom }; if(nOriginDirection==RPOLeftTop){//�������»� if(nOriginDirection==RPOLeftTop){//ì¤ë¦¬ì§ì¢ì if(nCornercut == RPCLeftTop)//�»� if(nCornercut == RPCLeftTop)//ì¢ì { nResultPosX = double(GLASS_SIZE_WIDTH)/2. - dPosX; nResultPosY = double(GLASS_SIZE_HEIGHT)/2. - dPosY; } else if(nCornercut == RPCRightTop)//��� else if(nCornercut == RPCRightTop)//ì°ì { nResultPosX = double(GLASS_SIZE_WIDTH)/2. - dPosX; nResultPosY = double(GLASS_SIZE_HEIGHT)/2. + dPosY; } else if(nCornercut == RPCLeftBottom)//���� else if(nCornercut == RPCLeftBottom)//ì¢í { nResultPosX = double(GLASS_SIZE_WIDTH)/2. + dPosX; nResultPosY = double(GLASS_SIZE_HEIGHT)/2. - dPosY; } else if(nCornercut == RPCRightBottom)//���� else if(nCornercut == RPCRightBottom)//ì°í { nResultPosX = double(GLASS_SIZE_WIDTH)/2 + dPosX; nResultPosY = double(GLASS_SIZE_HEIGHT)/2 + dPosY; } } else if(nOriginDirection==RPORightTop){//��������� else if(nOriginDirection==RPORightTop){//ì¤ë¦¬ì§ì°ì if(nCornercut == RPCLeftTop)//�»� if(nCornercut == RPCLeftTop)//ì¢ì { nResultPosX = double(GLASS_SIZE_WIDTH)/2. - dPosX; nResultPosY = double(GLASS_SIZE_HEIGHT)/2. + dPosY; } else if(nCornercut == RPCRightTop)//��� else if(nCornercut == RPCRightTop)//ì°ì { nResultPosX = double(GLASS_SIZE_WIDTH)/2. - dPosX; nResultPosY = double(GLASS_SIZE_HEIGHT)/2. - dPosY; } else if(nCornercut == RPCLeftBottom)//���� else if(nCornercut == RPCLeftBottom)//ì¢í { nResultPosX = double(GLASS_SIZE_WIDTH)/2. + dPosX; nResultPosY = double(GLASS_SIZE_HEIGHT)/2. + dPosY; } else if(nCornercut == RPCRightBottom)//���� else if(nCornercut == RPCRightBottom)//ì°í { nResultPosX = double(GLASS_SIZE_WIDTH)/2. + dPosX; nResultPosY = double(GLASS_SIZE_HEIGHT)/2. - dPosY; } } else if(nOriginDirection==RPOLeftBottom){//���������� else if(nOriginDirection==RPOLeftBottom){//ì¤ë¦¬ì§ì¢í if(nCornercut == RPCLeftTop)//�»� if(nCornercut == RPCLeftTop)//ì¢ì { //210402 /* nResultPosX = double(GLASS_SIZE_WIDTH)/2. + dPosX; @@ -3292,13 +3290,13 @@ nResultPosX = double(GLASS_SIZE_WIDTH) / 2. + dPosX; nResultPosY = double(GLASS_SIZE_HEIGHT) / 2. + dPosY; } else if(nCornercut == RPCRightTop)//��� else if(nCornercut == RPCRightTop)//ì°ì { nResultPosX = double(GLASS_SIZE_WIDTH)/2. + dPosX; nResultPosY = double(GLASS_SIZE_HEIGHT)/2. + dPosY; } else if(nCornercut == RPCLeftBottom)//���� else if(nCornercut == RPCLeftBottom)//ì¢í { //210402 /*nResultPosX = double(GLASS_SIZE_WIDTH)/2. - dPosX; @@ -3306,33 +3304,33 @@ nResultPosX = double(GLASS_SIZE_WIDTH) / 2. + dPosX; nResultPosY = double(GLASS_SIZE_HEIGHT) / 2. + dPosY; } else if(nCornercut == RPCRightBottom)//���� else if(nCornercut == RPCRightBottom)//ì°í { nResultPosX = double(GLASS_SIZE_WIDTH) / 2. - dPosX; nResultPosY = double(GLASS_SIZE_HEIGHT) / 2. + dPosY; } } else if (nOriginDirection==RPORightBottom) {//���������� {//ì¤ë¦¬ì§ì°í if(nCornercut == RPCLeftTop)//�»� if(nCornercut == RPCLeftTop)//ì¢ì { nResultPosX = double(GLASS_SIZE_WIDTH)/2. + dPosX; nResultPosY = double(GLASS_SIZE_HEIGHT)/2. + dPosY; } else if(nCornercut == RPCRightTop)//��� else if(nCornercut == RPCRightTop)//ì°ì { nResultPosX = double(GLASS_SIZE_WIDTH)/2. + dPosX; nResultPosY = double(GLASS_SIZE_HEIGHT)/2. - dPosY; } else if(nCornercut == RPCLeftBottom)//���� else if(nCornercut == RPCLeftBottom)//ì¢í { nResultPosX = double(GLASS_SIZE_WIDTH)/2. - dPosX; nResultPosY = double(GLASS_SIZE_HEIGHT)/2. + dPosY; } else if(nCornercut == RPCRightBottom)//���� else if(nCornercut == RPCRightBottom)//ì°í { nResultPosX = double(GLASS_SIZE_WIDTH)/2. - dPosX; nResultPosY = double(GLASS_SIZE_HEIGHT)/2. - dPosY; @@ -3357,7 +3355,7 @@ CString strFileName = _T(""); CString strDefectCodeTemp = _T(""); // [2017:6:5]-[WEZASW] : Review Image ���ϸ�� '*' ��� ����.(����ó��) // [2017:6:5]-[WEZASW] : Review Image íì¼ëª ì '*' ì¬ì© ê¸ì§.(ìì¸ì²ë¦¬) if (pReviewResult->strDefectCode.Compare(_T("***")) == 0) strDefectCodeTemp = _T("DC"); else @@ -3421,31 +3419,24 @@ { if(pReviewResult == NULL) return FALSE; //������� ���� �޸� ���� �̹��� �̸� �� ��ǥ ä���ֱ� //ê²°ê³¼íì¼ ê³µì ë©ëª¨ë¦¬ 리뷰 ì´ë¯¸ì§ ì´ë¦ ë° ì¢í ì±ì주기 CDitGlassRawClient *pDitGlassRawCleint = CDitGlassRawClient::GetInstance(); if(pDitGlassRawCleint->isConnect() == TRUE) { _grmDefectData* pSharedDefect = pDitGlassRawCleint->GetDefectData(pReviewResult->nDefectidx2); _grmDefectReviewData * pSharedDefectReview = &pSharedDefect->m_ReviewDefect; _grmGlassData* pSharedGlassData = pDitGlassRawCleint->GetGlassData(); //size_t CharactersConverted; //wcstombs_s(&CharactersConverted, pSharedDefectReview->m_strRevImageName, pReviewResult->strImgFileName, _TRUNCATE); strcpy(pSharedDefectReview->m_strRevImageName,pReviewResult->strImgFileName.MakeLower()); //taek 210624 ���� ���� �� ���ش�. strcpy(pSharedDefectReview->m_strRevImagePath,pReviewResult->strImgFilePath.MakeLower()); strcpy(pSharedGlassData->m_strAlignFirst, m_strReviewFirst.MakeLower()); strcpy(pSharedGlassData->m_strAlignSecond, m_strReviewSecned.MakeLower()); pSharedDefectReview->m_nPlanType = ditRaw::RPT_Review; //0:None, 1:Location(User, Fiexed) Review, 4:reflower, ??:Wsi, 1000:AOI(�ܺ� ���� ���� ���) pSharedDefectReview->m_nPlanType = ditRaw::RPT_Review; //0:None, 1:Location(User, Fiexed) Review, 4:reflower, ??:Wsi, 1000:AOI(ì¸ë¶ ë¡ì»¬ 리뷰 ëª ë ¹) pSharedDefectReview->m_nResultCode = 1; //0:None, 1:Success pSharedDefectReview->m_nShotIndex = pReviewResult->nResultIdx; //pSharedDefectReview->m_nShotIndex = GetPlanReviewCount(); //RTMS ���ؿ� ���� ���� ������ ��� �ƴϸ� ������ �ϴ� �ɷ� taek 210128 //pSharedDefectReview->m_nShotIndex = GetPlanReviewCount(); //RTMS 기ì¤ì ë°ë¼ íµí© ê´ë¦¬ë©´ ìê±° ìëë©´ ëë ì íë ê±¸ë¡ taek 210128 pSharedDefectReview->m_nModuleIndex = pReviewResult->nModuleIdx; pSharedDefectReview->m_nMagnificIndex = 20; pSharedDefectReview->m_fManification =pReviewResult->dMagnification; @@ -3459,11 +3450,11 @@ BOOL CReviewProcessor_CPJT::UpdateMemoryUserPlan( SReviewResult* pReviewResult ) { //������� ���� �޸� ���� �̹��� �̸� �� ��ǥ ä���ֱ� //ê²°ê³¼íì¼ ê³µì ë©ëª¨ë¦¬ 리뷰 ì´ë¯¸ì§ ì´ë¦ ë° ì¢í ì±ì주기 CDitGlassRawClient *pDitRawClient = CDitGlassRawClient::GetInstance(); if(pDitRawClient->isConnect() == TRUE) { int nDefectCount = pDitRawClient->GetGlassData()->m_nDefectNum; // user,reflow �� �˻� ���� ���� �����DZ⿡ ���� ī��Ʈ���� ���ų� ū���� ������ �ִ� int nDefectCount = pDitRawClient->GetGlassData()->m_nDefectNum; // user,reflow ë ê²ì¬ ëí ì´í ìì±ë기ì ëí ì¹´ì´í¸ë³´ë¤ ê°ê±°ë í°ê°ì ê°ì§ê³ ìë¤ if(pReviewResult->nDefectIdx <nDefectCount) { return FALSE; @@ -3476,16 +3467,14 @@ strcpy(pSharedDefectReview->m_strRevImageName,pReviewResult->strImgFileName); pSharedDefectReview->m_nPlanType = ditRaw::RPT_User; //0:None, 1:Location(User, Fiexed) Review, 4:reflower, ??:Wsi, 1000:AOI(�ܺ� ���� ���� ���) pSharedDefectReview->m_nPlanType = ditRaw::RPT_User; //0:None, 1:Location(User, Fiexed) Review, 4:reflower, ??:Wsi, 1000:AOI(ì¸ë¶ ë¡ì»¬ 리뷰 ëª ë ¹) pSharedDefectReview->m_nResultCode = 1; //0:None, 1:Success pSharedDefectReview->m_nShotIndex = pReviewResult->nResultIdx; pSharedDefect->m_nShotIdx = pReviewResult->nResultIdx; pSharedDefectReview->m_nModuleIndex; pSharedDefect->m_nModelIdx = pReviewResult->nModuleIdx; pSharedDefectReview->m_nMagnificIndex = pReviewResult->dMagnification; pSharedDefectReview->m_fManification = pReviewResult->dMagnification; pSharedDefectReview->m_fManificResoultion = pReviewResult->dMagnification; m_pRP2P->IRP2P_DisplayMessage(_T("[�����޸�����]���[%d]���ϸ�[%s]"),pReviewResult->nDefectidx2, pReviewResult->strUploadImgFileName); m_pRP2P->IRP2P_DisplayMessage(_T("[ê³µì ë©ëª¨ë¦¬ì ê·¼]ì¸ë±ì¤[%d]íì¼ëª [%s]"),pReviewResult->nDefectidx2, pReviewResult->strUploadImgFileName); } @@ -3495,7 +3484,7 @@ BOOL CReviewProcessor_CPJT::UpdateMemoryReflowPlan( SReviewResult* pReviewResult ) { if(pReviewResult == NULL) return FALSE; //������� ���� �޸𸮿� ��� � �ֱ� //ê²°ê³¼íì¼ ê³µì ë©ëª¨ë¦¬ì ê²°ê³¼ ì±ì ë£ê¸° CDitGlassRawClient *pDitRawClient = CDitGlassRawClient::GetInstance(); //int nEqpID = m_pSP2P->ISP2P_System_GetSystemInfo()->m_nMachineType; CString strCellID = _T(""); @@ -3517,7 +3506,7 @@ nReflowjuge=1; } // ����� ��û���� ������. 0,1 Position�� Pass // ê³ ê°ì¬ ìì²ì¼ë¡ ìì í¨. 0,1 Positionì Pass else if(nReflowjuge == 3 || nReflowjuge == 2) { m_pRP2P->IRP2P_DisplayMessage(_T("[ReflowResult] Reflow Judge Is No OverFlow %d"),nReflowjuge); @@ -3536,7 +3525,7 @@ nReflowjuge=0; } //0:None, // ������ Line�� ����. 3 �̸� : DAM2 Reflow ����, 4~5 : DAM1 Reflow ����, 6 : no Reflow ���� / -1 : image not loaded, -2 : roi setting error, -3 : roi length error, -5 : select wrong side //0:None, // ê²ì¶í Lineì ê°ì. 3 ë¯¸ë§ : DAM2 Reflow íì , 4~5 : DAM1 Reflow íì , 6 : no Reflow íì / -1 : image not loaded, -2 : roi setting error, -3 : roi length error, -5 : select wrong side if(pReviewResult->nReflow_CellIndex > 7) { pReviewResult->nReflow_CellIndex = 0; @@ -3553,7 +3542,7 @@ if(pDitRawClient->isConnect() == TRUE) { int nDefectCount = pDitRawClient->GetGlassData()->m_nDefectNum; // user,reflow �� �˻� ���� ���� �����DZ⿡ ���� ī��Ʈ���� ���ų� ū���� ������ �ִ� int nDefectCount = pDitRawClient->GetGlassData()->m_nDefectNum; // user,reflow ë ê²ì¬ ëí ì´í ìì±ë기ì ëí ì¹´ì´í¸ë³´ë¤ ê°ê±°ë í°ê°ì ê°ì§ê³ ìë¤ if(pReviewResult->nDefectidx2 <nDefectCount) { return FALSE; @@ -3568,11 +3557,11 @@ pSharedDefectReview->m_nPlanType = ditRaw::RTP_Reflow; pSharedDefectReview->m_nReflow_ResultCode = pReviewResult->nReflow_Result;// pReviewResult->nReflow_Result; //0:None, // ������ Line�� ����. 3 �̸� : DAM2 Reflow ����, 4~5 : DAM1 Reflow ����, 6 : no Reflow ���� / -1 : image not loaded, -2 : roi setting error, -3 : roi length error, -5 : select wrong side //0:None, // ê²ì¶í Lineì ê°ì. 3 ë¯¸ë§ : DAM2 Reflow íì , 4~5 : DAM1 Reflow íì , 6 : no Reflow íì / -1 : image not loaded, -2 : roi setting error, -3 : roi length error, -5 : select wrong side //pSharedDefectReview->m_fReflow_LinePosData; pSharedDefectReview->m_nReflow_Side = pReviewResult->nReflow_Side; pSharedDefectReview->m_nReflow_InspectionMode = 0; m_pRP2P->IRP2P_DisplayMessage(_T("[�����޸�����]���[%d]���ϸ�[%s]"),pReviewResult->nDefectidx2, pReviewResult->strUploadImgFileName); m_pRP2P->IRP2P_DisplayMessage(_T("[ê³µì ë©ëª¨ë¦¬ì ê·¼]ì¸ë±ì¤[%d]íì¼ëª [%s]"),pReviewResult->nDefectidx2, pReviewResult->strUploadImgFileName); } return TRUE; @@ -3582,7 +3571,7 @@ { if(pReviewResult == NULL) return FALSE; //������� ���� �޸𸮿� ��� � �ֱ� //ê²°ê³¼íì¼ ê³µì ë©ëª¨ë¦¬ì ê²°ê³¼ ì±ì ë£ê¸° CDitGlassRawClient *pDitGlassRawClient = CDitGlassRawClient::GetInstance(); if(pDitGlassRawClient->isConnect() == TRUE) @@ -3599,7 +3588,7 @@ pSharedDefectReview->m_nPlanType = ditRaw::RTP_WSI; pSharedDefectReview->m_nWsi_ResultCode=pReviewResult->nWsi_ResultCode; //0:None, 1:Success pSharedDefectReview->m_nWsi_Type = 2;/* nWSIType; // �Ը� / ���� //wsi ���� */ pSharedDefectReview->m_nWsi_Type = 2;/* nWSIType; // í¨ëª° / ë기 //wsi ì§í */ pSharedDefectReview->m_fWsi_ResultData[0]= pReviewResult->nWsi_DefectType; // 0:normal 1:metal 2:huge 3:diffuse 4:trashy pSharedDefectReview->m_fWsi_ResultData[1]=(float)(nWSIheight/1000.0); pSharedDefectReview->m_fWsi_ResultData[2]=(float)(nWSIWidth/1000.0); // 0:Type, 1:Height, 2:Width @@ -3609,7 +3598,7 @@ pSharedDefectReview->m_fWsi_ResultData[6] = pReviewResult->dBZoneHeight; pSharedDefectReview->m_strWsi_2DImageFilename; pSharedDefectReview->m_strWsi_3DImageFilename; pSharedDefectReview->m_fWsiManification = 20;//20�� ���� pSharedDefectReview->m_fWsiManification = 20;//20ë°° ê³ ì pSharedDefectReview->m_dWsiMmMotorX=pReviewResult->dTargetMotorX; pSharedDefectReview->m_dWsiMmMotorY=pReviewResult->dTargetMotorY; @@ -3624,7 +3613,7 @@ BOOL CReviewProcessor_CPJT::UpdateMemoryWsiReflowPlan( SReviewResult* pReviewResult ) { if(pReviewResult == NULL) return FALSE; //������� ���� �޸𸮿� ��� � �ֱ� //ê²°ê³¼íì¼ ê³µì ë©ëª¨ë¦¬ì ê²°ê³¼ ì±ì ë£ê¸° CDitGlassRawClient *pDitRawClient = CDitGlassRawClient::GetInstance(); @@ -3638,13 +3627,13 @@ /* pPacket->GetInt(0) = Index pPacket->GetInt(1) = Wsi ���� ��� pPacket->GetInt(2) = A�� ���� ��� (1 ���� 0 ����) pPacket->GetInt(3) = B�� ���� ��� pPacket->GetInt(4) = C�� ���� ��� pPacket->GetInt(5) = D�� ���� ��� pPacket->GetInt(6) = Review���� ������� PointIndex pPacket->GetDouble(0) = �£�� Monomo������ �Ÿ� pPacket->GetInt(1) = Wsi 측ì ê²°ê³¼ pPacket->GetInt(2) = Aì¡´ íì ê²°ê³¼ (1 ì±ê³µ 0 ì¤í¨) pPacket->GetInt(3) = Bì¡´ íì ê²°ê³¼ pPacket->GetInt(4) = Cì¡´ íì ê²°ê³¼ pPacket->GetInt(5) = Dì¡´ íì ê²°ê³¼ pPacket->GetInt(6) = Reviewìì ë³´ë´ì¤¬ë PointIndex pPacket->GetDouble(0) = ëìì Monomoê¹ì§ì 거리 */ // int nReflowjuge=0; @@ -3655,7 +3644,7 @@ nWsiReflowJudge = pReviewResult->nWsi_ResultCode; //nWsiReflowResult += pReviewResult->nWsi_pReflowResultData[0] //A 1�� �Ű�Ⱦ� //nWsiReflowResult += pReviewResult->nWsi_pReflowResultData[0] //A 1ì°¨ ì ê²½ìì nWsiReflowResult += pReviewResult->nWsi_pReflowResultData[1];//B nWsiReflowResult += pReviewResult->nWsi_pReflowResultData[2];//C //nWsiReflowResult += pReviewResult->nWsi_pReflowResultData[3];//D @@ -3715,7 +3704,7 @@ { if(pReviewResult == NULL) return FALSE; //������� ���� �޸𸮿� ��� � �ֱ� //ê²°ê³¼íì¼ ê³µì ë©ëª¨ë¦¬ì ê²°ê³¼ ì±ì ë£ê¸° CDitGlassRawClient *pDitGlassRawClient = CDitGlassRawClient::GetInstance(); if(pDitGlassRawClient->isConnect() == TRUE) @@ -3732,13 +3721,13 @@ pSharedDefectReview->m_nPlanType = ditRaw::RTP_UserWsi; pSharedDefectReview->m_nWsi_ResultCode=pReviewResult->nWsi_ResultCode; //0:None, 1:Success pSharedDefectReview->m_nWsi_Type=nWSIType; // �Ը� / ���� pSharedDefectReview->m_nWsi_Type=nWSIType; // í¨ëª° / ë기 pSharedDefectReview->m_fWsi_ResultData[0]= nWSIType; pSharedDefectReview->m_fWsi_ResultData[1]=(float)(nWSIheight/100.0); pSharedDefectReview->m_fWsi_ResultData[2]=(float)(nWSIWidth/100.0); // 0:Type, 1:Height, 2:Width pSharedDefectReview->m_strWsi_2DImageFilename; pSharedDefectReview->m_strWsi_3DImageFilename; pSharedDefectReview->m_fWsiManification = 20;//20�� ���� pSharedDefectReview->m_fWsiManification = 20;//20ë°° ê³ ì pSharedDefectReview->m_dWsiMmMotorX=pReviewResult->dTargetMotorX; pSharedDefectReview->m_dWsiMmMotorY=pReviewResult->dTargetMotorY; } @@ -3750,7 +3739,7 @@ { if (pReviewResult == NULL) return FALSE; //������� ���� �޸𸮿� ��� � �ֱ� //ê²°ê³¼íì¼ ê³µì ë©ëª¨ë¦¬ì ê²°ê³¼ ì±ì ë£ê¸° CDitGlassRawClient *pDitGlassRawClient = CDitGlassRawClient::GetInstance(); if (pDitGlassRawClient->isConnect() == TRUE) @@ -3767,13 +3756,13 @@ pSharedDefectReview->m_nPlanType = ditRaw::RTP_WSI; pSharedDefectReview->m_nWsi_ResultCode = pReviewResult->nWsi_ResultCode; //0:None, 1:Success pSharedDefectReview->m_nWsi_Type = nWSIType; // �Ը� / ���� pSharedDefectReview->m_nWsi_Type = nWSIType; // í¨ëª° / ë기 pSharedDefectReview->m_fWsi_ResultData[0] = nWSIType; pSharedDefectReview->m_fWsi_ResultData[1] = (float)(nWSIheight / 100.0); pSharedDefectReview->m_fWsi_ResultData[2] = (float)(nWSIWidth / 100.0); // 0:Type, 1:Height, 2:Width pSharedDefectReview->m_strWsi_2DImageFilename; pSharedDefectReview->m_strWsi_3DImageFilename; pSharedDefectReview->m_fWsiManification = 20;//20�� ���� pSharedDefectReview->m_fWsiManification = 20;//20ë°° ê³ ì pSharedDefectReview->m_dWsiMmMotorX = pReviewResult->dTargetMotorX; pSharedDefectReview->m_dWsiMmMotorY = pReviewResult->dTargetMotorY; @@ -3804,7 +3793,7 @@ double TempValue = 0; double m_nResultFocusValue = 0; // ���� XY ���� X+1, Y+1�� ���� ������ // ìì XY ê¸°ì¤ X+1, Y+1ì ëí ì°¨ìì for (int y = 0; y < nHeight - 1; y++) { for (int x = 0; x < nWidth - 1; x++) ReviewSystem/ReviewSystem/ReviewProcessor_CPJT.h
@@ -108,9 +108,6 @@ CMotorControlInfo* m_MotorControlInfo; CString m_strReviewFirst; CString m_strReviewSecned; protected: CString ErrorStringCode[ErrorCount]; }; ReviewSystem/ReviewSystem/SequenceProcessor_CPJT.cpp
@@ -51,7 +51,7 @@ #define AOIRAWBIN_NETWORK_DRIVE_PATH "Y:\\RawBin" enum CPJT_MeasureMode { CPJT_ModeAuto = 0, CPJT_ModeManual }; // [2017:4:18]-[WEZASW] : WSI Module ���� ������ ��� PlanType ��ȣ ����. // [2017:4:18]-[WEZASW] : WSI Module ì¥ì°© ì¤ë¹ì ê²½ì° PlanType ë²í¸ ë³ê²½. enum CPJT_PlanType { CPJT_PlanReview = 0, CPJT_PlanUser, CPJT_PlanWSI, CPJT_PlanMeasure, CPJT_PlanReflow, CPJT_PlanWsiReflow, CPJT_PlanWsiUser,CPJT_PlanWsiMultiShot }; enum CPJT_InsepectionType{REVIEW_REFLOW = 0, WSI_REFLOW, REV_WSI,WSIUSER, USER,WSIMULTISHOT}; @@ -169,7 +169,7 @@ CDitGlassRawClient* pDitGlassRaw = CDitGlassRawClient::GetInstance(); if(pDitGlassRaw->ConnectServer() == FALSE) { g_pLog->DisplayMessage(_T("�����޸� ���� ����!(Shared memory Access Fail)")); g_pLog->DisplayMessage(_T("ê³µì ë©ëª¨ë¦¬ ì ê·¼ ì¤í¨!(Shared memory Access Fail)")); } } @@ -184,16 +184,16 @@ BOOL bReturn = FALSE; // ���� ���°� ���� ���¿� �ٸ���? // íì¬ ìíê° ì´ì ìíì ë¤ë¥¸ê°? //if (nProcessStatus!=m_nProcessStatus || nProcessStatus==0) if (1)//nProcessStatus!=m_nProcessStatus || nProcessStatus==0) { //if (nProcessStatus==0) // �ʱ�(0) �����̸�.. //if (nProcessStatus==0) // ì´ê¸°(0) ìíì´ë©´.. //{ // bReturn = TRUE; //} // else if (nProcessStatus==(m_nProcessStatus+1)) // ���� ���� ����(+1)�̸�.. // else if (nProcessStatus==(m_nProcessStatus+1)) // ì´ì ìí ë¤ì(+1)ì´ë©´.. // { // bReturn = TRUE; // } @@ -204,9 +204,9 @@ // bReturn = FALSE; //} if (bReturn) // �����̸�... if (bReturn) // ìíì´ë©´... { // Thread ���� �� Thread ���� // Thread ìì± í Thread ìí CSequenceProcessData* pThreadData = new CSequenceProcessData(this); if (pThreadData) { @@ -227,7 +227,7 @@ } } else if(nProcessStatus==2){ // Thread ���� �� Thread ���� // Thread ìì± í Thread ìí CSequenceProcessData* pThreadData = new CSequenceProcessData(this); if (pThreadData) { @@ -277,7 +277,7 @@ CReviewResult* pWsiResult = pGlassResult->GetWsiResult(nModuleIndex); if (pWsiResult==NULL) goto RESULT_FAIL; // ������ ����� �����´�. // ë§ì§ë§ ì¸ë±ì¤ë¥¼ ê°ì ¸ì¨ë¤. int nCurResultIdx = pWsiResult->GetLastSReviewResultIndex() + 1; // last index + 1 int nStartResultIdx = pWsiResult->GetStartSReviewResultIndex(); int nEndResultIdx = pWsiResult->GetEndSReviewResultIndex(); @@ -291,13 +291,13 @@ int nMPosY = int(pPosition->dMotorPosY * 1000.0); double dTime = (double) m_ProcessTimer.GetDurationMilliSecond(); // ����� �ٸ��� ��������. // ì¸ë±ì¤ê° ë¤ë¥´ë©´ ë¹ì ìì. if (measureResut.nResultIndex != nCurResultIdx) { goto RESULT_FAIL; } // ���� ������ ����. // íì¬ ë°ì´í° ì ì¥. // measureResut if(pWsiResult->GetSReviewResultCount() == 0) return ; @@ -324,7 +324,7 @@ // set last result idx pWsiResult->SetLastSReviewResultIndex(nCurResultIdx); // ������ ����Ʈ���� �԰�, WSI ����� ���� ������... // ë§ì§ë§ í¬ì¸í¸ê¹ì§ ìê³ , WSI ê²°ê³¼ê° ë¨ì ìì¼ë©´... if(nCurResultIdx==nEndResultIdx && nCurResultIdx<=pWsiResult->GetSReviewResultCount()) { nStartResultIdx = nCurResultIdx + 1; @@ -335,8 +335,8 @@ pWsiResult->SetStartSReviewResultIndex(nStartResultIdx); pWsiResult->SetEndSReviewResultIndex(nEndResultIdx); // ������ ����Ʈ ���� ��������. ::Sleep(3000); // ����̴� �ʼ���. ������ ���� ����. // ëë¨¸ì§ í¬ì¸í¸ 리뷰 ìííì. ::Sleep(3000); // ëë ì´ë íìì. ìì¼ë©´ ëì ìí¨. // Process_RemainWsiPoint(nModuleIndex); } @@ -362,7 +362,7 @@ CReviewResult* pWsiResult = pGlassResult->GetWsiUserResult(nModuleIndex); if (pWsiResult==NULL) goto RESULT_FAIL; // ������ ����� �����´�. // ë§ì§ë§ ì¸ë±ì¤ë¥¼ ê°ì ¸ì¨ë¤. int nCurResultIdx = pWsiResult->GetLastSReviewResultIndex() + 1; // last index + 1 int nStartResultIdx = pWsiResult->GetStartSReviewResultIndex(); int nEndResultIdx = pWsiResult->GetEndSReviewResultIndex(); @@ -376,13 +376,13 @@ int nMPosY = int(pPosition->dMotorPosY * 1000.0); double dTime = (double) m_ProcessTimer.GetDurationMilliSecond(); // ����� �ٸ��� ��������. // ì¸ë±ì¤ê° ë¤ë¥´ë©´ ë¹ì ìì. if (measureResut.nResultIndex != nCurResultIdx) { goto RESULT_FAIL; } // ���� ������ ����. // íì¬ ë°ì´í° ì ì¥. // measureResut if(pWsiResult->GetSReviewResultCount() == 0) return ; @@ -407,7 +407,7 @@ // set last result idx pWsiResult->SetLastSReviewResultIndex(nCurResultIdx); // ������ ����Ʈ���� �԰�, WSI ����� ���� ������... // ë§ì§ë§ í¬ì¸í¸ê¹ì§ ìê³ , WSI ê²°ê³¼ê° ë¨ì ìì¼ë©´... if(nCurResultIdx==nEndResultIdx && nCurResultIdx<=pWsiResult->GetSReviewResultCount()) { nStartResultIdx = nCurResultIdx + 1; @@ -418,8 +418,8 @@ pWsiResult->SetStartSReviewResultIndex(nStartResultIdx); pWsiResult->SetEndSReviewResultIndex(nEndResultIdx); // ������ ����Ʈ ���� ��������. ::Sleep(3000); // ����̴� �ʼ���. ������ ���� ����. // ëë¨¸ì§ í¬ì¸í¸ 리뷰 ìííì. ::Sleep(3000); // ëë ì´ë íìì. ìì¼ë©´ ëì ìí¨. // Process_RemainWsiPoint(nModuleIndex); } @@ -449,7 +449,7 @@ CAlignResult *pAlignResult = &pGlassResult->m_AlignResult; CAlignRecipe *pAlignRecipe = &pGlassResult->m_AlignRecipe; // ����� �ڵ����� ��� �����ǿ� ��������. // ì¼ë¼ì¸ ìëì¡°ëª ê²°ê³¼ ë ìí¼ì ì ì¥íì. CRsRcpAlignInfo *pRsRcpAlignInfo = m_pSP2P->ISP2P_Recipe_GetRsRcpAlignInfo(); if (pRsRcpAlignInfo!=NULL && pRsRcpAlignInfo->m_bAutoProcess) { @@ -463,25 +463,25 @@ pRsRcpAlignInfo->m_dSecondCamExposure = pCurAlignResult->dExposureTime[1]; } // ������ ����Ÿ ���� // ë ìí¼ ë°ì´í ì ì¥ //m_pDoc->Recipe_WriteRecipeFile(); } BOOL bLastAlignResult = FALSE; CCoordCalibrator *pCoordCalibrator = m_pSP2P->ISP2P_GetCoordCalibrator(); // ���� ����� ���.. // ìµì¢ ì¼ë¼ì¸ ê²°ê³¼.. if (pCoordCalibrator && pCurAlignResult->nResultCode==Align_Success) { g_pLog->DisplayMessage(_T("[AlignResult] Align Find Success!")); // ����� ��� �۶� ������ ���� // ì¼ë¼ì¸ ê²°ê³¼ ê¸ë¼ì¤ ì ë³´ì ê°±ì *pAlignResult = *pCurAlignResult; pCoordCalibrator->SetFirstMarkPos(pAlignResult->dFindPositionX[0], pAlignResult->dFindPositionY[0], pAlignRecipe->dGlassPositionX[0], pAlignRecipe->dGlassPositionY[0]); pCoordCalibrator->SetSecondMarkPos(pAlignResult->dFindPositionX[1], pAlignResult->dFindPositionY[1], pAlignRecipe->dGlassPositionX[1], pAlignRecipe->dGlassPositionY[1]); // ���� ��� // ê°ë ê³ì° if(pCoordCalibrator->CalculateAlignResult() == TRUE) { sAlignResult = pCoordCalibrator->GetAlignResult(); @@ -490,38 +490,38 @@ bLastAlignResult = !pAlignRecipe->bRotateProcess; } // �۶� ���� ���� ���� // ê¸ë¼ì¤ ê°ë ë³´ì ì 무 CCameraControlAlign *pAlignCameraControl = m_pSP2P->ISP2P_GetAlignCameraControl(); SThetaMotorInfo* pThetaMotorInfo = m_pSP2P->ISP2P_GetThetaMotorInfo(); CMotorControl* pMotorControl = m_pSP2P->ISP2P_GetMotorControl(); if (pAlignRecipe->bRotateProcess && pAlignCameraControl && pMotorControl && pThetaMotorInfo) { if (fabs(sAlignResult.dDegree) <= pAlignRecipe->dGlassAngleMin) // ���� �۶� ������ �ּҰ����� ������ ���� if (fabs(sAlignResult.dDegree) <= pAlignRecipe->dGlassAngleMin) // íì¬ ê¸ë¼ì¤ ê°ëê° ìµìê°ë³´ë¤ ìì¼ë©´ ì±ê³µ { bLastAlignResult = TRUE; g_pLog->DisplayMessage(_T("[AlignResult] Success! Last Glass Angle : %.8lf degree, Retry Count : %d ea"), sAlignResult.dDegree, pCurAlignResult->nFindCount); } else if (fabs(sAlignResult.dDegree) > pAlignRecipe->dGlassAngleMax) // ���� �۶� ������ �ִ밢���� ũ�� ���� else if (fabs(sAlignResult.dDegree) > pAlignRecipe->dGlassAngleMax) // íì¬ ê¸ë¼ì¤ ê°ëê° ìµëê°ë³´ë¤ í¬ë©´ ì¤í¨ { bLastAlignResult = FALSE; g_pLog->DisplayMessage(_T("[AlignResult] FAIL! Last Glass Angle : %.8lf degree, Retry Count : %d ea"), sAlignResult.dDegree, pCurAlignResult->nFindCount); } else if (pCurAlignResult->nFindCount < pAlignRecipe->nRetryCount) // �纸�� Ƚ���� ������ Ƚ�� �����̸� �纸�� ���� else if (pCurAlignResult->nFindCount < pAlignRecipe->nRetryCount) // ì¬ë³´ì íìê° ë ìí¼ íì ì´íì´ë©´ ì¬ë³´ì ìí { g_pLog->DisplayMessage(_T("[AlignResult] Current Glass Angle : %.8lf degree, Retry Count : %d ea"), sAlignResult.dDegree, pCurAlignResult->nFindCount); // ���ͷ� ���� ����.. // 모í°ë¡ ê°ë ë³´ì .. double dCalAngle = sAlignResult.dDegree; dCalAngle = pThetaMotorInfo->dPosition - dCalAngle ; g_pLog->DisplayMessage(_T("[AlignResult] Move Rotate Glass Angle : %.8lf degree"), dCalAngle); pMotorControl->AxisThetaManualGoEnd(dCalAngle); ::Sleep(100); // ����� ReProcess // ì¼ë¼ì¸ ReProcess if (pAlignCameraControl->AlignProcess()) { g_pLog->DisplayMessage(_T("[AlignResult] Align Find Process ReStarted!")); @@ -556,8 +556,8 @@ //m_pView->SetAlignResult(pAlignResult->nResultCode, sAlignResult.dOriginX, sAlignResult.dOriginY, sAlignResult.dDegree); } // PCControl ����� ��ȣ ����. if (bLastAlignResult) // ���� �����... // PCControl ì¼ë¼ì¸ ì í¸ ì ì¡. if (bLastAlignResult) // ìµì¢ ì¼ë¼ì¸ê²°ê³¼... { SendResultToSignalControl(PCControlSendData_AlignResult_CPJT, SIGNAL_SEND_RESULT_SUCCESS); m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Success Data!")); @@ -690,12 +690,12 @@ m_pSP2P->ISP2P_UpdateReviewProcessStatus(ReviewProcessStatus_None, nPlanIndex); //����� //ë°ëª¨ì© AFM_SetAFMTracking(FALSE); return; } //190727 chm WSI ����� End üũ �� ���� //190727 chm WSI ì§íì End ì²´í¬ í ì§í if(nBeforePlanIndex== CPJT_PlanWSI||nBeforePlanIndex== CPJT_PlanWsiReflow||nBeforePlanIndex== CPJT_PlanWsiUser) { if(pPlanInfo->m_nReviewType == CPJT_PlanWSI ||pPlanInfo->m_nReviewType == CPJT_PlanWsiReflow||pPlanInfo->m_nReviewType== CPJT_PlanWsiUser || pPlanInfo->m_nReviewType == CPJT_PlanWsiMultiShot) @@ -724,13 +724,13 @@ } } //190727 chm WSI type ������ Review �÷��� ����� ī�޶� �۶� �ۿ� ������츦 ����... //190727 chm WSI type ì§íí Review íëì ì§íì ì¹´ë©ë¼ê° ê¸ë¼ì¤ ë°ì ììê²½ì°ë¥¼ ìí... if(nBeforePlanIndex== CPJT_PlanWSI ||nBeforePlanIndex== CPJT_PlanWsiReflow||nBeforePlanIndex== CPJT_PlanWsiUser) { if( pPlanInfo->m_nReviewType == CPJT_PlanReview|| pPlanInfo->m_nReviewType == CPJT_PlanUser|| pPlanInfo->m_nReviewType == CPJT_PlanMeasure|| pPlanInfo->m_nReviewType == CPJT_PlanReflow) { CTotalPitchMeasure* pTotapPithMeasure = m_pSP2P->ISP2P_GetTotalPitchMeasure(); // �������! 20190730 chm ���߿� �Լ��� ����.... CTotalPitchMeasure* pTotapPithMeasure = m_pSP2P->ISP2P_GetTotalPitchMeasure(); // ë¹ë ¤ì°ê¸°! 20190730 chm ëì¤ì í¨ìë¡ ë°ë¡.... const CMotorControlInfo* pSystemMotorInfo = m_pSP2P->ISP2P_System_GetMotorInfo(); if(pSystemMotorInfo !=NULL) @@ -774,8 +774,8 @@ if(pPlanInfo == NULL) continue; //210325 //END �� ���� �Ǿ�������� �ش� �Լ��� ������� ���ư��� �־� start �Լ��� Ÿ���� //�װͿ� ���� ����ó�� //END ë ì¸ë¡ë©ì´ ëì´ë²ë ¸ì§ë§ í´ë¹ í¨ìê° ì°ë ëë¡ ëìê°ê³ ìì´ start í¨ì를 íë²ë¦¼ //ê·¸ê²ì ëí ìì¸ì²ë¦¬ if (GetProcessStatus() == ProcessReviewEnd_CPJT || GetProcessStatus() == ProcessReviewUnloding_CPJT) { g_pLog->DisplayMessage(_T("[ProcessStop] StartProcessing Sequence Stop Status : %d"), GetProcessStatus()); @@ -816,7 +816,7 @@ m_pSP2P->ISP2P_DisplayMessage(_T("[Sequence Processor] WSI Plan End!")); } break; //�̻�� //미ì¬ì© case CPJT_PlanMeasure: if (( nTotalCount += pGlassResult->GetTotalSMeasureResultCount()) > 0) { @@ -925,8 +925,8 @@ AllAckSignalOff(); m_pSP2P->ISP2P_GetReviewProcessor()->ResetGantryDone(); SetCheckWSIEnd(-1); //190726 wsiendüũ ï¿½Ê±ï¿½È SetWsiType(-1); //wsi reflow Ÿ�� ���� ï¿½Ê±ï¿½È SetCheckWSIEnd(-1); //190726 wsiendì²´í¬ ì´ê¸°í SetWsiType(-1); //wsi reflow íì êµ¬ë³ ì´ê¸°í SetLastPointCheck(FALSE); bFileFind = FALSE; @@ -953,18 +953,18 @@ } m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Loading] Glass Result Count : %d ea"), nGlassResultCount); pGlassResult->ResetDefocusCount();//�ε� �κп��� defocus count ï¿½Ê±ï¿½È 190821 chm pGlassResult->ResetDefocusCount();//ë¡ë© ë¶ë¶ìì defocus count ì´ê¸°í 190821 chm CTime time = CTime::GetCurrentTime(); pGlassResult->m_strResultDate.Format(_T("%04d.%02d.%02d"), time.GetYear(), time.GetMonth(), time.GetDay()); //if(Revolver_SetGoHome(0)) // ������ HOME ������ //if(Revolver_SetGoHome(0)) // ë¦¬ë³¼ë² HOME ìíì¤ //{ // m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Loading] Revolver Set GoHome Success!")); //} //#3357 KYH Align Image ï¿½Ê±ï¿½È ADD START //#3357 KYH Align Image ì´ê¸°í ADD START CCameraControlAlign* pAlignCameraControl = m_pSP2P->ISP2P_GetAlignCameraControl(); if (pAlignCameraControl != NULL) { @@ -972,7 +972,7 @@ g_pLog->DisplayMessage(_T("[Align] Align Image Clear")); } //#3357 KYH Align Image ï¿½Ê±ï¿½È ADD END //#3357 KYH Align Image ì´ê¸°í ADD END // get transfer data int nResultCode = 0; @@ -999,7 +999,7 @@ if (pDitRawClient->isConnect()==FALSE) { m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading]�����޸� ���� ���� �翬�� �õ� ")); m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading]ê³µì ë©ëª¨ë¦¬ ì°ê²° ëê¹ ì¬ì°ê²° ìë ")); int nReconnect=0; while (1) { @@ -1014,11 +1014,11 @@ Sleep(1000); if (pDitRawClient->isConnect() == FALSE) { m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading]�����޸� ���� ���� Count[%d]"), nReconnect); m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading]ê³µì ë©ëª¨ë¦¬ ì°ê²° ì¤í¨ Count[%d]"), nReconnect); } else { m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading]�����޸� ���� ����")); m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading]ê³µì ë©ëª¨ë¦¬ ì°ê²° ì±ê³µ")); break; } nReconnect += 1; @@ -1028,9 +1028,9 @@ } // #3381 LYW CF AOI Review ������ FDC TackTime ������ ���� ���� ADD START // #3381 LYW CF AOI Review ì ì¤ë¹ FDC TackTime ì¤ë³´ê³ íì ê°ì ADD START pDitRawClient->GetGlassData()->m_tmReviewLoading = CTime::GetCurrentTime(); // #3381 LYW CF AOI Review ������ FDC TackTime ������ ���� ���� ADD END // #3381 LYW CF AOI Review ì ì¤ë¹ FDC TackTime ì¤ë³´ê³ íì ê°ì ADD END CString strGlassIDTemp = NULL; @@ -1047,7 +1047,7 @@ m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading] Send Loading Success Signal!")); strFileName.Format(_T("%s_%s"), strGlassIDTemp, strGlassStepIdTemp); //������Ʈ�� //ì ë°ì´í¸ì //bFileFind = FindRawBinFile(strFileName); bFileFind = TRUE; @@ -1094,7 +1094,7 @@ } } //// 190725 ����� ��û���� chm ASCEND �� alarm //// 190725 ê³ ê°ì¬ ìì²ì¬í chm ASCEND ì alarm const CRsRcpReviewInfo* pRsRcpReviewInfo = m_pSP2P->ISP2P_Recipe_GetRsRcpReviewInfo(); const CRcpSortingInfo *pSortingInfo = pRsRcpReviewInfo->GetRcpReviewSortInfo(); @@ -1111,7 +1111,7 @@ ////������ �������� �ȱ� 190618 ////ë ìí¼ ì¸í ì¼ë¡ ì´ê¹ 190618 if(GetUseAfmHomePosition()) { g_pLog->DisplayMessage(_T("[AFM] AFM Home Position Start!!!")); @@ -1120,7 +1120,7 @@ } //�����޸� Ŀ��� ���� ��ŸƮ(�۶� �ε�) //ê³µì ë©ëª¨ë¦¬ 커ë©ë 리뷰 ì¤íí¸(ê¸ë¼ì¤ ë¡ë©) CDitGlassRawClient* pDitSharedGlassRaw = CDitGlassRawClient::GetInstance(); if (pDitSharedGlassRaw->isConnect() == FALSE) { m_pSP2P->ISP2P_DisplayMessage(_T("[DitGlassRawClient] Shared Memory Connect Fail")); @@ -1173,7 +1173,7 @@ CReviewProcessor* pReviewProcessor = m_pSP2P->ISP2P_GetReviewProcessor(); if(pReviewProcessor == NULL) return ; pReviewProcessor->SetCellData(pGlassResult); pReviewProcessor->SetReviewCount(0); // ���� Sequence No �ʱ�È. pReviewProcessor->SetReviewCount(0); // 리뷰 Sequence No ì´ê¸°í. pReviewProcessor->SetPlanReviewCount(0); pReviewProcessor->SetPlanWSICount(0); // Process Status Update @@ -1214,7 +1214,7 @@ if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_AlignStartAck_CPJT)) m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Start Ack!")); //Sleep(400);//������ ���� ����� �ֱ� chm190602 //Sleep(400);//íë ì 문ì ëë ì´ ì£¼ê¸° chm190602 // 1. get current glass result CGlassResult* pGlassResult = m_pSP2P->ISP2P_GetCurrentGlassResult(); @@ -1238,7 +1238,7 @@ } else { // 190710 SJB Align Camera Disconnect Check, Align Step ���� ���� Ȯ���Ѵ�. // 190710 SJB Align Camera Disconnect Check, Align Step ì§í ì ì íì¸íë¤. if(pAlignCameraControl) { if(pAlignCameraControl->AlignCameraDisconnectCheck() == FALSE) @@ -1255,9 +1255,9 @@ } else { //�����ߵ� //ì§ìì¼ë¨ Sleep(1000); //TEST ��� //TEST 모ë { SendResultToSignalControl(PCControlSendData_AlignResult_CPJT, SIGNAL_SEND_RESULT_SUCCESS); m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align SUCCESS Data!")); @@ -1266,7 +1266,7 @@ } //�ּ� Ǯ�� //주ì í기 // 4. send align fail signal to plc //SendResultToSignalControl(PCControlSendData_AlignResult_CPJT, SIGNAL_SEND_RESULT_FAIL); //m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Fail Data!")); @@ -1300,7 +1300,7 @@ if (bFileFind == FALSE) { SendResultToSignalControl(PCControlSendData_ReviewResult_CPJT, SIGNAL_SEND_RESULT_FAIL); m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReadRawFile] ������� � ����")); m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReadRawFile] ê²°ê³¼íì¼ ì°¾ê¸° ì¤í¨")); return; } @@ -1308,7 +1308,7 @@ CGlassResult* pGlassResult = m_pSP2P->ISP2P_GetCurrentGlassResult(); if (pGlassResult==NULL) return; //�����޸� Ŀ��� ���� ��ŸƮ(�۶� �ε�) //ê³µì ë©ëª¨ë¦¬ 커ë©ë 리뷰 ì¤íí¸(ê¸ë¼ì¤ ë¡ë©) CDitGlassRawClient* pDitSharedGlassRaw = CDitGlassRawClient::GetInstance(); if(pDitSharedGlassRaw->isConnect() == FALSE) m_pSP2P->ISP2P_DisplayMessage(_T("[DitGlassRawClient] Shared Memory Connect Fail")); @@ -1335,7 +1335,7 @@ int nTotalPlanCount = CalculatePlanData(pGlassResult); m_pSP2P->ISP2P_DisplayMessage(_T("[Read Raw File] Review All Plan Total Count : %d"), nTotalPlanCount); //�����ߵ� //ì§ìì¼ë¨ Sleep(1000); // send review ready SendResultToSignalControl(PCControlSendData_ReviewResult_CPJT, SIGNAL_SEND_RESULT_SUCCESS); @@ -1348,7 +1348,7 @@ m_pSP2P->ISP2P_DisplayMessage(_T("[ReadRawFile] AOI Result File Read Fail![%.3f ms]"), processTimer.GetDurationMilliSecond()); //�׽�Ʈ ��� //í ì¤í¸ 모ë //{ // // send review ready // SendResultToSignalControl(PCControlSendData_ReviewResult_CPJT, SIGNAL_SEND_RESULT_SUCCESS); @@ -1356,7 +1356,7 @@ // m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReadRawFile] Send Review Ready Signal!")); //} //�ּ� ���� //주ì í´ì int nCurPlanIndex = 0; CRsRcpReviewInfo* pRsRcpReviewInfo = m_pSP2P->ISP2P_Recipe_GetRsRcpReviewInfo(); if(pRsRcpReviewInfo) @@ -1378,8 +1378,8 @@ } } //// [2017:5:24]-[WEZASW] : Review Image Upload Dir ����.(FTPUploader���� �ڵ� ���� �Ǵ��� ���� ����� ����) //// '�ݺ��˻�'�� FTPUploader���� ���ε� �� ���� ������ PCControl Glass Unloading �� ��� Loading�� Review������ ���ε� ���(GlassID) ���� ���� ���� //// [2017:5:24]-[WEZASW] : Review Image Upload Dir ìì±.(FTPUploaderìì ìë ìì ëëë¼ë ì¤ì 리뷰ì ìì±) //// 'ë°ë³µê²ì¬'ì FTPUploaderìì ì ë¡ë í ìì ìì ê³¼ PCControl Glass Unloading í ì¦ì Loadingì Reviewììì ì ë¡ë ê²½ë¡(GlassID) ìì± ìì ì¤ë¥ const CNetworkInfo *pNetworkInfo = m_pSP2P->ISP2P_System_GetNetworkInfo(); CString strPath = _T(""); //if(pNetworkInfo && pNetworkInfo->m_strUploadImagePath.IsEmpty() == FALSE) @@ -1394,7 +1394,7 @@ if (CDitGlassRawClient::GetInstance()->GetGlassData() == NULL) return; //���ε� ������ ������ ���� ������ �ٽ� ���ε� ��� Set 20190917chm //ì ë¡ë í´ëê° ìì¼ë©´ í´ë ìì±í ë¤ì ì ë¡ë ê²½ë¡ Set 20190917chm if(Uploadfile.FindFile(strPath)==FALSE) { CTime tmServerLoadingTime = CDitGlassRawClient::GetInstance()->GetGlassData()->m_tmGlassLoading; @@ -1405,7 +1405,7 @@ //taek 210126 rtms ����� �̹��� ���� ���� //taek 210126 rtms ë³´ê³ ì© ì´ë¯¸ì§ í´ë ìì± CreateDirectory(pReviewProcessor->GetRTMSUploadImagePath(),NULL); } @@ -1451,10 +1451,10 @@ // _grmCellData* pCellData = pDitRawClient->GetCellData(0); // if(pCellData) // { // // pCellData->m_nTotalPitchData[0] = int(pTotapPithMeasure->GetTotalPitchBD() * 1000); // ����, �۾��� ���� ���� // // pCellData->m_nTotalPitchData[1] = int(pTotapPithMeasure->GetTotalPitchAC() * 1000); // ����, �۾��� ���� �Ʒ��� // // pCellData->m_nTotalPitchData[2] = int(pTotapPithMeasure->GetTotalPitchAB() * 1000); // ����, �۾��� ���� ���� // // pCellData->m_nTotalPitchData[3] = int(pTotapPithMeasure->GetTotalPitchCD() * 1000); // ����, �۾��� ���� ������ // // pCellData->m_nTotalPitchData[0] = int(pTotapPithMeasure->GetTotalPitchBD() * 1000); // ì¥ì¶, ìì ì ê¸°ì¤ ì쪽 // // pCellData->m_nTotalPitchData[1] = int(pTotapPithMeasure->GetTotalPitchAC() * 1000); // ì¥ì¶, ìì ì ê¸°ì¤ ìë쪽 // // pCellData->m_nTotalPitchData[2] = int(pTotapPithMeasure->GetTotalPitchAB() * 1000); // ë¨ì¶, ìì ì ê¸°ì¤ ì¼ìª½ // // pCellData->m_nTotalPitchData[3] = int(pTotapPithMeasure->GetTotalPitchCD() * 1000); // ë¨ì¶, ìì ì ê¸°ì¤ ì¤ë¥¸ìª½ // } // } // } @@ -1462,7 +1462,7 @@ // { // m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor] TotalPitchMeasure Result Fail!")); // // 190711 SJB, TotalPitchMeasure Fail�ÿ� �ٷ� Motor�� ����� ������ ���ٴ� Motion Enable ��ȣ�� Ȯ������ // // 190711 SJB, TotalPitchMeasure Failìì ë°ë¡ Motorë¡ ëª ë ¹ì ë 리기 ë³´ë¤ë Motion Enable ì í¸ë¥¼ íì¸íì // // if(!pTotapPithMeasure->GetMotorEnable()) // { @@ -1494,9 +1494,9 @@ } else { //�����ߵ� //ì§ìì¼ë¨ //Sleep(1000); //Test��� //Test모ë //SendResultToSignalControl(PCControlSendData_ReviewComplete_CPJT, SIGNAL_SEND_RESULT_SUCCESS); //SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_ReviewComplete_CPJT); //m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewStart] Send Review Success Signal!")); @@ -1525,21 +1525,17 @@ } if (GetLastPointCheck() == FALSE) { Sleep(1000); Sleep(2500); } ReJudgeProcessing(m_pDitGlassRaw); m_pDitGlassRaw->GetGlassData()->m_tmReviewEnd = CTime::GetCurrentTime(); if (m_pDitGlassRaw->isConnect() != FALSE) { m_pDitGlassRaw->SetReviewEnd(); m_pDitGlassRaw->WriteReviewRawBinFile(); } if (m_pDitGlassRaw->isConnect() != FALSE) m_pDitGlassRaw->SetReviewEnd(); m_pDitGlassRaw->GetGlassData()->m_nReviewNum = m_pSP2P->ISP2P_GetReviewProcessor()->GetPlanReviewCount(); //SendDVDataToSignalControl();// �Ⱦ��� //SendDVDataToSignalControl();// ìì°ì¥¬ //OverTime �߻��� ����� END ACK�� ��ٸ��°� �ƴ϶� �� Conplete�� ��ٸ���. //�� ... ���� �����ε��ϴ� �߰� //OverTime ë°ìì ì ì´ìì END ACK를 기ë¤ë¦¬ëê² ìëë¼ ê± Conplete를 기ë¤ë¦°ë¤. //ì ... ë¡ì§ ì¤ë¥ì¸ë°ì¼ë¨ ì¶ê° if (GetLastPointCheck() == FALSE) { @@ -1566,10 +1562,10 @@ m_pSP2P->ISP2P_GetWSIControl(0)->SendWsiAfmSafePosMove(); m_pSP2P->ISP2P_GetWSIControl(1)->SendWsiAfmSafePosMove(); } // ������� ������ Review���� ���� ���� // ê²°ê³¼íì¼ ìì±ì Reviewìì ê´ì¬ ìí¨ if(m_pDitGlassRaw->isConnect()==FALSE) WriteRawData(pGlassResult); //����Ŀ�� �˶� send 20190819chm //ëí¬ì»¤ì¤ ìë send 20190819chm if(pGlassResult->m_nDeFocusCount >0) { SendSignalToSignalControl(PCControlSendSignalIndex_State,PCControlSend_Defoucs,1000); @@ -1579,8 +1575,8 @@ CString strTime = _T(""); strTime.Format(_T("%04d-%02d-%02d %02d:%02d:%02d"), time.GetYear(), time.GetMonth(), time.GetDay(), time.GetHour(), time.GetMinute(), time.GetSecond()); CDlgDefocusList::GetInstance()->SetDefocusTotalCount(pGlassResult->m_nDeFocusCount);//��Ż ī��Ʈ Add CDlgDefocusList::GetInstance()->SetDefocusData(strTime,pGlassResult->m_strGlassID,pGlassResult->m_nDeFocusCount);//ui �߰��� ���� CDlgDefocusList::GetInstance()->SetDefocusTotalCount(pGlassResult->m_nDeFocusCount);//í í ì¹´ì´í¸ Add CDlgDefocusList::GetInstance()->SetDefocusData(strTime,pGlassResult->m_strGlassID,pGlassResult->m_nDeFocusCount);//ui ì¶ê°í ê°±ì } @@ -1594,17 +1590,17 @@ g_pLog->DisplayMessage(_T("History Button Enable")); m_pSP2P->ISP2P_GetDiagnosisHistory2(); /*int nModuleCount = m_pSP2P->ISP2P_GetModuleStatusCount(); //0503 ���� End�� ����� 0���� ï¿½Ê±ï¿½È /*int nModuleCount = m_pSP2P->ISP2P_GetModuleStatusCount(); //0503 리뷰 Endì ì¡°ëª ê° 0ì¼ë¡ ì´ê¸°í for (int nModuleIdx = 0; nModuleIdx < nModuleCount; nModuleIdx++) { { ReviewLight_SetLightLevel(nModuleIdx, 0); g_pLog->DisplayMessage(_T("Module[%d] LightLevel �ʱ�È"), nModuleIdx); g_pLog->DisplayMessage(_T("Module[%d] LightLevel ì´ê¸°í"), nModuleIdx); } }*/ //5. PCControl ��ȣ ������Ʈ //5. PCControl ì í¸ ì ë°ì´í¸ if (pGlassResult) { m_pSP2P->ISP2P_UpdateProcessStatus(GetProcessStatus(), pGlassResult); @@ -1646,8 +1642,8 @@ CString strCode = _T(""); int nDefectCount = pRawData->GetGlassData()->m_nDefectNum; // ���尹�� int nJudgeCount = pRcpReviewInfo->GetRcpZoneFilterInfoCount();// ���� ���� int nDefectCount = pRawData->GetGlassData()->m_nDefectNum; // ëíê°¯ì int nJudgeCount = pRcpReviewInfo->GetRcpZoneFilterInfoCount();// íí° ê°¯ì int nFilterType = 0; int nJudgeType = 0; int nZoneNumber = 0; @@ -1661,7 +1657,7 @@ int nJudgeCellOKCount = 0; int nPixelSize = 0; int nPixelFilterSize = 0; //���� ������ //ëì´ ë°ì´í° //1 wsi, 3 CS, 4 R, 5 G, 6 B //pRawData->GetDefectData(nDefectIdx)->m_ReviewDefect.m_fWsi_ResultData[1];//Defect //pRawData->GetDefectData(nDefectIdx)->m_ReviewDefect.m_fWsi_ResultData[3];//cs @@ -1675,10 +1671,10 @@ { #pragma region ����� fail #pragma region ì¼ë¼ì¸ fail if (m_pSP2P->ISP2P_GetCurrentGlassResult()->GetAlignResult()->nResultCode != Align_Success) { m_pSP2P->ISP2P_DisplayMessage(_T("[TEST Process::ReviewEnd] ����� ���� WSI ���� ������ ���� ����")); m_pSP2P->ISP2P_DisplayMessage(_T("[TEST Process::ReviewEnd] ì¼ë¼ì¸ ì¤í¨ WSI ëì´ ì¬íì ì§í ìí¨")); break; } #pragma endregion @@ -1716,7 +1712,7 @@ if (nPixelFilterSize <= nPixelSize && nPixelFilterSize != 0) { m_pSP2P->ISP2P_DisplayMessage(_T("[ReviewEnd] ������ ���͸� Pixel Size[%d] nPixelFilterSize [%d]"), nPixelSize,nPixelFilterSize); m_pSP2P->ISP2P_DisplayMessage(_T("[ReviewEnd] ì¬ì´ì¦ íí°ë§ Pixel Size[%d] nPixelFilterSize [%d]"), nPixelSize,nPixelFilterSize); continue; } #pragma endregion @@ -1726,13 +1722,13 @@ for (int nJudgeindex = 0; nJudgeindex < nJudgeCount; nJudgeindex++) { //nZoneType = GetZoneType(); dJudgeHight = pRcpReviewInfo->GetRcpZoneFilteringInfo(nJudgeindex)->GetJudgeHeight(); //���� dJudgeHight = pRcpReviewInfo->GetRcpZoneFilteringInfo(nJudgeindex)->GetJudgeHeight(); //ëì´ nFilterType = pRcpReviewInfo->GetRcpZoneFilteringInfo(nJudgeindex)->m_nFilterType; //ZONE nJudge = pRcpReviewInfo->GetRcpZoneFilteringInfo(nJudgeindex)->m_nFilterJudge; //OK TR //nZoneNumber = pRcpReviewInfo->GetRcpZoneInfo(nFilterType)->m_vecZoneNumber[0]; if (pRawData->GetDefectData(nDefectIdx)->m_ReviewDefect.m_nWsi_Type == 2) // 210330 kyh���� if (pRawData->GetDefectData(nDefectIdx)->m_ReviewDefect.m_nWsi_Type == 2) // 210330 kyhë³ê²½ { BOOL isZoneValue = FALSE; @@ -1745,7 +1741,7 @@ } else { m_pSP2P->ISP2P_DisplayMessage(_T("[WSIZoneCheck] Zone[%d], DefectIndex[%d]"), nZoneNumber, pRawData->GetDefectData(nDefectIdx)->m_nDefectIdx); //210330 kyh �α� �߰� m_pSP2P->ISP2P_DisplayMessage(_T("[WSIZoneCheck] Zone[%d], DefectIndex[%d]"), nZoneNumber, pRawData->GetDefectData(nDefectIdx)->m_nDefectIdx); //210330 kyh ë¡ê·¸ ì¶ê° isZoneValue = TRUE; //break; @@ -1754,7 +1750,7 @@ if (isZoneValue == FALSE) { m_pSP2P->ISP2P_DisplayMessage(_T("[WSIZoneCheck] NoFail DefectIndex[%d]"), pRawData->GetDefectData(nDefectIdx)->m_nDefectIdx); //210330 kyh �α� �߰� m_pSP2P->ISP2P_DisplayMessage(_T("[WSIZoneCheck] NoFail DefectIndex[%d]"), pRawData->GetDefectData(nDefectIdx)->m_nDefectIdx); //210330 kyh ë¡ê·¸ ì¶ê° continue; } @@ -1804,13 +1800,13 @@ } } else if (fWsiData<=0) // 0���� ���� ������ ������ ���Ѵ�. else if (fWsiData<=0) // 0ì´í ê°ì ì¬íì ì§íì ìíë¤. { m_pSP2P->ISP2P_DisplayMessage(_T("[TEST Process::ReviewEnd] WSI TYPE[%d] WSI ����[%0.3lf] <= 0 ���� ���� ����"), nJudgeType, fWsiData); m_pSP2P->ISP2P_DisplayMessage(_T("[TEST Process::ReviewEnd] WSI TYPE[%d] WSI ëì´[%0.3lf] <= 0 íì ì§í ìí¨"), nJudgeType, fWsiData); } else { //20210419 TR �������� Judge ���� ������� OK ���� //20210419 TR ê³ ì ì¼ë¡ Judge ë³´ë¤ ë®ìê²½ì° OK ã±ã± //if (nJudge == 1)//TR -> OK //{ if (pRawData->GetDefectData(nDefectIdx)->m_DefectJudgement == DEFECT_JUDGE_CPJT_OK || pRawData->GetDefectData(nDefectIdx)->m_DefectJudgement == DEFECT_JUDGE_CPJT_Unknown) @@ -1861,7 +1857,7 @@ } else //WSI TYPE �� �ƴϸ� else //WSI TYPE ì´ ìëë©´ { continue; } @@ -1875,13 +1871,13 @@ for (int nJudgeindex = 0; nJudgeindex < nJudgeCount; nJudgeindex++) { //nZoneType = GetZoneType(); dJudgeHight = pRcpReviewInfo->GetRcpZoneFilteringInfo_PR(nJudgeindex)->GetJudgeHeight(); //���� dJudgeHight = pRcpReviewInfo->GetRcpZoneFilteringInfo_PR(nJudgeindex)->GetJudgeHeight(); //ëì´ nFilterType = pRcpReviewInfo->GetRcpZoneFilteringInfo_PR(nJudgeindex)->m_nFilterType; //ZONE nJudge = pRcpReviewInfo->GetRcpZoneFilteringInfo_PR(nJudgeindex)->m_nFilterJudge; //OK TR //nZoneNumber = pRcpReviewInfo->GetRcpZoneInfo(nFilterType)->m_vecZoneNumber[0]; if (pRawData->GetDefectData(nDefectIdx)->m_ReviewDefect.m_nWsi_Type == 2) // 210330 kyh���� if (pRawData->GetDefectData(nDefectIdx)->m_ReviewDefect.m_nWsi_Type == 2) // 210330 kyhë³ê²½ { BOOL isZoneValue = FALSE; @@ -1894,7 +1890,7 @@ } else { m_pSP2P->ISP2P_DisplayMessage(_T("[WSIZoneCheck] Zone[%d], DefectIndex[%d]"), nZoneNumber, pRawData->GetDefectData(nDefectIdx)->m_nDefectIdx); //210330 kyh �α� �߰� m_pSP2P->ISP2P_DisplayMessage(_T("[WSIZoneCheck] Zone[%d], DefectIndex[%d]"), nZoneNumber, pRawData->GetDefectData(nDefectIdx)->m_nDefectIdx); //210330 kyh ë¡ê·¸ ì¶ê° isZoneValue = TRUE; //break; @@ -1903,7 +1899,7 @@ if (isZoneValue == FALSE) { m_pSP2P->ISP2P_DisplayMessage(_T("[WSIZoneCheck] NoFail DefectIndex[%d]"), pRawData->GetDefectData(nDefectIdx)->m_nDefectIdx); //210330 kyh �α� �߰� m_pSP2P->ISP2P_DisplayMessage(_T("[WSIZoneCheck] NoFail DefectIndex[%d]"), pRawData->GetDefectData(nDefectIdx)->m_nDefectIdx); //210330 kyh ë¡ê·¸ ì¶ê° continue; } @@ -1957,7 +1953,7 @@ } else { //20210419 TR �������� Judge ���� ������� OK ���� //20210419 TR ê³ ì ì¼ë¡ Judge ë³´ë¤ ë®ìê²½ì° OK ã±ã± //if (nJudge == 1)//TR -> OK //{ if (pRawData->GetDefectData(nDefectIdx)->m_DefectJudgement == DEFECT_JUDGE_CPJT_OK || pRawData->GetDefectData(nDefectIdx)->m_DefectJudgement == DEFECT_JUDGE_CPJT_Unknown) @@ -2009,7 +2005,7 @@ } else //WSI TYPE �� �ƴϸ� else //WSI TYPE ì´ ìëë©´ { continue; } @@ -2024,7 +2020,7 @@ strCode =pRcpReviewInfo->GetRcpZoneFilteringInfo_CODE(nJudgeindex)->m_FilterCode; if (pRawData->GetDefectData(nDefectIdx)->m_ReviewDefect.m_nWsi_Type == 2) // 210330 kyh���� if (pRawData->GetDefectData(nDefectIdx)->m_ReviewDefect.m_nWsi_Type == 2) // 210330 kyhë³ê²½ { nJudgeType = ReJugdeWSIType(nFilterType); @@ -2077,7 +2073,7 @@ m_pSP2P->ISP2P_DisplayMessage(_T("[TEST Process::ReviewEnd] CODE JUDGE WSI TYPE[%d] Defect CODE [%s] != [%s]"), nJudgeType, strCode, pRawData->GetDefectData(nDefectIdx)->m_strDefectCode); } } else //WSI TYPE �� �ƴϸ� else //WSI TYPE ì´ ìëë©´ { continue; } @@ -2088,7 +2084,7 @@ } #pragma region CELLJUDGE //CELL ������//////////////////////////////////////////////////////////////// //CELL ì¬íì //////////////////////////////////////////////////////////////// int nCellCount = pRawData->GetGlassData()->m_nCellNum; @@ -2107,7 +2103,7 @@ else if (pRawData->GetCellData(nCellIndex)->m_nJudgement == Judge_OK_CPJT) { nCelllOKJuge = nCelllOKJuge + 1; } //taek 21.01.25 Juge ���ϴ� ���� ���Ӱ� �ٲ���... } //taek 21.01.25 Juge 구íë ê³³ì ìë¡ê² ë°ê¾¸ì... else if (pRawData->GetCellData(nCellIndex)->m_nJudgement == Judge_PR_CPJT) { nCelllPRJuge = nCelllPRJuge + 1; @@ -2151,7 +2147,7 @@ } else { m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] ī��Ʈ ������ ������ [%02d]Cell DefectTRCount[%d] >= [%d]"), nCellIndex, pRawData->GetCellData(nCellIndex)->m_nDefectNumJudgeTR, pRcpJudgeInfo->GetJudgeCount()); m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] ì¹´ì´í¸ ê°ìê° ììì [%02d]Cell DefectTRCount[%d] >= [%d]"), nCellIndex, pRawData->GetCellData(nCellIndex)->m_nDefectNumJudgeTR, pRcpJudgeInfo->GetJudgeCount()); } break; case JudgeType_T8_PR: @@ -2201,7 +2197,7 @@ } else { m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] ī��Ʈ ������ ������ [%02d]Cell DefectTRCount[%d] <= [%d]"), nCellIndex, pRawData->GetCellData(nCellIndex)->m_nDefectNumJudgeTR, pRcpJudgeInfo->GetSubJudgeCount()); m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] ì¹´ì´í¸ ê°ìê° ììì [%02d]Cell DefectTRCount[%d] <= [%d]"), nCellIndex, pRawData->GetCellData(nCellIndex)->m_nDefectNumJudgeTR, pRcpJudgeInfo->GetSubJudgeCount()); } break; case JudgeType_T8_PR: @@ -2365,7 +2361,7 @@ } m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] CELL COUNT OK:[%d] TR[%d] PR[%d]"), nCelllOKJuge, nCellTRJudge, nCelllPRJuge); #pragma endregion //GLASS ������//////////////////////////////////////////////////////////////// //GLASS ì¬íì //////////////////////////////////////////////////////////////// #pragma region GLASSJUDGE CRsRcpReviewInfo* pRsRcpReviewInfo = m_pSP2P->ISP2P_Recipe_GetRsRcpReviewInfo(); if (pRsRcpReviewInfo == NULL) return FALSE; @@ -2413,7 +2409,7 @@ } else { m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] TR ī��Ʈ�� ������ [%02d]GLASS Defect TR Count[%d] >= [%d]"), nIdx, pRawData->GetGlassData()->m_nDefectNumJudgeTR, pRcpJudgeInfo->GetJudgeCount()); m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] TR ì¹´ì´í¸ê° ììì [%02d]GLASS Defect TR Count[%d] >= [%d]"), nIdx, pRawData->GetGlassData()->m_nDefectNumJudgeTR, pRcpJudgeInfo->GetJudgeCount()); } break; case JudgeType_T8_PR: @@ -2463,7 +2459,7 @@ } else { m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd]TRī��Ʈ�� ������ [%02d]GLASS Defect TR Count[%d] <= [%d]"), nIdx, pRawData->GetGlassData()->m_nDefectNumJudgeTR, pRcpJudgeInfo->GetSubJudgeCount()); m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd]TRì¹´ì´í¸ê° ììì [%02d]GLASS Defect TR Count[%d] <= [%d]"), nIdx, pRawData->GetGlassData()->m_nDefectNumJudgeTR, pRcpJudgeInfo->GetSubJudgeCount()); } break; case JudgeType_T8_PR: @@ -2651,7 +2647,7 @@ CakFileUtil akFileFinder; while (nReTryTime--) { //#3359_LYW CF AOI Review REVIEW_LOADING_COMPLETE_TIMEOVER �˶� �߻� ���� �м� START //#3359_LYW CF AOI Review REVIEW_LOADING_COMPLETE_TIMEOVER ìë ë°ì ìì¸ ë¶ì START if (nReTryTime%2 == 0) { strFilePath = AOIRAWBIN_PATH; @@ -2660,9 +2656,9 @@ strWild.Format("%s\\%s_*.bin", strFilePath, strFileName); akFileFinder.FindFile(strWild.GetBuffer(0), FALSE); //LYW LOG�߰� //LYW LOGì¶ê° g_pLog->DisplayMessage(_T("[GlassLoading][FindRawBinFile] Find Path = %s, RetryCount = %d, ResultCode = [%d]"), strFilePath, 30-nReTryTime, GetLastError()); //#3359_LYW CF AOI Review REVIEW_LOADING_COMPLETE_TIMEOVER �˶� �߻� ���� �м� END //#3359_LYW CF AOI Review REVIEW_LOADING_COMPLETE_TIMEOVER ìë ë°ì ìì¸ ë¶ì END VECFINDDATA* pFindData = akFileFinder.getFindData(); int nFileNamePos = strlen(akFileFinder.getProcessPath()); std::map<LONGLONG, CString> mapSpanFileName; @@ -2674,7 +2670,7 @@ parser.process(pFileName, "_."); if (parser.getTokNum() < 4) continue; if (parser.getTokNum() >= 6) continue; // 0401 �߰� if (parser.getTokNum() >= 6) continue; // 0401 ì¶ê° int nDataTime[8] = {}; { @@ -2702,7 +2698,7 @@ { if (mapSpanFileName.begin()->first < nCloseTime) { //���� �ֱ� ������� � ���� [������ 2019/7/17] //ê°ì¥ ìµê·¼ ê²°ê³¼íì¼ ì°¾ê¸° ì±ê³µ [ê¹íí 2019/7/17] strFindFile = mapSpanFileName.begin()->second; break; } @@ -2762,7 +2758,7 @@ int nPCControlReadDataCount = pSignalInfo->GetReadDataAddressCount(); // [2017:1:9]-[WEZASW] : PCControl GlassData �׸� ������. // [2017:1:9]-[WEZASW] : PCControl GlassData í목 ì¬ì ì. if(pSignalInfo->GetUseContinuousReadAddress()) { CString strReadAddress = _T(""); @@ -3141,11 +3137,11 @@ void CSequenceProcessor_CPJT::UpdateGlassResultFromTransferData(CGlassResult *pGlassResult, STransferData* pTransferData) { m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Loading] Transfer Data �б�!")); m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Loading] Transfer Data ì½ê¸°!")); if (pGlassResult==NULL || pTransferData==NULL) return; // [2017:1:9]-[WEZASW] : PCControl GlassData �׸� ������ // [2017:1:9]-[WEZASW] : PCControl GlassData í목 ì¬ì ì // transfer data is not exist if (pTransferData->strLotID.GetLength()<1) { @@ -3214,10 +3210,10 @@ pGlassResult->m_strPairFlag = pTransferData->strPairFlag; pGlassResult->m_strOptionValue = pTransferData->strOptionValue; pGlassResult->m_strReserved = pTransferData->strReserved; pGlassResult->strGlassScanSchedule = pTransferData->strGlassScanSchedule;//���� ���� cmark pGlassResult->strGlassScanSchedule = pTransferData->strGlassScanSchedule;//ë¶í ì ë³´ cmark pGlassResult->m_strRTMSStepID = pTransferData->strStepID; //taek 210126 m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Loading] Transfer Data ��!")); m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Loading] Transfer Data ë!")); } void CSequenceProcessor_CPJT::UpdateHistoryResultFromTransferData(CGlassResult *pHistoryResult, CGlassResult* pGlassResult) @@ -3275,7 +3271,7 @@ pHistoryResult->m_strPairFlag = pGlassResult->m_strPairFlag; pHistoryResult->m_strOptionValue = pGlassResult->m_strOptionValue; pHistoryResult->m_strReserved = pGlassResult->m_strReserved; pHistoryResult->strGlassScanSchedule = pGlassResult->strGlassScanSchedule;//���� ���� cmark pHistoryResult->strGlassScanSchedule = pGlassResult->strGlassScanSchedule;//ë¶í ì ë³´ cmark pHistoryResult->m_strStepID = pGlassResult->m_strRTMSStepID; //taek 210126 pHistoryResult->m_strEquipID = pGlassResult->m_strEquipID; pHistoryResult->m_strProcessID = pGlassResult->m_strProcessID; @@ -3287,7 +3283,7 @@ void CSequenceProcessor_CPJT::CreateResultDirectory(const CString& strGlassID, const CString& strDate) { m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Loading] ���丮 ����� ����")); m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Loading] ëë í 리 ë§ë¤ê¸° ìì")); if (m_pSP2P==NULL) return; const CNetworkInfo *pNetworkInfo = m_pSP2P->ISP2P_System_GetNetworkInfo(); @@ -3333,7 +3329,7 @@ strPath.Format(_T("%s\\%s"),pNetworkInfo->m_strAlignImagePath, strGlassID); CreateDirectory(strPath, NULL); } m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Loading] ���丮 ����� ��")); m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Loading] ëë í 리 ë§ë¤ê¸° ë")); } @@ -3341,7 +3337,7 @@ void CSequenceProcessor_CPJT::SetSaveImageBasePathToReviewProcessor(const CString& strGlassID, const CString& strResultDate) { m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Loading] �̹��� �н� ����� ����")); m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Loading] ì´ë¯¸ì§ í¨ì¤ ë§ë¤ê¸° ìì")); const CNetworkInfo *pNetworkInfo = m_pSP2P->ISP2P_System_GetNetworkInfo(); if(pNetworkInfo == NULL) return; @@ -3349,7 +3345,6 @@ if(pReviewProcessor == NULL) return; CString strPath = _T(""); CString strImagePath = _T(""); if(pNetworkInfo->m_strLocalImagePath.IsEmpty() == FALSE && strGlassID.IsEmpty() == FALSE) { CTime snapTime = CTime::GetCurrentTime(); @@ -3386,11 +3381,11 @@ Sleep(1000); if (CDitGlassRawClient::GetInstance()->isConnect() == FALSE) { m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading]�����޸� ���� ���� Count[%d]"), nReconnect); m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading]ê³µì ë©ëª¨ë¦¬ ì°ê²° ì¤í¨ Count[%d]"), nReconnect); } else { m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading]�����޸� ���� ����")); m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading]ê³µì ë©ëª¨ë¦¬ ì°ê²° ì±ê³µ")); break; } nReconnect += 1; @@ -3405,29 +3400,25 @@ { strPath.Format(_T("%s\\%s_%04d%02d%02d%02d%02d%02d"), pNetworkInfo->m_strUploadImagePath, strGlassID, tmServerLoadingTime.GetYear(), tmServerLoadingTime.GetMonth(), tmServerLoadingTime.GetDay(), tmServerLoadingTime.GetHour(), tmServerLoadingTime.GetMinute(), tmServerLoadingTime.GetSecond()); strImagePath.Format(_T("%s_%04d%02d%02d%02d%02d%02d"), strGlassID, tmServerLoadingTime.GetYear(), tmServerLoadingTime.GetMonth(), tmServerLoadingTime.GetDay(), tmServerLoadingTime.GetHour(), tmServerLoadingTime.GetMinute(), tmServerLoadingTime.GetSecond()); CreateDirectory(strPath, NULL); pReviewProcessor->SetUploadImagePath(strPath); pReviewProcessor->SetReviewImagePath(strImagePath); } else { tmServerLoadingTime = CTime::GetCurrentTime(); m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading] �����޸� �����̻�")); m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading] ê³µì ë©ëª¨ë¦¬ ì ê·¼ì´ì")); strPath.Format(_T("%s\\%s_%04d%02d%02d%02d%02d%02d"), pNetworkInfo->m_strUploadImagePath, strGlassID, tmServerLoadingTime.GetYear(), tmServerLoadingTime.GetMonth(), tmServerLoadingTime.GetDay(), tmServerLoadingTime.GetHour(), tmServerLoadingTime.GetMinute(), tmServerLoadingTime.GetSecond()); strImagePath.Format(_T("%s\\%s_%04d%02d%02d%02d%02d%02d"), strGlassID, tmServerLoadingTime.GetYear(), tmServerLoadingTime.GetMonth(), tmServerLoadingTime.GetDay(), tmServerLoadingTime.GetHour(), tmServerLoadingTime.GetMinute(), tmServerLoadingTime.GetSecond()); CreateDirectory(strPath, NULL); pReviewProcessor->SetUploadImagePath(strPath); pReviewProcessor->SetReviewImagePath(strImagePath); } } m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Loading] �̹��� �н� ����� ��")); m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Loading] ì´ë¯¸ì§ í¨ì¤ ë§ë¤ê¸° ë")); } void CSequenceProcessor_CPJT::SetSaveImageBasePathToAlignCameraControl(const CString& strGlassID) { m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Loading] ����� �̹��� �н� ���� ")); m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Loading] ì¼ë¼ì¸ ì´ë¯¸ì§ í¨ì¤ ìì ")); const CNetworkInfo *pNetworkInfo = m_pSP2P->ISP2P_System_GetNetworkInfo(); if(pNetworkInfo == NULL) return; @@ -3440,7 +3431,7 @@ strPath.Format(_T("%s\\%s"), pNetworkInfo->m_strAlignImagePath, strGlassID); pAlignCameraControl->SetSaveImageBasePath(strPath); } m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Loading] ����� �̹��� �н� �� ")); m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Loading] ì¼ë¼ì¸ ì´ë¯¸ì§ í¨ì¤ ë ")); } BOOL CSequenceProcessor_CPJT::ReadRecipeDataFromRecipeFile(const CString& strPPID_RC, CString& strRecipeName)// const CString& strPPID, CString& strRecipeName @@ -3507,14 +3498,14 @@ { if(pGlassResult == NULL) return FALSE; // ������ ���� // ë ìí¼ ì¤ì const CRsRcpReviewInfo* pRsRcpReviewInfo = m_pSP2P->ISP2P_Recipe_GetRsRcpReviewInfo(); if (pRsRcpReviewInfo==NULL) return FALSE; // system info const CSystemInfo* pSystemInfo = m_pSP2P->ISP2P_System_GetSystemInfo(); // �۶� ���� // ê¸ë¼ì¤ ì ë³´ STransferData* pTransferData = m_pSP2P->ISP2P_GetCurrentTransferData(); if (pTransferData==NULL) return FALSE; int nGlassTypeInfoIndex = 0; @@ -3530,20 +3521,20 @@ if (pGlassTypeInfo == NULL) return FALSE; m_pSP2P->ISP2P_DisplayMessage(_T("GlassTypeName : %s,GlassTypeIdx : %s"),pGlassTypeInfo->m_strGlassTypeName,pTransferData->strGlassScanSchedule); // ���� ���� // ëª¨í° ì ë³´ const CMotorControlInfo *pMotorInfo = m_pSP2P->ISP2P_System_GetMotorInfo(); // ��ǥ ��ȯ�� // ì¢í ë³í기 CCoordCalibrator* pCoordCalibrator = m_pSP2P->ISP2P_GetCoordCalibrator(); // ��ǥ�� ���� // ì¢íê³ ì¤ì if (pSystemInfo && pGlassTypeInfo && pMotorInfo && pCoordCalibrator) { // Get Direction int nDirectionX = GetDirectionX(pGlassTypeInfo->m_nOriginDirection, pMotorInfo->GetOriginDirection()); int nDirectionY = GetDirectionY(pGlassTypeInfo->m_nOriginDirection, pMotorInfo->GetOriginDirection()); // ��ǥ�� ���� // ì¢íê³ ì¤ì pCoordCalibrator->SetTransDirection(nDirectionX, nDirectionY); pCoordCalibrator->SetOriginMotorPosition(pGlassTypeInfo->m_dOriginMotorX, pGlassTypeInfo->m_dOriginMotorY); if (fabs(pGlassTypeInfo->m_dAlignAngle) > 0.0000001) @@ -3552,7 +3543,7 @@ pGlassTypeInfo->m_dFirstAlignGlassX, pGlassTypeInfo->m_dFirstAlignGlassY, pGlassTypeInfo->m_dAlignAngle); } // �۶� ���� ���� // ê¸ë¼ì¤ ì ë³´ ì¤ì pGlassResult->SetGlassSize(pGlassTypeInfo->m_nGlassSizeX * 1000, pGlassTypeInfo->m_nGlassSizeY * 1000); pGlassResult->SetGlassOriginDirection(pGlassTypeInfo->m_nOriginDirection); pGlassResult->SetCornerCutDirection(pGlassTypeInfo->m_nCornerCutDirection); @@ -3561,34 +3552,34 @@ pGlassResult->SetCollisionDistanceX(int(pSystemInfo->m_dCollisionDistance*1000.)); } // Align ���� // Align ì ë³´ const CRsRcpAlignInfo* pRsRcpAlignInfo = m_pSP2P->ISP2P_Recipe_GetRsRcpAlignInfo(); // Align ���� ���� // Align ì ë³´ ì¤ì if (pGlassTypeInfo && pRsRcpAlignInfo) { // Align ��ũ ���� ���� (�ȼ�, ����, �۶� ��ġ) // Align ë§í¬ ì ë³´ ì¤ì (í½ì , 모í°, ê¸ë¼ì¤ ìì¹) pGlassResult->m_AlignRecipe.m_nUseAlignPosMove = pGlassTypeInfo->m_nUseAlignPosMove; // �ȼ� ��ġ // í½ì ìì¹ pGlassResult->m_AlignRecipe.dOriginPixelX[0] = pGlassTypeInfo->m_nFirstAlignFindPixelX; pGlassResult->m_AlignRecipe.dOriginPixelY[0] = pGlassTypeInfo->m_nFirstAlignFindPixelY; pGlassResult->m_AlignRecipe.dOriginPixelX[1] = pGlassTypeInfo->m_nSecondAlignFindPixelX; pGlassResult->m_AlignRecipe.dOriginPixelY[1] = pGlassTypeInfo->m_nSecondAlignFindPixelY; // ���� ��ġ // ëª¨í° ìì¹ pGlassResult->m_AlignRecipe.dOriginPositionX[0] = pGlassTypeInfo->m_dFirstAlignMotorX; pGlassResult->m_AlignRecipe.dOriginPositionY[0] = pGlassTypeInfo->m_dFirstAlignMotorY; pGlassResult->m_AlignRecipe.dOriginPositionX[1] = pGlassTypeInfo->m_dSecondAlignMotorX; pGlassResult->m_AlignRecipe.dOriginPositionY[1] = pGlassTypeInfo->m_dSecondAlignMotorY; // �۶� ��ġ // ê¸ë¼ì¤ ìì¹ pGlassResult->m_AlignRecipe.dGlassPositionX[0] = pGlassTypeInfo->m_dFirstAlignGlassX; pGlassResult->m_AlignRecipe.dGlassPositionY[0] = pGlassTypeInfo->m_dFirstAlignGlassY; pGlassResult->m_AlignRecipe.dGlassPositionX[1] = pGlassTypeInfo->m_dSecondAlignGlassX; pGlassResult->m_AlignRecipe.dGlassPositionY[1] = pGlassTypeInfo->m_dSecondAlignGlassY; // Align Recipe ���� ���� �ڵ����� � ����� // Align Recipe ì ë³´ ì¤ì ìëê´ë 찾기 íë¼ë¯¸í° // Align Skip Mode pGlassResult->m_AlignRecipe.bAlignSkipMode = pRsRcpAlignInfo->m_bAlignSkipMode; pGlassResult->m_AlignRecipe.bUseTotalPitchMeasure = pRsRcpAlignInfo->m_bTotalPitchMeasure; @@ -3608,29 +3599,29 @@ pGlassResult->m_AlignRecipe.nMergeRange = pRsRcpAlignInfo->m_nMergeRange; pGlassResult->m_AlignRecipe.dEdgeRate = pRsRcpAlignInfo->m_dEdgeRate; // ����ð� // ë ¸ì¶ìê° pGlassResult->m_AlignRecipe.bManualProcess = pRsRcpAlignInfo->m_bManualProcess; pGlassResult->m_AlignRecipe.dFirstCamExposure = pRsRcpAlignInfo->m_dFirstCamExposure; pGlassResult->m_AlignRecipe.dSecondCamExposure = pRsRcpAlignInfo->m_dSecondCamExposure; // �ڵ����� ���� // ìëê´ë ì¡°ê±´ pGlassResult->m_AlignRecipe.bAutoProcess = pRsRcpAlignInfo->m_bAutoProcess; pGlassResult->m_AlignRecipe.dTargetMin = pRsRcpAlignInfo->m_dTargetMin; pGlassResult->m_AlignRecipe.dTargetMax = pRsRcpAlignInfo->m_dTargetMax; pGlassResult->m_AlignRecipe.dExposureMin = pRsRcpAlignInfo->m_dExposureMin; pGlassResult->m_AlignRecipe.dExposureMax = pRsRcpAlignInfo->m_dExposureMax; // Align Recipe ���� ���� rotate info // Align Recipe ì ë³´ ì¤ì rotate info pGlassResult->m_AlignRecipe.bRotateProcess = pRsRcpAlignInfo->m_bRotateProcess; pGlassResult->m_AlignRecipe.nRetryCount = pRsRcpAlignInfo->m_nRetryCount; pGlassResult->m_AlignRecipe.dGlassAngleMin = pRsRcpAlignInfo->m_dGlassAngleMin; pGlassResult->m_AlignRecipe.dGlassAngleMax = pRsRcpAlignInfo->m_dGlassAngleMax; // Align ī�޶� ���� �� �ػ� ���� // Align ì¹´ë©ë¼ ë°©í¥ ë° í´ìë ì¤ì int nAlignCameraInfoCount = 2; for(int nAlignCameraIdx = 0; nAlignCameraIdx < nAlignCameraInfoCount; nAlignCameraIdx++) { // Align ���� �� ��������. // Align ì¡°ëª ê° ê°ì ¸ì¤ê¸°. int nLightValue = 0; @@ -3638,10 +3629,10 @@ { nLightValue = (nAlignCameraIdx==0) ? (int)pRsRcpAlignInfo->m_dFirstCamExposure: (int)pRsRcpAlignInfo->m_dSecondCamExposure; // ����� ī�޶� ���� �������� // ì¼ë¼ì¸ ì¹´ë©ë¼ ì ë³´ ê°ì ¸ì¤ê¸° const CAlignCameraInfo *pCameraInfo = m_pSP2P->ISP2P_System_GetAlignCameraInfo(nAlignCameraIdx); //����� ����. //ì¡°ëª ê° ë³ê²½. CLightControl *pLightControl = NULL; const CLightControlInfo *AlignLightinfo = pCameraInfo->GetLightContorlInfo(); @@ -3650,8 +3641,8 @@ { if (AlignLightinfo->GetMaster()==1&& nAlignCameraIdx==1) { //����� ��Ʋ�ѷ��� �ϳ��� ����Ǿ� ������ ������ ���η� Ȯ�� //������ �̰� �´��� �𸣰ٴ� �ƹ��� �Ⱦ˷��� //ì¼ë¼ì¸ 컨í롤ë¬ê° íëë§ ì°ê²°ëì´ ììë ë§ì¤í° ì¬ë¶ë¡ íì¸ //ìì§í ì´ê±° ë§ëì§ ëª¨ë¥´ê²ë¤ ì무ë ììë´ì¥¼ pLightControl = m_pSP2P->ISP2P_GetAlignLightControl(0); } @@ -3686,7 +3677,7 @@ } // ����� ī�޶� ���� �������� // ì¼ë¼ì¸ ì¹´ë©ë¼ ì ë³´ ê°ì ¸ì¤ê¸° const CAlignCameraInfo *pCameraInfo = m_pSP2P->ISP2P_System_GetAlignCameraInfo(nAlignCameraIdx); if (pCameraInfo) { @@ -3714,7 +3705,7 @@ } } // ����� ���ø� ���� �������� // ì¼ë¼ì¸ í í릿 ì ë³´ ê°ì ¸ì¤ê¸° if((int)pGlassTypeInfo->m_vecTemplateImagePath.size() == nAlignCameraInfoCount) { pGlassResult->m_AlignRecipe.strTemplateName[nAlignCameraIdx] = pGlassTypeInfo->m_vecTemplateImagePath[nAlignCameraIdx]; @@ -3743,14 +3734,14 @@ if (pRcpReviewAFMInfo) { int nRealAFMIndex = pRcpReviewAFMInfo->m_nRecipeIndex; if(nRealAFMIndex == -1)// �����ǿ� ���õ� ������ ���� MagnificInfo Index�� �˾ƿ� if(nRealAFMIndex == -1)// ë ìí¼ì ì íë ë°°ì¨ì ì¤ì MagnificInfo Index를 ììì´ { //-1�� ��� ���� ��� ������ ��. //-1ì ê²½ì° ë°°ì¨ ì¸ë±ì¤ ê°ì ¸ë¤ ì. nRealAFMIndex = GetRealMagnification(nModuleIdx, pRcpReviewAFMInfo->m_nZoomIndex); } AFM_SetAFMRecipeName(nModuleIdx, strRecipeName, nRealAFMIndex); if(pRcpReviewAFMInfo->m_bAFMHomeOffMode==TRUE) //190618AFMȨ ������ ���� X if(pRcpReviewAFMInfo->m_bAFMHomeOffMode==TRUE) //190618AFMí ìíì¤ ì§í X { SetUseAfmHomePosition(FALSE); } @@ -3762,7 +3753,7 @@ } } // ���� � ������ ���� // ê²°í¨ ì°¾ê¸° ë ìí¼ ì¤ì CReviewProcessor* pReviewProcessor = m_pSP2P->ISP2P_GetReviewProcessor(); const CRsRcpDefectFindInfo* pRsRcpDefectFindInfo = m_pSP2P->ISP2P_Recipe_GetRsRcpDefectFindInfo(); if(pReviewProcessor && pRsRcpDefectFindInfo) @@ -3813,7 +3804,7 @@ CString strRawTDPath=_T(""), strRawCDPath=_T(""), strRawSDPath=_T(""); // ������� �̸� � // ê²°ê³¼íì¼ ì´ë¦ 찾기 FindAOIRawFilePath(pGlassResult, &strRawTDPath, &strRawCDPath, &strRawSDPath); bRet = m_pSP2P->ISP2P_ReadAOIRawFileToGlassResult(strRawTDPath); @@ -3867,7 +3858,7 @@ if(finder.IsDots()) continue; if(finder.IsDirectory()) continue; // [2017:5:16]-[WEZASW] : AOI Server�� ���� ���� ��ġ�� ���Ը� �̹��� ���� ����� ���� ���ϸ� ���� // [2017:5:16]-[WEZASW] : AOI Serverì ê²°í¨ íì¼ ìì¹ì ê²°í¨ë§µ ì´ë¯¸ì§ íì¼ ì¡´ì¬ë¡ ê²°í© íì¼ë§ ì¶ì¶ sRawFile.strFileName = finder.GetFileName(); strExtTemp = sRawFile.strFileName; int nIdx = strExtTemp.Remove('.'); @@ -4045,7 +4036,7 @@ CModuleStatus* pModuleStatus = Module_GetModuleStatus(nModuleIdx); if (pModuleStatus == NULL) continue; //�浹�Ÿ� �ֱ� //ì¶©ë거리 ë£ê¸° { double dCollisionPosX = pReviewResult->GetCollisionPositionX() / 1000.0; @@ -4086,13 +4077,13 @@ } //�¿� ��Ʈ�� �����̵� //ì¢ì° ê²í¸ë¦¬ ëìì´ë pMotorControl->GantrySetTwoGantrySyncModeSend(0); // set result index int nStartIdx = pReviewResult->GetStartSReviewResultIndex(); int nEndIdx = pReviewResult->GetEndSReviewResultIndex(); nEndIdx = min(nEndIdx, (pReviewResult->GetSReviewResultCount()-1)) + 1; // End Index �ٽü��� nEndIdx = min(nEndIdx, (pReviewResult->GetSReviewResultCount()-1)) + 1; // End Index ë¤ìì¤ì double xpostemp, ypostemp; // get review pos @@ -4102,7 +4093,7 @@ SReviewResult* pReview = pReviewResult->GetSReviewResult(nResultIdx); if (pReview==NULL) continue; //200�� ��巹���� ������ �Ϸ�������� �ߺ�üũ //200ê° ì´ëë ì¤ë¥¼ ë³´ë¸í ìë£ìì ìì ì¤ë³µì²´í¬ if (pReview->bCheckSendToMotor == FALSE) { pReview->bCheckSendToMotor = TRUE; @@ -4149,7 +4140,7 @@ } } //���� ����Ʈ�� �ִ��� ������ üũ //ë³´ë¼ í¬ì¸í¸ê° ìëì§ ìëì§ ì²´í¬ if (vectorPosX.empty() ==TRUE) { g_pLog->DisplayMessage(_T("[GantryAutoGo] No Exist Send Point "), vectorPosX.size()); @@ -4181,13 +4172,13 @@ int nTickCount = GetTickCount(); while (1) { //5�� ����Ÿ�� //5ì´ ì¤ë²íì if ((GetTickCount() - nTickCount) > 5000) { bOverTime = TRUE; break; } //���� ��� End üũ //ëª¨í° ëª¨ì End ì²´í¬ if (pMotorControl->IsGantryMotionEnd(pModuleStatus->GetGantryIndex()) == TRUE) { if (pMotorControl->GantryAutoGo(pModuleStatus->GetGantryIndex(), vectorPosX, vectorPosY, TRUE)) @@ -4206,15 +4197,15 @@ } //5���Ŀ��� �ȿ����δ�? �׷� 3�� ��õ� ���� //���End �� �߸� ���ü��� ������ //5ì´íìë ììì§ì¸ë¤? ê·¸ë¼ 3ë² ì¬ìë ã±ã± //모ì End ê° ì못 ëì¬ìë ìì¼ë if (bOverTime == TRUE) { for (int i = 0; i < 3; i++) { Sleep(1000); //���Ͱ� �����ϼ� ���»����϶� Send ��ȣ�� Fail �߻� ���� Retry 3�� ���� //모í°ê° ìì§ì¼ì ìëìíì¼ë Send ì í¸ì Fail ë°ì ê°ë¥ Retry 3ë² ã±ã± if (pMotorControl->GantryAutoGo(pModuleStatus->GetGantryIndex(), vectorPosX, vectorPosY, TRUE)) { nTotalCount += (int)vectorPosX.size(); @@ -4288,7 +4279,7 @@ if(pGlassResult && pReviewProcessor) { // UserStart pReviewProcessor->SetJobID(pGlassResult->m_strJobID); //pGlassResult->m_strGlassID -> pGlassResult->m_strJobID ���� pReviewProcessor->SetJobID(pGlassResult->m_strJobID); //pGlassResult->m_strGlassID -> pGlassResult->m_strJobID ë³ê²½ pReviewProcessor->SetOperID(pGlassResult->m_strOperID); m_pSP2P->ISP2P_UpdateReviewProcessStatus(ReviewProcessStatus_UserStart, nPlanIndex); @@ -4351,7 +4342,7 @@ CModuleStatus* pModuleStatus = Module_GetModuleStatus(nModuleIdx); if (pModuleStatus == NULL) continue; //�浹�Ÿ� �ֱ� //ì¶©ë거리 ë£ê¸° { double dCollisionPosX = pReviewResult->GetCollisionPositionX() / 1000.0; @@ -4394,9 +4385,9 @@ // set result index int nStartIdx = pReviewResult->GetStartSReviewResultIndex(); int nEndIdx = pReviewResult->GetEndSReviewResultIndex(); nEndIdx = min(nEndIdx, (pReviewResult->GetSReviewResultCount() - 1)) + 1; // End Index �ٽü��� nEndIdx = min(nEndIdx, (pReviewResult->GetSReviewResultCount() - 1)) + 1; // End Index ë¤ìì¤ì // [2017:3:8]-[WEZASW] : CameraOffset ���� ���� (-1~1 => -5~5) // [2017:3:8]-[WEZASW] : CameraOffset ë²ì ë³ê²½ (-1~1 => -5~5) double m_dMinOffset = -5.0; double m_dMaxOffset = 5.0; double xpostemp, ypostemp; @@ -4407,7 +4398,7 @@ SReviewResult* pReview = pReviewResult->GetSReviewResult(nResultIdx); if (pReview == NULL) continue; //200�� ��巹���� ������ �Ϸ�������� �ߺ�üũ //200ê° ì´ëë ì¤ë¥¼ ë³´ë¸í ìë£ìì ìì ì¤ë³µì²´í¬ if (pReview->bCheckSendToMotor == FALSE) { pReview->bCheckSendToMotor = TRUE; @@ -4455,7 +4446,7 @@ } } //���� ����Ʈ�� �ִ��� ������ üũ //ë³´ë¼ í¬ì¸í¸ê° ìëì§ ìëì§ ì²´í¬ if (vectorPosX.empty() == TRUE) { g_pLog->DisplayMessage(_T("[GantryAutoGo] No Exist Send Point "), vectorPosX.size()); @@ -4520,7 +4511,7 @@ if(pGlassResult && pReviewProcessor) { // WsiStart pReviewProcessor->SetJobID(pGlassResult->m_strJobID); // pGlassResult->m_strGlassID -> pGlassResult->m_strJobID ���� pReviewProcessor->SetJobID(pGlassResult->m_strJobID); // pGlassResult->m_strGlassID -> pGlassResult->m_strJobID ë³ê²½ pReviewProcessor->SetOperID(pGlassResult->m_strOperID); m_pSP2P->ISP2P_UpdateReviewProcessStatus(ReviewProcessStatus_WSIStart, nPlanIndex); @@ -4533,7 +4524,7 @@ MakeWSIUpLoadDirectory(pReviewProcessor->GetUploadImagePath()); //20190219 chm pReviewProcessor->SetReviewCount(0); // ���� Sequence No �ʱ�È. pReviewProcessor->SetReviewCount(0); // 리뷰 Sequence No ì´ê¸°í. return TRUE; } @@ -4546,7 +4537,7 @@ strPath = strPath + _T("\\WSI"); if(CreateDirectory(strPath,NULL)==FALSE) { //LYW LOG�߰� //LYW LOGì¶ê° g_pLog->DisplayMessage(_T("[MakeWSIUpLoadDirectory]Directory Create Fail %s, ERROR CODE = %d "),strPath, GetLastError()); } @@ -4587,7 +4578,7 @@ VectorDouble vectorCollisionPosX; vectorCollisionPosX.clear(); //WSI �¿� ��Ʈ�� �����̵� //WSI ì¢ì° ê²í¸ë¦¬ ëìì´ë pMotorControl->GantrySetTwoGantrySyncModeSend(1); @@ -4601,7 +4592,7 @@ CModuleStatus* pModuleStatus = Module_GetModuleStatus(nModuleIdx); if (pModuleStatus == NULL) continue; //�浹�Ÿ� �ֱ� //ì¶©ë거리 ë£ê¸° { double dCollisionPosX = pWsiResult->GetCollisionPositionX() / 1000.0; double dCollisionPosY = 0.0; @@ -4643,7 +4634,7 @@ int nEndIdx = pWsiResult->GetEndSReviewResultIndex(); nEndIdx = min(nEndIdx, (pWsiResult->GetSReviewResultCount() - 1)) + 1; // set End Index // [2017:3:8]-[WEZASW] : CameraOffset ���� ���� (-1~1 => -5~5) // [2017:3:8]-[WEZASW] : CameraOffset ë²ì ë³ê²½ (-1~1 => -5~5) double m_dMinOffset = -5.0; double m_dMaxOffset = 5.0; @@ -4655,7 +4646,7 @@ SReviewResult* pWsi = pWsiResult->GetSReviewResult(nResultIdx); if (pWsi == NULL) continue; //200�� ��巹���� ������ �Ϸ�������� �ߺ�üũ //200ê° ì´ëë ì¤ë¥¼ ë³´ë¸í ìë£ìì ìì ì¤ë³µì²´í¬ if (pWsi->bCheckWSISendToMotor == FALSE) { pWsi->bCheckWSISendToMotor = TRUE; @@ -4702,14 +4693,14 @@ } } //���� ����Ʈ�� �ִ��� ������ üũ //ë³´ë¼ í¬ì¸í¸ê° ìëì§ ìëì§ ì²´í¬ if (vectorPosX.empty() == TRUE) { //3360 LYW_ CF AOI QD Review WSI XY MotorMoving Error �˶� �߻� ���� �м� �� ��ġ START //3360 LYW_ CF AOI QD Review WSI XY MotorMoving Error ìë ë°ì ìì¸ ë¶ì ë° ì¡°ì¹ START g_pLog->DisplayMessage(_T("[GantryAutoGo] No Exist Send Point,TwoGantrySyncMode OFF!"), vectorPosX.size()); g_pLog->DisplayMessage(_T("[GantryAutoGo] (%d)Gantry Path Send Fail"), pModuleStatus->GetGantryIndex()); //taek 210128 pMotorControl->GantrySetTwoGantrySyncModeSend(0); //3360 LYW_ CF AOI QD Review WSI XY MotorMoving Error �˶� �߻� ���� �м� �� ��ġ END //3360 LYW_ CF AOI QD Review WSI XY MotorMoving Error ìë ë°ì ìì¸ ë¶ì ë° ì¡°ì¹ END } else { @@ -4733,13 +4724,13 @@ int nTickCount = GetTickCount(); while (1) { //5�� ����Ÿ�� //5ì´ ì¤ë²íì if ((GetTickCount() - nTickCount) > 5000) { bOverTime = TRUE; break; } //���� ��� End üũ //ëª¨í° ëª¨ì End ì²´í¬ if (pMotorControl->IsGantryMotionEnd(pModuleStatus->GetGantryIndex()) == TRUE) { if (pMotorControl->GantryAutoGo(pModuleStatus->GetGantryIndex(), vectorPosX, vectorPosY, TRUE)) @@ -4758,15 +4749,15 @@ } //5���Ŀ��� �ȿ����δ�? �׷� 3�� ��õ� ���� //���End �� �߸� ���ü��� ������ //5ì´íìë ììì§ì¸ë¤? ê·¸ë¼ 3ë² ì¬ìë ã±ã± //모ì End ê° ì못 ëì¬ìë ìì¼ë if (bOverTime == TRUE) { for (int i = 0; i < 3; i++) { Sleep(1000); //���Ͱ� �����ϼ� ���»����϶� Send ��ȣ�� Fail �߻� ���� Retry 3�� ���� //모í°ê° ìì§ì¼ì ìëìíì¼ë Send ì í¸ì Fail ë°ì ê°ë¥ Retry 3ë² ã±ã± if (pMotorControl->GantryAutoGo(pModuleStatus->GetGantryIndex(), vectorPosX, vectorPosY, TRUE)) { nTotalCount += (int)vectorPosX.size(); @@ -4901,9 +4892,9 @@ // get result index int nStartIdx = pReviewResult->GetStartSReviewResultIndex(); int nEndIdx = pReviewResult->GetEndSReviewResultIndex(); nEndIdx = min(nEndIdx, (pReviewResult->GetSReviewResultCount()-1)) + 1; // End Index �ٽü��� nEndIdx = min(nEndIdx, (pReviewResult->GetSReviewResultCount()-1)) + 1; // End Index ë¤ìì¤ì // [2017:3:8]-[WEZASW] : CameraOffset ���� ���� (-1~1 => -5~5) // [2017:3:8]-[WEZASW] : CameraOffset ë²ì ë³ê²½ (-1~1 => -5~5) double m_dMinOffset = -5.0; double m_dMaxOffset = 5.0; @@ -5005,7 +4996,7 @@ if(pGlassResult && pReviewProcessor) { // MeasureStart pReviewProcessor->SetJobID(pGlassResult->m_strJobID); // pGlassResult->m_strGlassID -> pGlassResult->m_strJobID ���� pReviewProcessor->SetJobID(pGlassResult->m_strJobID); // pGlassResult->m_strGlassID -> pGlassResult->m_strJobID ë³ê²½ pReviewProcessor->SetOperID(pGlassResult->m_strOperID); m_pSP2P->ISP2P_UpdateReviewProcessStatus(ReviewProcessStatus_MeasureStart, nPlanIndex); @@ -5080,7 +5071,7 @@ const SCoordInfo* pCoordInfo = Module_GetCoordInfo(nModuleIdx); if(pCoordInfo == NULL) continue; // [2017:3:8]-[WEZASW] : CameraOffset ���� ���� (-1~1 => -5~5) // [2017:3:8]-[WEZASW] : CameraOffset ë²ì ë³ê²½ (-1~1 => -5~5) double m_dMinOffset = -5.0; double m_dMaxOffset = 5.0; @@ -5186,7 +5177,7 @@ int nTotalCount = 0; double dDefectPosX, dDefectPosY; // Module�� ��ġ�� ���� ModuleStatus sorting // Moduleì ìì¹ì ë°ë¥¸ ModuleStatus sorting std::vector<CModuleStatus*> SortedModuleStatus; for(int nModuleIdx = 0; nModuleIdx < m_pSP2P->ISP2P_GetModuleStatusCount(); nModuleIdx++) { @@ -5240,7 +5231,7 @@ const SCoordInfo* pCoordInfo = Module_GetCoordInfo(pReviewResult->GetModuleIndex()); if(pCoordInfo == NULL) continue; // [2017:3:8]-[WEZASW] : CameraOffset ���� ���� (-1~1 => -5~5) // [2017:3:8]-[WEZASW] : CameraOffset ë²ì ë³ê²½ (-1~1 => -5~5) double m_dMinOffset = -5.0; double m_dMaxOffset = 5.0; @@ -5261,7 +5252,7 @@ if(nHeaderIdx == 0) { // �̵��� ������ǥ �߰� // ì´ëí 모í°ì¢í ì¶ê° if((int)vectorPos.size() < MAX_MOTOR_ADDRESS_SIZE) { pSReviewResult->dTargetMotorX = dDefectPosX; @@ -6530,7 +6521,7 @@ // add user schedule result //�����޸𸮿� ��� ������ ������ ���� ��ǥ�� ����ü�� ä���ִ� ��� //ê³µì ë©ëª¨ë¦¬ì ì±ìì¤ ë¦¬ë·°í ê°¯ìì ëí ì¢í를 구조체ì ì±ì주ë ì¥ì { @@ -7245,7 +7236,7 @@ break; } break; // �̻�� // 미ì¬ì© case CPJT_PlanMeasure: { const CRcpMeasureInfo *pRcpMeasureInfo = pRsRcpMeasureInfo->GetRcpMeasureInfo(0); @@ -7378,7 +7369,7 @@ } //CIM DV Data BOOL CSequenceProcessor_CPJT::SendDVDataToSignalControl() // ���� BOOL CSequenceProcessor_CPJT::SendDVDataToSignalControl() // ìì { CGlassResult *pGlassResult = m_pSP2P->ISP2P_GetCurrentGlassResult(); if (pGlassResult==NULL) return FALSE; @@ -7403,7 +7394,7 @@ } int CSequenceProcessor_CPJT::MakeDVData(CGlassResult *pGlassResult, char* pDVData, int nIndex) // ���� int CSequenceProcessor_CPJT::MakeDVData(CGlassResult *pGlassResult, char* pDVData, int nIndex) // ìì { g_pLog->DisplayMessage(_T("[SequenceProcessor] SendDVDataToSignalControl->MakeDVData IN.")); @@ -7412,16 +7403,16 @@ const CRsRcpReviewInfo* pRsRcpReviewInfo = m_pSP2P->ISP2P_Recipe_GetRsRcpReviewInfo(); if (pRsRcpReviewInfo == NULL) return FALSE; // Review ���� ���� // Review ì¡°ëª ì ë³´ const CRcpLightInfo *pReviewLightInfo = pRsRcpReviewInfo->GetRcpLightInfo(nIndex); // Review AFM ���� // Review AFM ì ë³´ const CRcpAFMRecipeInfo *pReviewAFMInfo = pRsRcpReviewInfo->GetRcpAFMRecipeInfo(nIndex); // Review Align Info const CAlignResult* pAlignResult = pGlassResult->GetAlignResult(); // Review Defect Info const CReviewResult* pReviewResult = pGlassResult->GetReviewResult(nIndex); // Review ���� ���� // Review ë°°ì¨ ì ë³´ const CModuleStatus* pModuleStatus = Module_GetModuleStatus(nIndex); const SMagnificInfo* pSMagnificInfo = pModuleStatus->GetMagnificInfo(pReviewAFMInfo->GetZoomIndex()); CSignalControl* pSignalControl = m_pSP2P->ISP2P_GetSignalControl(); @@ -7443,12 +7434,12 @@ // Write DVData Packet //_DVDataPack_B7_8ver DVDataPack; //**Review //INLINE : 10�� //TFE-OFF : 20�� //Hcut : 50�� //LAMI : 5�� //INLINE : 10ê° //TFE-OFF : 20ê° //Hcut : 50ê° //LAMI : 5ê° //**WSI //10�� ���� //10ê° ê³ ì /////////////////////////////////////////////////////////////////////////// @@ -7495,8 +7486,8 @@ //nAlignResult = 1; //nAlignResult00 = pAlignResult->nFindAlign[0] * 1000;//���� //nAlignResult01 = pAlignResult->nFindAlign[1] * 1000;//���� //nAlignResult00 = pAlignResult->nFindAlign[0] * 1000;//ê¸°ì¤ //nAlignResult01 = pAlignResult->nFindAlign[1] * 1000;//ë³´ì¡° //nAlignResult00 = pAlignResult->dFindScore[0]; //nAlignResult01 = pAlignResult->dFindScore[1]; @@ -7514,7 +7505,7 @@ nAlignResult01 = 0; } //�Ŀ�? //íì? nReviewAliveCamera00 = ReviewCamera_GetReviewCameraControl(0)->GetConnected() * 1000; nReviewAliveCamera01 = ReviewCamera_GetReviewCameraControl(1)->GetConnected() * 1000; @@ -7532,7 +7523,7 @@ wsprintf(DriveText, TEXT("%C:"), Drive); UINT type = GetDriveType(DriveText); if ((dwDrive & dwDriveCh) && (type == DRIVE_REMOVABLE || type == DRIVE_FIXED || type == DRIVE_RAMDISK)) { // �ϵ�뷮 // íëì©ë ULARGE_INTEGER i64FreeBytesToCaller = { 0 }, i64TotalBytes = { 0 }, i64FreeBytes = { 0 }; BOOL bRsult = GetDiskFreeSpaceEx(DriveText, (PULARGE_INTEGER)&i64FreeBytesToCaller, (PULARGE_INTEGER)&i64TotalBytes, (PULARGE_INTEGER)&i64FreeBytes); if (bRsult) { @@ -7746,7 +7737,7 @@ pSignalControl->WritePacketData(_T("15100"), sizeof(DVDataPack_CPJT), (short*)&DVData);*/ } //#3358 KYH FDC ������ ���� ���� ���� ADD START //#3358 KYH FDC ë°ì´í° ì ì¡ ìì ê°ì ADD START void CSequenceProcessor_CPJT::MakeDVData2() { @@ -7759,9 +7750,9 @@ } else { // Review ���� ���� // Review ì¡°ëª ì ë³´ pReviewLightInfo = pRsRcpReviewInfo->GetRcpLightInfo(0); // Review AFM ���� // Review AFM ì ë³´ pReviewAFMInfo = pRsRcpReviewInfo->GetRcpAFMRecipeInfo(0); } @@ -7785,7 +7776,7 @@ // Review ���� ���� // Review ë°°ì¨ ì ë³´ const CModuleStatus* pModuleStatus = Module_GetModuleStatus(0); const SMagnificInfo* pSMagnificInfo = NULL; if (pModuleStatus == NULL) @@ -7887,8 +7878,8 @@ //nAlignResult = 1; //nAlignResult00 = pAlignResult->nFindAlign[0] * 1000;//���� //nAlignResult01 = pAlignResult->nFindAlign[1] * 1000;//���� //nAlignResult00 = pAlignResult->nFindAlign[0] * 1000;//ê¸°ì¤ //nAlignResult01 = pAlignResult->nFindAlign[1] * 1000;//ë³´ì¡° //nAlignResult00 = pAlignResult->dFindScore[0]; //nAlignResult01 = pAlignResult->dFindScore[1]; @@ -7928,7 +7919,7 @@ nAlignResult01 = 1000; } //�Ŀ�? //íì? if (ReviewCamera_GetReviewCameraControl(0) != NULL) { nReviewAliveCamera00 = ReviewCamera_GetReviewCameraControl(0)->GetConnected() * 1000; @@ -7961,7 +7952,7 @@ wsprintf(DriveText, TEXT("%C:"), Drive); UINT type = GetDriveType(DriveText); if ((dwDrive & dwDriveCh) && (type == DRIVE_REMOVABLE || type == DRIVE_FIXED || type == DRIVE_RAMDISK)) { // �ϵ�뷮 // íëì©ë ULARGE_INTEGER i64FreeBytesToCaller = { 0 }, i64TotalBytes = { 0 }, i64FreeBytes = { 0 }; BOOL bRsult = GetDiskFreeSpaceEx(DriveText, (PULARGE_INTEGER)&i64FreeBytesToCaller, (PULARGE_INTEGER)&i64TotalBytes, (PULARGE_INTEGER)&i64FreeBytes); if (bRsult) { @@ -8008,7 +7999,7 @@ return; } //#3358 KYH FDC ������ ���� ���� ���� ADD END //#3358 KYH FDC ë°ì´í° ì ì¡ ìì ê°ì ADD END DWORD CSequenceProcessor_CPJT::GetDiskUsage() { @@ -8046,7 +8037,7 @@ BOOL bResult = FALSE; // PCControl D2300 (�˻� ����) // PCControl D2300 (ê²ì¬ ìì) switch(nSignalIndex) { case PCControlRecv_TimeChange: @@ -8112,7 +8103,7 @@ g_pLog->DisplayMessage(_T("[SequenceProcessor] Success! SetLocalTime(), Current: %04d-%02d-%02d %02d-%02d-%02d, Changed: %04d-%02d-%02d %02d-%02d-%02d"), CurrentTime.wYear, CurrentTime.wMonth, CurrentTime.wDay, CurrentTime.wHour, CurrentTime.wMinute, CurrentTime.wSecond, ChangedTime.wYear, ChangedTime.wMonth, ChangedTime.wDay, ChangedTime.wHour, ChangedTime.wMinute, ChangedTime.wSecond); // AFM & WSI TIME ï¿½ï¿½ï¿½ï¿½È // AFM & WSI TIME ë기í SendSystemTime(ChangedTime); } else { g_pLog->DisplayMessage(_T("[SequenceProcessor] Fail! SetLocalTime()")); @@ -8139,7 +8130,7 @@ return TRUE; } // Local System ���� �� ���� ��û ��Ʈ�ѷ��� �� ó�� ���� // Local System ë³ê²½ ìê°ê³¼ ë³ê²½ ìì² ì»¨í¸ë¡¤ë¬ì ìê°ì°¨ ì²ë¦¬ ìê° BOOL CSequenceProcessor_CPJT::SendSystemTime(SYSTEMTIME sysTime) { SYSTEMTIME CurrentTime; @@ -8286,7 +8277,7 @@ case PCControlSend_Defoucs: m_pSP2P->ISP2P_DisplayMessage(_T("[PCControl_Send] Defoucs! => %d"),0); break; case PCControlSend_Diagnosis: // 0412 �ڰ����� ��ȣ �߰� case PCControlSend_Diagnosis: // 0412 ìê°ì§ë¨ ì í¸ ì¶ê° m_pSP2P->ISP2P_DisplayMessage(_T("[PCControl_Send] Diagnosis! => %d"), 0); break; } @@ -8397,7 +8388,7 @@ case PCControlSend_Defoucs: m_pSP2P->ISP2P_DisplayMessage(_T("[PCControl_Send] Defoucs! => %d"),0); break; case PCControlSend_Diagnosis: // 0412 �ڰ����� ��ȣ �߰� case PCControlSend_Diagnosis: // 0412 ìê°ì§ë¨ ì í¸ ì¶ê° m_pSP2P->ISP2P_DisplayMessage(_T("[PCControl_Send] Diagnosis! => %d"), 0); break; } @@ -8511,7 +8502,7 @@ if (bResult==FALSE) m_pSP2P->ISP2P_DisplayMessage(_T("[PCControl_Mode] Manual Mode Error!")); // lmk simul manual camera,motor stop //ReviewCamera_CameraControl(CameraControlStop); // ���� ���߸� ī�޶� �ڵ� ��ž //ReviewCamera_CameraControl(CameraControlStop); // ëª¨í° ë©ì¶ë©´ ì¹´ë©ë¼ ìë ì¤í CMotorControl* pMotorControl = m_pSP2P->ISP2P_GetMotorControl(); if(pMotorControl) pMotorControl->CommonSetAutoStop(); @@ -8682,10 +8673,10 @@ if (SetLocalTime(&sTime)) { m_pSP2P->ISP2P_DisplayMessage(_T("[PCControl_Signal] ����È���� %s"), strtime); m_pSP2P->ISP2P_DisplayMessage(_T("[PCControl_Signal] ìê°ë기íì±ê³µ %s"), strtime); } else m_pSP2P->ISP2P_DisplayMessage(_T("[PCControl_Signal] ����È���� %s"), strtime); m_pSP2P->ISP2P_DisplayMessage(_T("[PCControl_Signal] ìê°ë기íì¤í¨ %s"), strtime); //memcpy(&time, strTime, 2); @@ -8906,7 +8897,7 @@ CReviewResult* pWsiMultiShotResult = pGlassResult->GetWsiMultiShotResult(nModuleIndex); if (pWsiMultiShotResult == NULL) goto RESULT_FAIL; // ������ ����� �����´�. // ë§ì§ë§ ì¸ë±ì¤ë¥¼ ê°ì ¸ì¨ë¤. int nCurResultIdx = pWsiMultiShotResult->GetLastSReviewResultIndex() + 1; // last index + 1 int nStartResultIdx = pWsiMultiShotResult->GetStartSReviewResultIndex(); int nEndResultIdx = pWsiMultiShotResult->GetEndSReviewResultIndex(); @@ -8920,13 +8911,13 @@ int nMPosY = int(pPosition->dMotorPosY * 1000.0); double dTime = (double)m_ProcessTimer.GetDurationMilliSecond(); // ����� �ٸ��� ��������. // ì¸ë±ì¤ê° ë¤ë¥´ë©´ ë¹ì ìì. if (measureResut.nResultIndex != nCurResultIdx) { goto RESULT_FAIL; } // ���� ������ ����. // íì¬ ë°ì´í° ì ì¥. // measureResut if (pWsiMultiShotResult->GetSReviewResultCount() == 0) return; @@ -8951,7 +8942,7 @@ // set last result idx pWsiMultiShotResult->SetLastSReviewResultIndex(nCurResultIdx); // ������ ����Ʈ���� �԰�, WSI ����� ���� ������... // ë§ì§ë§ í¬ì¸í¸ê¹ì§ ìê³ , WSI ê²°ê³¼ê° ë¨ì ìì¼ë©´... if (nCurResultIdx == nEndResultIdx && nCurResultIdx <= pWsiMultiShotResult->GetSReviewResultCount()) { nStartResultIdx = nCurResultIdx + 1; @@ -8962,8 +8953,8 @@ pWsiMultiShotResult->SetStartSReviewResultIndex(nStartResultIdx); pWsiMultiShotResult->SetEndSReviewResultIndex(nEndResultIdx); // ������ ����Ʈ ���� ��������. ::Sleep(3000); // ����̴� �ʼ���. ������ ���� ����. // ëë¨¸ì§ í¬ì¸í¸ 리뷰 ìííì. ::Sleep(3000); // ëë ì´ë íìì. ìì¼ë©´ ëì ìí¨. // Process_RemainWsiPoint(nModuleIndex); } @@ -9029,7 +9020,7 @@ if(pGlassResult && pReviewProcessor) { // WsiStart pReviewProcessor->SetJobID(pGlassResult->m_strJobID); // pGlassResult->m_strGlassID -> pGlassResult->m_strJobID ���� pReviewProcessor->SetJobID(pGlassResult->m_strJobID); // pGlassResult->m_strGlassID -> pGlassResult->m_strJobID ë³ê²½ pReviewProcessor->SetOperID(pGlassResult->m_strOperID); m_pSP2P->ISP2P_UpdateReviewProcessStatus(ReviewProcessStatus_WSIReflowStart, nPlanIndex); @@ -9065,7 +9056,7 @@ if(pGlassResult && pReviewProcessor) { // WsiStart pReviewProcessor->SetJobID(pGlassResult->m_strJobID); // pGlassResult->m_strGlassID -> pGlassResult->m_strJobID ���� pReviewProcessor->SetJobID(pGlassResult->m_strJobID); // pGlassResult->m_strGlassID -> pGlassResult->m_strJobID ë³ê²½ pReviewProcessor->SetOperID(pGlassResult->m_strOperID); m_pSP2P->ISP2P_UpdateReviewProcessStatus(ReviewProcessStatus_WSIStart, nPlanIndex); @@ -9092,7 +9083,7 @@ WSIAllReadySignal(1); // send wsi start // ���� ���� // ìì ì¬í if (!WSIMultiShotAllStartSignal()) { g_pLog->DisplayMessage(_T("[WSI] WSI MultiShot Start Fail!!")); @@ -9103,7 +9094,7 @@ if (pGlassResult && pReviewProcessor) { // WsiStart pReviewProcessor->SetJobID(pGlassResult->m_strJobID); // pGlassResult->m_strGlassID -> pGlassResult->m_strJobID ���� pReviewProcessor->SetJobID(pGlassResult->m_strJobID); // pGlassResult->m_strGlassID -> pGlassResult->m_strJobID ë³ê²½ pReviewProcessor->SetOperID(pGlassResult->m_strOperID); m_pSP2P->ISP2P_UpdateReviewProcessStatus(ReviewProcessStatus_WSIMultiShotStart, nPlanIndex); @@ -9166,7 +9157,7 @@ int nEndIdx = pWsiResult->GetEndSReviewResultIndex(); nEndIdx = min(nEndIdx, (pWsiResult->GetSReviewResultCount()-1)) + 1; // set End Index // [2017:3:8]-[WEZASW] : CameraOffset ���� ���� (-1~1 => -5~5) // [2017:3:8]-[WEZASW] : CameraOffset ë²ì ë³ê²½ (-1~1 => -5~5) double m_dMinOffset = -5.0; double m_dMaxOffset = 5.0; @@ -9296,7 +9287,7 @@ CModuleStatus* pModuleStatus = Module_GetModuleStatus(nModuleIdx); if (pModuleStatus == NULL) continue; //�浹�Ÿ� �ֱ� //ì¶©ë거리 ë£ê¸° { double dCollisionPosX = pWsiUserResult->GetCollisionPositionX() / 1000.0; double dCollisionPosY = 0.0; @@ -9339,7 +9330,7 @@ int nEndIdx = pWsiUserResult->GetEndSReviewResultIndex(); nEndIdx = min(nEndIdx, (pWsiUserResult->GetSReviewResultCount()-1)) + 1; // set End Index // [2017:3:8]-[WEZASW] : CameraOffset ���� ���� (-1~1 => -5~5) // [2017:3:8]-[WEZASW] : CameraOffset ë²ì ë³ê²½ (-1~1 => -5~5) double m_dMinOffset = -5.0; double m_dMaxOffset = 5.0; @@ -9443,16 +9434,16 @@ } //������ ���� //기존꺼 ìì pWsiMultiShotResult->GetVectorSReviewResult()->clear(); int nResultCount = 0; if (m_vecSReviewResult.size()>0) { //�����ٸ� ���� ��� ��������Ŷ� �� ����ֱ� ���� //ì¤ì¼ì¤ë§ ìì ëë¡ ì§ì´ë£ìê±°ë¼ ê± ì§ì´ë£ê¸° ã±ã± for(int i=0; i< m_vecSReviewResult.size(); i++) { //������ ���ÿ� ���� ���� �Է��ؾߵ� �װ͸�Š������! //������ WSI FOV 4���� ���ؿ��� ���� //ìëë ì¸í ì ë¶í ê°¯ì ì ë ¥í´ì¼ë¨ ê·¸ê²ë§í¼ ë리기! //ì§ê¸ì WSI FOV 4ë¶í 기ì¤ìì ã±ã± double dOringinX = m_vecSReviewResult[i].nUMOriginX; double dOringinY = m_vecSReviewResult[i].nUMOriginY; @@ -9722,7 +9713,7 @@ if (pModuleStatus == NULL) continue; //�浹�Ÿ� �ֱ� //ì¶©ë거리 ë£ê¸° { double dCollisionPosX = pWsiMultiShotResult->GetCollisionPositionX() / 1000.0; @@ -9750,7 +9741,7 @@ int nEndIdx = pWsiMultiShotResult->GetEndSReviewResultIndex(); nEndIdx = min(nEndIdx, (pWsiMultiShotResult->GetSReviewResultCount() - 1)) + 1; // set End Index // [2017:3:8]-[WEZASW] : CameraOffset ���� ���� (-1~1 => -5~5) // [2017:3:8]-[WEZASW] : CameraOffset ë²ì ë³ê²½ (-1~1 => -5~5) double m_dMinOffset = -5.0; double m_dMaxOffset = 5.0; @@ -10191,7 +10182,7 @@ CRsRcpReviewInfo* pRsRcpReviewInfo = m_pSP2P->ISP2P_Recipe_GetRsRcpReviewInfo(); if(pRsRcpReviewInfo == NULL) return FALSE; if(pRsRcpReviewInfo->GetRcpUserDefectInfoCount() < 1) return TRUE; // �������� ī��Ʈ�� ���ٸ� �Ѿ�� if(pRsRcpReviewInfo->GetRcpUserDefectInfoCount() < 1) return TRUE; // ê³ ì 리뷰 ì¹´ì´í¸ê° ìë¤ë©´ ëì´ê°ì double dCenterPosX, dCenterPosY; @@ -10250,18 +10241,18 @@ _grmGlassData* pSharedGlassData = pDitSharedGlassRaw->GetGlassData(); if(pSharedGlassData == NULL) return FALSE; //pSharedGlassData->m_nUserReviewNum = 0; //���� �޸� User plan //pSharedGlassData->m_nUserReviewNum = 0; //ê³µì ë©ëª¨ë¦¬ User plan _grmDefectData* pSharedDefect; int nPointCount = pRecipeinfo->GetRcpUserDefectInfoCount(); // User ��ǥ �� ī��Ʈ int nPointCount = pRecipeinfo->GetRcpUserDefectInfoCount(); // User ì¢í ì´ ì¹´ì´í¸ int nSharedDefectNum = pSharedGlassData->m_nDefectNum; // ���� �Ѱ��� User Idx �� ù��° Index �� �ȴ� int nStartIdx=nSharedDefectNum;// USER ���� ���� IDX �ο��ϱ� ���� ������ int nSharedDefectNum = pSharedGlassData->m_nDefectNum; // ëí ì´ê°ì User Idx ì 첫ë²ì§¸ Index ê° ëë¤ int nStartIdx=nSharedDefectNum;// USER ëí ì¢ ë¥ IDX ë¶ì¬í기 ìí ììì CRcpPlanInfo* pRcpPlanInfo; // ������ ���� CRcpUserDefectInfo *pDefectInfo;// ������ defect ���� CRcpPlanInfo* pRcpPlanInfo; // ë ìí¼ ì ë³´ CRcpUserDefectInfo *pDefectInfo;// ë ìí¼ defect ì ë³´ int nInsepectionType;// User Ÿ�� Reviewreflow = 0 wsiReflow =1; REV&WSI =2; WSIUSEr =3; USER =4; int nInsepectionType;// User íì Reviewreflow = 0 wsiReflow =1; REV&WSI =2; WSIUSEr =3; USER =4; int nCount = 0; @@ -10325,7 +10316,7 @@ BOOL CSequenceProcessor_CPJT::CompareRevType(int nInsType,int nRevType) { //Plan Ÿ�԰� InspectionMode �� //Plan íì ê³¼ InspectionMode ë¹êµ if(nRevType == CPJT_PlanUser) { if(nInsType == USER) return TRUE; @@ -10383,7 +10374,7 @@ CString strMessage, strResultFilePath, strUploadResultFilePath, strLocalRawPath; CString strUploadRawPath, strUploadImagePath, strAOIRawFileName, strAOIRawFilePath; //3-1. ���� ��� ���� ���� //3-1. 리뷰 ê²°ê³¼ íì¼ ì°ê¸° m_pSP2P->ISP2P_SetReviewResultData(pGlassResult); strLocalRawPath = pNetworkInfo->m_strLocalRawPath; @@ -10410,7 +10401,7 @@ if(strUploadRawPath.IsEmpty() == FALSE && strAOIRawFilePath.IsEmpty() == FALSE) { // [2017:5:16]-[WEZASW] : ���� PASS���� ���� ��� ��Ȳ�� ���� AOI Server�� RAW ���� ���� ���ε� ����. // [2017:5:16]-[WEZASW] : 리뷰 PASSìì ì¤ë¹ ì´ìì ìí©ì ë°ë¼ AOI Serverê° RAW íì¼ ì§ì ì ë¡ë ì§í. strUploadResultFilePath.Format(_T("%s\\%s"), strUploadRawPath, strAOIRawFileName); if(CopyFile(strResultFilePath, strUploadResultFilePath, FALSE)) @@ -10431,9 +10422,9 @@ } // delete file of Glass direction DeleteFile(pNetworkInfo->m_strAOIRawPath + _T("\\") + pGlassResult->m_strJobID + _T("TD"));//pGlassResult->m_strGlassID -> m_StrJobID ���� DeleteFile(pNetworkInfo->m_strAOIRawPath + _T("\\") + pGlassResult->m_strJobID + _T("TD"));//pGlassResult->m_strGlassID -> m_StrJobID ë³ê²½ // [2017:4:11]-[WEZASW] :CIM(DV Data) ���� �׸� �߰�. // [2017:4:11]-[WEZASW] :CIM(DV Data) ë³´ê³ í목 ì¶ê°. if (SendDVDataToSignalControl()==FALSE) { m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] DV Data Send FAIL!")); @@ -10453,8 +10444,8 @@ BOOL CSequenceProcessor_CPJT::MoveReviewStartMotorPosition(CGlassResult* pGlassResult,int nReviewType) { //Ȥ�ó� ���ϱ�� ���ܵ� //���� �÷��� ù��° ��ġ�� �̵� //í¹ìë ì°ì¼ê¹ë´ ë¨ê²¨ë //ë¤ì íëì 첫ë²ì§¸ ìì¹ë¡ ì´ë double dDefectPosX,dDefectPosY = 0; @@ -10518,7 +10509,7 @@ void CSequenceProcessor_CPJT::SendWsiErrorAlarm_CPJT(int Index) //190801 chm { //wsi ���� �˶� //wsi ìë¬ ìë if(Index==1) { g_pLog->DisplayMessage(_T("[SequenceProcessor_CPJT] WSI Alive Error!!!")); @@ -10532,7 +10523,7 @@ void CSequenceProcessor_CPJT::SendWsiAlive_CPJT()//190801 chm { //WSI Alive ��ȣ ���� //WSI Alive ì í¸ ë°ì SetWSIAliveCheck(TRUE); } @@ -10558,7 +10549,7 @@ if(bWsiAliveCheck ==FALSE){ m_pCSPC->SendWsiErrorAlarm_CPJT(1); } bWsiAliveCheck=FALSE; //30�ʿ� �ѹ��� 0���� ï¿½Ê±ï¿½È bWsiAliveCheck=FALSE; //30ì´ì íë²ì© 0ì¼ë¡ ì´ê¸°í } } ReviewSystem/include/CHReviewResult/ReviewResult.h
@@ -29,14 +29,14 @@ // Wsi_X_Right_4_A_Ratio, // Wsi_Result_Info_Count }; // [2016:11:20]-[WEZASW] : WSI ��� Data �׸� ���� // [2016:11:20]-[WEZASW] : WSI ê²°ê³¼ Data í목 ë³ê²½ enum WSIResultInfo { Wsi_X_Height=0, Wsi_X_Width, Wsi_X_Area, Wsi_X_A_Ratio, Wsi_Result_Info_Count }; // [2016:11:20]-[WEZASW] : WSI ��� Data �׸� ���� // [2016:11:20]-[WEZASW] : WSI ê²°ê³¼ Data í목 ë³ê²½ enum WSIReflowResultInfomation { WsiReflowInfo_AZoneJudge=0, WsiReflowInfo_BZoneJudge, WsiReflowInfo_CZoneJudge, @@ -80,8 +80,8 @@ int nExposureTime; // exposure time BOOL bDigitalZoom; // digital zoom ? double dRulerInterval; // ruler Interval double dTargetMotorX; // ���� ��ǥ double dTargetMotorY; // ���� ��ǥ double dTargetMotorX; // ëª¨í° ì¢í double dTargetMotorY; // ëª¨í° ì¢í int nUMGrabPosX; // Snap Pos int nUMGrabPosY; // Snap Pos int nReviewSnapSerialNo; // serial no @@ -91,7 +91,6 @@ VectorImageData vectorImageData; // camera image CString strImgFileName; CString strImgFilePath; int nMagnificationOffsetX; int nMagnificationOffsetY; @@ -104,16 +103,16 @@ int nReview_Square; int nReview_Stat; // wsi data : ��� ���� �׸� �߰� int nWsi_ResultCode; // ���� ���� int nWsi_Type; // �Ը� / ���� // wsi data : ê²°ê³¼ íì¼ í목 ì¶ê° int nWsi_ResultCode; // ì±ê³µ ì¬ë¶ int nWsi_Type; // í¨ëª° / ë기 int nWsi_SlopeWarn; double pWsi_ResultData[Wsi_Result_Info_Count]; // um int nWsiReflowPositionIndex; // WsiReflowPositionIndex int nWsi_pReflowResultData[WsiReflowInfo_Result_Info_Count]; double dWsi_DamDistance; bool bBigSizeDefect; int nMultiShotNum; //�Ŵ���� �Կ� ���� int nMultiShotNum; //ê±°ëê²°í¨ ì´¬ì ìì int nGlassType; //TFE=0,MN=1,QD=2,BANK=3 CS =4 CSG = 5 @@ -152,14 +151,14 @@ VectorResultFormula vecMeasure_ResultData; // reflow data int nReflow_Result; // ������ Line�� ����. 3 �̸� : DAM2 Reflow ����, 4~5 : DAM1 Reflow ����, 6 : no Reflow ���� / -1 : image not loaded, -2 : roi setting error, -3 : roi length error, -5 : select wrong side int pReflow_LinePosData[REFLOW_LINE_DATA]; // Line ��ǥ ��� �è¿. DAM#2 �ٱ� 2 Lines, DAM#2, DAM#1 ������ ��ǥ�� �����(��, Pattern�� �������� �ٱ��ʺ��� ����) int nReflow_Result; // ê²ì¶í Lineì ê°ì. 3 ë¯¸ë§ : DAM2 Reflow íì , 4~5 : DAM1 Reflow íì , 6 : no Reflow íì / -1 : image not loaded, -2 : roi setting error, -3 : roi length error, -5 : select wrong side int pReflow_LinePosData[REFLOW_LINE_DATA]; // Line ì¢í ì¶ë ¥ ë°°ì´. DAM#2 ë°ê¹¥ 2 Lines, DAM#2, DAM#1 ìì¼ë¡ ì¢íê° ì ì¥ë¨(ì¦, Patternì 기ì¤ì¼ë¡ ë°ê¹¥ìª½ë¶í° ì ì¥) int nReflow_Side; int nInspectionMode; int nReflow_CellIndex; BOOL bCheckWSISendToMotor; //�������� ��ǥ �������� Ȯ�� BOOL bCheckSendToMotor; //WSI ����� �������� ��ǥ �������� Ȯ�� BOOL bCheckWSISendToMotor; //모í°íí ì¢í ë³´ë¸ê±´ì§ íì¸ BOOL bCheckSendToMotor; //WSI ì§íì 모í°íí ì¢í ë³´ë¸ê±´ì§ íì¸ }; typedef std::vector<SReviewResult> VectorSReviewResult;