Ongoing90 #3517 CF AOI Review 자가진단 기능 개선
1. WSI 자가진단데이터 UI 추가
2. RawMessenger 검사쪽 수정으로 인해 업데이트
| | |
| | | LTEXT "-",IDC_STATIC_SERVERCMD,451,61,102,8 |
| | | PUSHBUTTON "Test1",IDC_TEST1,136,45,43,14,NOT WS_VISIBLE |
| | | PUSHBUTTON "Test2",IDC_TEST2,136,60,43,14,NOT WS_VISIBLE |
| | | GROUPBOX "Stack File",IDC_STATIC,7,82,216,75 |
| | | CONTROL "Use Stack File Read",IDC_CHECK_STACKFILEREAD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,19,97,77,10 |
| | | EDITTEXT IDC_EDIT_STACK_LOCALSAVEPATH,57,115,163,14,ES_AUTOHSCROLL |
| | | LTEXT "Local Path :",IDC_STATIC,14,117,40,8 |
| | | GROUPBOX "DownLoad File",IDC_STATIC,7,82,216,75 |
| | | CONTROL "",IDC_CHECK_STACKFILEREAD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,72,99,16,10 |
| | | EDITTEXT IDC_EDIT_STACK_LOCALSAVEPATH,94,96,121,14,ES_AUTOHSCROLL |
| | | PUSHBUTTON "Apply",IDC_BTN_STACKAPPLY,180,139,39,14 |
| | | PUSHBUTTON "Send",IDC_TEST_CMD,110,60,20,14,WS_DISABLED |
| | | LTEXT "Command : ",IDC_STATIC,17,63,39,8 |
| | | COMBOBOX IDC_CMB_COMMAND,61,61,48,128,CBS_DROPDOWNLIST | WS_DISABLED | WS_VSCROLL | WS_TABSTOP |
| | | EDITTEXT IDC_EDIT_STACK_EQUIPID,45,133,32,14,ES_AUTOHSCROLL |
| | | LTEXT "Equip ID :",IDC_STATIC,11,136,32,8 |
| | | EDITTEXT IDC_EDIT_STACK_PARAM1,113,134,24,14,ES_AUTOHSCROLL |
| | | LTEXT "Param :",IDC_STATIC,85,137,28,8 |
| | | EDITTEXT IDC_EDIT_STACK_PARAM2,139,134,24,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_STACK_EQUIPID,45,133,32,14,ES_AUTOHSCROLL | NOT WS_VISIBLE |
| | | LTEXT "Equip ID :",IDC_STATIC,11,136,32,8,NOT WS_VISIBLE |
| | | EDITTEXT IDC_EDIT_STACK_PARAM1,113,134,24,14,ES_AUTOHSCROLL | NOT WS_VISIBLE |
| | | LTEXT "Param :",IDC_STATIC,85,137,28,8,NOT WS_VISIBLE |
| | | EDITTEXT IDC_EDIT_STACK_PARAM2,139,134,24,14,ES_AUTOHSCROLL | NOT WS_VISIBLE |
| | | PUSHBUTTON "Manual\nFTP Upload",IDC_BTN_FTP_MANUALUPLOAD,418,20,39,31,BS_MULTILINE | WS_DISABLED |
| | | LTEXT "Stack File",IDC_STATIC,16,100,30,8 |
| | | LTEXT "RawMerge File",IDC_STATIC,15,115,46,8 |
| | | CONTROL "",IDC_CHECK_RAWMERGEFILEREAD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,72,115,16,10 |
| | | EDITTEXT IDC_EDIT_RAWMERGE_LOCALSAVEPATH,94,112,121,14,ES_AUTOHSCROLL |
| | | END |
| | | |
| | | |
| | |
| | | <ClCompile Include="GlassRawRTMS.cpp" /> |
| | | <ClCompile Include="InterfaceFTP.cpp" /> |
| | | <ClCompile Include="MacroResultFile.cpp" /> |
| | | <ClCompile Include="RawResultReader.cpp" /> |
| | | <ClCompile Include="StackResultCPJT.cpp" /> |
| | | <ClCompile Include="StackResultCSOT.cpp" /> |
| | | <ClCompile Include="stdafx.cpp"> |
| | |
| | | <ClInclude Include="GlassRawRTMS.h" /> |
| | | <ClInclude Include="InterfaceFTP.h" /> |
| | | <ClInclude Include="MacroResultFile.h" /> |
| | | <ClInclude Include="RawResultReader.h" /> |
| | | <ClInclude Include="Resource.h" /> |
| | | <ClInclude Include="StackResultCPJT.h" /> |
| | | <ClInclude Include="StackResultCSOT.h" /> |
| | |
| | | <ClCompile Include="StackResultCPJT.cpp"> |
| | | <Filter>RawInterface\Stack</Filter> |
| | | </ClCompile> |
| | | <ClCompile Include="RawResultReader.cpp"> |
| | | <Filter>RawInterface\Stack</Filter> |
| | | </ClCompile> |
| | | </ItemGroup> |
| | | <ItemGroup> |
| | | <ClInclude Include="akLoggerExt.h"> |
| | |
| | | <ClInclude Include="StackResultCPJT.h"> |
| | | <Filter>RawInterface\Stack</Filter> |
| | | </ClInclude> |
| | | <ClInclude Include="RawResultReader.h"> |
| | | <Filter>RawInterface\Stack</Filter> |
| | | </ClInclude> |
| | | </ItemGroup> |
| | | <ItemGroup> |
| | | <None Include="res\DitGlassRawMessenger.ico"> |
| | |
| | | |
| | | // DitGlassRawMessengerDlg.cpp : ���� ���� |
| | | // DitGlassRawMessengerDlg.cpp : 구í íì¼ |
| | | // |
| | | |
| | | #include "stdafx.h" |
| | |
| | | #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() |
| | | }; |
| | |
| | | END_MESSAGE_MAP() |
| | | |
| | | |
| | | // CDitGlassRawMessengerDlg ï¿½ï¿½È ï¿½ï¿½ï¿½ï¿½ |
| | | // CDitGlassRawMessengerDlg ëí ìì |
| | | |
| | | |
| | | |
| | |
| | | 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"); |
| | | |
| | | } |
| | |
| | | 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); |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | // �� ï¿½ï¿½È ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ �������� �����մϴ�. ���� ���α׷��� �� � ï¿½ï¿½È ï¿½ï¿½ï¿½Ú°ï¿½ �ƴ� ��쿡�� |
| | | // �����ӿ�ũ�� �� �۾��� �ڵ����� �����մϴ�. |
| | | SetIcon(m_hIcon, TRUE); // ū �������� �����մϴ�. |
| | | SetIcon(m_hIcon, FALSE); // ���� �������� �����մϴ�. |
| | | // ì´ ëí ììì ìì´ì½ì ì¤ì í©ëë¤. ìì© íë¡ê·¸ë¨ì 주 ì°½ì´ ëí ììê° ìë ê²½ì°ìë |
| | | // íë ììí¬ê° ì´ ìì
ì ìëì¼ë¡ ìíí©ëë¤. |
| | | SetIcon(m_hIcon, TRUE); // í° ìì´ì½ì ì¤ì í©ëë¤. |
| | | SetIcon(m_hIcon, FALSE); // ìì ìì´ì½ì ì¤ì í©ëë¤. |
| | | |
| | | //Ʈ���̾����� ���� |
| | | //í¸ë ì´ìì´ì½ êµ¬ì± |
| | | m_TrayIcon = FALSE; |
| | | ResTrayIcon(); |
| | | |
| | | //��� ���� |
| | | //ë¹ë ì ë³´ |
| | | { |
| | | CString strBuild; |
| | | tm tmBuild; |
| | |
| | | SetDlgItemText(IDC_BUILDDATE, strBuild); |
| | | } |
| | | |
| | | //�������� ���� �о� ���� [������ 2018/11/20] |
| | | //ì¤ì íì¼ ì ë³´ ì½ì´ ì¤ê¸° [ê¹íí 2018/11/20] |
| | | { |
| | | m_strConfigFile; |
| | | { |
| | |
| | | akFileDB.getItem("LogFilePath", m_ConfigOption.m_strLogFilePath, "c:\\AOIServer\\LogRawMessenger\\LogRawMessenger"); |
| | | akFileDB.getItem("Stack_Use", &m_ConfigOption.m_bUseStack, 0); |
| | | akFileDB.getItem("Stack_LocalPath", m_ConfigOption.m_strStackLocalPath, "D:\\DIT_ResultData\\Stack"); |
| | | akFileDB.getItem("RawMerge_Use", &m_ConfigOption.m_bUseRawMerge, 0); |
| | | akFileDB.getItem("RawMerge_LocalPath", m_ConfigOption.m_strRawMergeLocalPath, "D:\\DIT_ResultData\\RawMerge"); |
| | | akFileDB.getItem("Stack_EquipID",m_ConfigOption.m_strStackEquipID, "AAAAA"); |
| | | akFileDB.getItem("Stack_Param1",m_ConfigOption.m_strStackParam1, ""); |
| | | akFileDB.getItem("Stack_Param2",m_ConfigOption.m_strStackParam2, ""); |
| | |
| | | |
| | | ((CButton*)GetDlgItem(IDC_CHECK_STACKFILEREAD))->SetCheck(m_ConfigOption.m_bUseStack); |
| | | SetDlgItemText(IDC_EDIT_STACK_LOCALSAVEPATH, m_ConfigOption.m_strStackLocalPath); |
| | | ((CButton*)GetDlgItem(IDC_CHECK_RAWMERGEFILEREAD))->SetCheck(m_ConfigOption.m_bUseRawMerge); |
| | | SetDlgItemText(IDC_EDIT_RAWMERGE_LOCALSAVEPATH, m_ConfigOption.m_strRawMergeLocalPath); |
| | | SetDlgItemText(IDC_EDIT_STACK_EQUIPID, m_ConfigOption.m_strStackEquipID); |
| | | SetDlgItemText(IDC_EDIT_STACK_PARAM1, m_ConfigOption.m_strStackParam1); |
| | | SetDlgItemText(IDC_EDIT_STACK_PARAM2, m_ConfigOption.m_strStackParam2); |
| | | } |
| | | |
| | | //�α� ���� [������ 2018/11/20] |
| | | //ë¡ê·¸ ê´ë ¨ [ê¹íí 2018/11/20] |
| | | { |
| | | CakFileUtil fileutil; |
| | | char strPath[256]; |
| | |
| | | |
| | | 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(); |
| | | } |
| | | |
| | |
| | | { |
| | | 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); |
| | |
| | | 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); |
| | | } |
| | |
| | | } |
| | | } |
| | | |
| | | // ï¿½ï¿½È ï¿½ï¿½ï¿½Ú¿ï¿½ ï¿½Ö¼ï¿½È ï¿½ï¿½ï¿½ß¸ï¿½ �߰��� ��� �������� �׸����� |
| | | // �Ʒ� �ڵ尡 �ʿ��մϴ�. ����/�� ���� ����ϴ� 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; |
| | |
| | | int x = (rect.Width() - cxIcon + 1) / 2; |
| | | int y = (rect.Height() - cyIcon + 1) / 2; |
| | | |
| | | // �������� �׸��ϴ�. |
| | | // ìì´ì½ì 그립ëë¤. |
| | | dc.DrawIcon(x, y, m_hIcon); |
| | | } |
| | | else |
| | |
| | | } |
| | | } |
| | | |
| | | // ����ڰ� �ּ�È�� � ��� ���ȿ� Ŀ���� ǥ�õǵ��� �ý��ۿ��� |
| | | // �� �Լ��� ȣ���մϴ�. |
| | | // ì¬ì©ìê° ìµìíë ì°½ì ëë ëìì 커ìê° íìëëë¡ ìì¤í
ìì |
| | | // ì´ í¨ì를 í¸ì¶í©ëë¤. |
| | | HCURSOR CDitGlassRawMessengerDlg::OnQueryDragIcon() |
| | | { |
| | | return static_cast<HCURSOR>(m_hIcon); |
| | |
| | | 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); |
| | |
| | | |
| | | 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); |
| | |
| | | { |
| | | nResult = m_pGlassRawMaker->SequenceInspectEnd(pRawDataBuffer); |
| | | pServer->GetGlassRawInfo()->m_ServerProcStep = APS_InspectEnd; |
| | | //Stack ������ �����޸𸮿� �ݿ� �ϱ� ���� Export |
| | | //Stack ì 보를 ê³µì ë©ëª¨ë¦¬ì ë°ì í기 ìí Export |
| | | //pRawDataBuffer->ExportGlassRaw(pServer->GetGlassRawInfo(), (char*)pServer->GetGlassData()); |
| | | break; |
| | | } |
| | |
| | | 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); |
| | |
| | | |
| | | 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); |
| | | } |
| | | |
| | |
| | | |
| | | BOOL CDitGlassRawMessengerDlg::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult) |
| | | { |
| | | // TODO: ���⿡ Ư��È�� �ڵ带 �߰� ��/�Ǵ� �⺻ Ŭ������ ȣ���մϴ�. |
| | | // TODO: ì¬ê¸°ì í¹ìíë ì½ë를 ì¶ê° ë°/ëë 기본 í´ëì¤ë¥¼ í¸ì¶í©ëë¤. |
| | | if (m_gridCellInfo.GetSafeHwnd() && wParam == (WPARAM)m_gridCellInfo.GetDlgCtrlID()) |
| | | { |
| | | *pResult = 1; |
| | |
| | | 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 |
| | |
| | | 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 |
| | |
| | | |
| | | akFileDB.setItem("Stack_Use", m_ConfigOption.m_bUseStack); |
| | | akFileDB.setItem("Stack_LocalPath", m_ConfigOption.m_strStackLocalPath); |
| | | akFileDB.setItem("RawMerge_Use", m_ConfigOption.m_bUseRawMerge); |
| | | akFileDB.setItem("RawMerge_LocalPath", m_ConfigOption.m_strRawMergeLocalPath); |
| | | akFileDB.setItem("Stack_EquipID", m_ConfigOption.m_strStackEquipID); |
| | | akFileDB.setItem("Stack_Param1",m_ConfigOption.m_strStackParam1); |
| | | akFileDB.setItem("Stack_Param2",m_ConfigOption.m_strStackParam2); |
| | |
| | | |
| | | void CDitGlassRawMessengerDlg::OnBnClickedBtnImportRaw() |
| | | { |
| | | AKLOG("�̱���� ������ �ʿ䰡 �ְڳ�.. ������..."); |
| | | AKLOG("ì´ê¸°ë¥ì ê°ê¸ì íìê° ìê² ë.. ì¶ì¼ë¤..."); |
| | | PostMessage(UM_GLASSRAW_CLIENTMESSAGE); |
| | | } |
| | | |
| | |
| | | { |
| | | m_ConfigOption.m_bUseStack = ((CButton*)GetDlgItem(IDC_CHECK_STACKFILEREAD))->GetCheck(); |
| | | GetDlgItemText(IDC_EDIT_STACK_LOCALSAVEPATH,m_ConfigOption.m_strStackLocalPath, 256); |
| | | m_ConfigOption.m_bUseRawMerge = ((CButton*)GetDlgItem(IDC_CHECK_RAWMERGEFILEREAD))->GetCheck(); |
| | | GetDlgItemText(IDC_EDIT_RAWMERGE_LOCALSAVEPATH, m_ConfigOption.m_strRawMergeLocalPath, 256); |
| | | GetDlgItemText(IDC_EDIT_STACK_EQUIPID,m_ConfigOption.m_strStackEquipID, 32); |
| | | GetDlgItemText(IDC_EDIT_STACK_PARAM1,m_ConfigOption.m_strStackParam1, 32); |
| | | GetDlgItemText(IDC_EDIT_STACK_PARAM2,m_ConfigOption.m_strStackParam2, 32); |
| | |
| | | |
| | | |
| | | |
| | | 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; |
| | |
| | | { |
| | | for(POSITION pos=dlg.GetStartPosition(); pos != NULL;) |
| | | { |
| | | // ��ü������ ResetContent |
| | | // ì ì²´ìì ë ResetContent |
| | | File = dlg.GetNextPathName(pos); |
| | | |
| | | |
| | |
| | | char m_strStackEquipID[32]; |
| | | char m_strStackParam1[32]; |
| | | char m_strStackParam2[32]; |
| | | |
| | | int m_bUseRawMerge; |
| | | char m_strRawMergeLocalPath[256]; |
| | | }m_ConfigOption; |
| | | void WriteConfigFile(); |
| | | |
| | |
| | | || sizeof(_grmBlockData) != m_pGlassRawInfo->m_nSizeOfBlockData |
| | | || sizeof(_grmCellData) != m_pGlassRawInfo->m_nSizeOfCellData |
| | | || sizeof(_grmDefectData) != m_pGlassRawInfo->m_nSizeOfDefectData |
| | | || sizeof(_grmDefectData) != m_pGlassRawInfo->m_nSizeOfStackData) |
| | | || sizeof(_grmDefectData) != m_pGlassRawInfo->m_nSizeOfStackData |
| | | || sizeof(_grmDefectData) != m_pGlassRawInfo->m_nSizeOfRawMergeData) |
| | | { |
| | | return FALSE; |
| | | } |
| | |
| | | m_pGlassRawInfo->m_nCellMaxDataNum = nCellNum; |
| | | m_pGlassRawInfo->m_nDefectMaxDataNum = nDefectNum; |
| | | m_pGlassRawInfo->m_nStackMaxDataNum = nDefectNum; |
| | | |
| | | m_pGlassRawInfo->m_nRawMergeMaxDataNum = nDefectNum; |
| | | |
| | | m_pGlassRawInfo->m_nGlassRawDataSize; |
| | | { |
| | | int nDataNum = 0; |
| | |
| | | m_pGlassRawInfo->m_nStackDataPoint = nDataNum; |
| | | nDataNum += (m_pGlassRawInfo->m_nSizeOfStackData + m_pGlassRawInfo->m_nSizeOfStackData % 4)*nDefectNum; |
| | | |
| | | m_pGlassRawInfo->m_nRawMergeDataPoint = nDataNum; |
| | | nDataNum += (m_pGlassRawInfo->m_nSizeOfRawMergeData + m_pGlassRawInfo->m_nSizeOfRawMergeData % 4)*nDefectNum; |
| | | |
| | | m_pGlassRawInfo->m_nGlassRawDataSize = nDataNum; |
| | | } |
| | | |
| | |
| | | m_pGlassRawInfo->m_nSizeOfCellData = sizeof(_grmCellData); |
| | | m_pGlassRawInfo->m_nSizeOfDefectData = sizeof(_grmDefectData); |
| | | m_pGlassRawInfo->m_nSizeOfStackData = sizeof(_grmDefectData); |
| | | m_pGlassRawInfo->m_nSizeOfRawMergeData = sizeof(_grmDefectData); |
| | | |
| | | int bytealign = m_pGlassRawInfo->m_nSizeOfGlassData%4; |
| | | } |
| | |
| | | m_pCellData = (_grmCellData*)&m_pGlassRawData[m_pGlassRawInfo->m_nCellDataPoint]; |
| | | m_pDefectData = (_grmDefectData*)&m_pGlassRawData[m_pGlassRawInfo->m_nDefectDataPoint]; |
| | | m_pStackData = (_grmDefectData*)&m_pGlassRawData[m_pGlassRawInfo->m_nStackDataPoint]; |
| | | m_pRawMergeData = (_grmDefectData*)&m_pGlassRawData[m_pGlassRawInfo->m_nRawMergeDataPoint]; |
| | | |
| | | return TRUE; |
| | | } |
| | |
| | | _grmCellData* GetCellData(int nIndex){return &m_pCellData[nIndex];}; |
| | | _grmDefectData* GetDefectData(int nIndex){return &m_pDefectData[nIndex];}; |
| | | _grmDefectData* GetStackData(int nIndex) { return &m_pStackData[nIndex]; }; |
| | | _grmDefectData* GetRawMergeData(int nIndex) { return &m_pRawMergeData[nIndex]; }; |
| | | |
| | | _grmDitGlassRawInfo* GetGlassRawInfo(){return m_pGlassRawInfo;}; |
| | | |
| | |
| | | _grmCellData* m_pCellData; |
| | | _grmDefectData* m_pDefectData; |
| | | _grmDefectData* m_pStackData; |
| | | |
| | | _grmDefectData* m_pRawMergeData; |
| | | |
| | | protected: |
| | | HANDLE m_hMapBasicInfo; |
| | |
| | | #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 }; |
| | |
| | | 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 }; |
| | |
| | | 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 }; |
| | |
| | | |
| | | m_StackResult.StackFileReadStart(pData->GetGlassData()->m_strGlassID); |
| | | } |
| | | |
| | | if (m_RawMergeResult.getRawMergeUse()) |
| | | { |
| | | SendMessageFTPDownloadDataFile(pData->GetGlassData()); |
| | | m_RawMergeResult.RawMergeFileReadStart(pData->GetGlassData()->m_strGlassID); |
| | | } |
| | | |
| | | return TRUE; |
| | | } |
| | |
| | | _TimeDelay(5000); // ì´ë¯¸ì§ ë³µì¬ ìê° ë기 |
| | | //210218 CJH - ê²ì¬ ì¢
ë£ì ê²°ê³¼íì¼ ë° CCD Image ì
ë¡ë |
| | | SendMessageFTPUploadRaw(pData->GetGlassData()); |
| | | SendMessageFTPUploadImage(pData->GetGlassData(), FTPCMD_AOI_IMAGE); |
| | | |
| | | BOOL bIsBDI = strcmp((pData->GetGlassData()->m_strLine), _T("BDI")) == 0 ? TRUE : FALSE; |
| | | if (bIsBDI) |
| | | { |
| | | SendMessageFTPUploadImage(pData->GetGlassData(), FTPCMD_AOI_IMAGE); |
| | | } |
| | | |
| | | SendMessageFTPUploadImage(pData->GetGlassData(), FTPCMD_MURA_IMAGE);//0405nwh |
| | | |
| | | return TRUE; |
| | |
| | | void CGlassRawCPJT::SendMessageFTPDownloadDataFile( _grmGlassData* pGlassData ) |
| | | { |
| | | if(pGlassData == NULL) return; |
| | | HWND hWnd = ::FindWindow(NULL, "FTPDownloader"); |
| | | HWND hWnd = ::FindWindow(NULL, "FTPUploader"); |
| | | if(hWnd == NULL) return; |
| | | |
| | | char strServerFolder[256] = {}; |
| | | char strServerFile[256] = {}; |
| | | char strLocalFolder[256] = {}; |
| | | char pLocalFile[256] = {}; |
| | | char pLocalFile[256] = {}; |
| | | char strRTMSFile[32] = {}; |
| | | char strServerRawFileSubPath[256] = {}; |
| | | char strServer_SubFileName[256] = {}; |
| | | |
| | | //GetFormatDescription(FTPCMD_DATAFILE, strServerFolder, strServerFile, strLocalFolder, pLocalFile, pGlassData); |
| | | { |
| | | CString strGlassIDOrg = pGlassData->m_strGlassID; |
| | | CString strGlassID = strGlassIDOrg.Left(12); |
| | | sprintf(strServerFolder, "%s", pGlassData->m_strCassetteSequenceNo); |
| | | sprintf(strServerFile, "%s.dat", strGlassID.GetBuffer(0)); |
| | | sprintf(strLocalFolder, "D:\\DIT_ResultData\\DownloadData"); |
| | | sprintf(pLocalFile, "%s.dat", strGlassID.GetBuffer(0)); |
| | | } |
| | | GetFormatDescription(FTPCMD_RAWMERGE, strServerFolder, strServerFile, strLocalFolder, pLocalFile, strRTMSFile, strServerRawFileSubPath, strServer_SubFileName, pGlassData); |
| | | |
| | | CFTPCopyDataParam upParam; |
| | | strcpy(upParam.m_strServer_FolderName, strServerFolder); |
| | |
| | | upParam.m_nSendResultCode = FALSE;//m_ctrlResultAck.GetCheck(); |
| | | upParam.m_nProcessType = CFTPCopyDataParam::FTPProcessType_DownFile; |
| | | // [C-PRJ] Image Upload Define - KHT (2020/11/19) |
| | | upParam.m_nDataType = CFTPCopyDataParam::FTPDataType_Unknown; |
| | | upParam.m_nDataType = CFTPCopyDataParam::FTPDataType_Raw; |
| | | |
| | | COPYDATASTRUCT cds; |
| | | cds.dwData = CFTPCopyDataParam::FTPCopyDataCmd_RawDownload; |
| | |
| | | else |
| | | sprintf(pServerPath, "\\%s\\%s\\%s\\", strProcessID, strStepID, strGlassIDLevel6th); |
| | | |
| | | sprintf(pLocalPath, "%s%s", LOCAL_AOI_IMAGE_PATH, strGlassID.GetBuffer(0)); |
| | | sprintf(pLocalPath, "%s%s", NETWORK_AOI_IMAGE_PATH, strGlassID.GetBuffer(0)); |
| | | strcpy(pServerFile, "*.*"); |
| | | strcpy(pLocalFile, "*.*"); |
| | | } |
| | |
| | | sprintf(pLocalFile, "%s", strGlassID.GetBuffer(0)); |
| | | } |
| | | break; |
| | | |
| | | case FTPCMD_MURA_IMAGE: //0404nwh |
| | | { // |
| | | /*CTime time = m_tmFileCreateTime; |
| | | sprintf(pServerPath, "%s\\%04d%02d%02d\\%s\\%s\\%s\\Image", pGlassData->m_strEquipID, time.GetYear(), time.GetMonth(), time.GetDay(), |
| | | strGlassIDLevel5th.GetBuffer(0), |
| | | strGlassIDLevel8th.GetBuffer(0), |
| | | strGlassID.GetBuffer(0)); |
| | | |
| | | sprintf(pLocalPath, "%s%s", LOCAL_MURA_IMAGE_PATH, strGlassID.GetBuffer(0)); |
| | | strcpy(pServerFile, "*.*"); |
| | | strcpy(pLocalFile, "*.*");*/ |
| | | |
| | | if (strGlassID.GetLength() > 6) |
| | | sprintf(pServerPath, "\\%s\\%s\\%s\\%s\\", strProcessID, strStepID, strGlassIDLevel6th, strGlassID); |
| | | else |
| | | sprintf(pServerPath, "\\%s\\%s\\%s\\", strProcessID, strStepID, strGlassIDLevel6th); |
| | | case FTPCMD_RAWMERGE: |
| | | { |
| | | sprintf(pServerPath, "\\%s\\%s\\%s", strProcessID, strStepID,strGlassIDLevel6th.GetBuffer(0)); // ìë² ê²½ë¡ íì¸í ìì kjg |
| | | sprintf(pServerFile, "%s",strGlassID); |
| | | |
| | | sprintf(pLocalPath, "%s", m_RawMergeResult.getRawMergeLocalPath()); |
| | | sprintf(pLocalFile, "%s", strGlassID.GetBuffer(0)); |
| | | } |
| | | break; |
| | | case FTPCMD_MURA_IMAGE: //0404nwh |
| | | { // |
| | | /*CTime time = m_tmFileCreateTime; |
| | | sprintf(pServerPath, "%s\\%04d%02d%02d\\%s\\%s\\%s\\Image", pGlassData->m_strEquipID, time.GetYear(), time.GetMonth(), time.GetDay(), |
| | | strGlassIDLevel5th.GetBuffer(0), |
| | | strGlassIDLevel8th.GetBuffer(0), |
| | | strGlassID.GetBuffer(0)); |
| | | |
| | | sprintf(pLocalPath, "%s%s", LOCAL_MURA_IMAGE_PATH, strGlassID.GetBuffer(0)); |
| | | strcpy(pServerFile, "*.*"); |
| | | strcpy(pLocalFile, "*.*");*/ |
| | | |
| | | if (strGlassID.GetLength() > 6) |
| | | sprintf(pServerPath, "\\%s\\%s\\%s\\%s\\", strProcessID, strStepID, strGlassIDLevel6th, strGlassID); |
| | | else |
| | | sprintf(pServerPath, "\\%s\\%s\\%s\\", strProcessID, strStepID, strGlassIDLevel6th); |
| | | |
| | | sprintf(pLocalPath, "%s%s", LOCAL_MURA_IMAGE_PATH, strGlassID.GetBuffer(0)); |
| | | strcpy(pServerFile, "*.*"); |
| | |
| | | #include "MacroResultFile.h" |
| | | #include "CustomizeReview.h" |
| | | #include "InterfaceFTP.h" |
| | | #include "RawResultReader.h" |
| | | |
| | | class CGlassRawCPJT : public CGlassRawBase, public CInterfaceFTP |
| | | { |
| | |
| | | CMacroResultFile m_MuraResultFile; //무ë¼ì© ê²°ê³¼íì¼ ìì±ê´ë¦¬ [ê¹íí 2018/12/5] |
| | | |
| | | CStackResultCPJT m_StackResult; |
| | | CRawResultReader m_RawMergeResult; |
| | | BOOL m_bReviewEndCheck; // InspectEnd ìì Raw_im í´ëì SubFile ìì± ìí기 ìí´ ì¬ì© [ 21-03-18 KJG ] |
| | | CTime m_tmReviewStart; |
| | | CTime m_tmReviewEnd; |
| | |
| | | FTPCMD_MURA_IMAGE , |
| | | FTPCMD_STACK , |
| | | FTPCMD_LINK , |
| | | FTPCMD_End |
| | | FTPCMD_End , |
| | | FTPCMD_RAWMERGE |
| | | }; |
| | | |
| | | public: |
»õ ÆÄÀÏ |
| | |
| | | #include "StdAfx.h" |
| | | #include "RawResultReader.h" |
| | | #include "akLoggerExt.h" |
| | | #include "akCore/akFileDB.h" |
| | | #include <process.h> |
| | | #include "DitGlassRawClient.h" |
| | | #include "GlassRawBase.h" |
| | | |
| | | #ifdef _DEBUG |
| | | #undef THIS_FILE |
| | | static char THIS_FILE[] = __FILE__; |
| | | #define new DEBUG_NEW |
| | | #endif |
| | | |
| | | CRawResultReader::CRawResultReader(void) |
| | | { |
| | | m_nThreadStackFileReadFlag = 0; |
| | | m_nProcessState = RPS_StateIdle; |
| | | |
| | | m_strConfigFile; |
| | | { |
| | | GetModuleFileName(NULL, m_strConfigFile, MAX_PATH); |
| | | char* ext = CakFileUtil::getFileExt(m_strConfigFile); |
| | | strcpy(ext, "ini"); |
| | | } |
| | | CreateDirectory("D:\\DIT_ResultData\\RawMerge", NULL); |
| | | m_nProcessState = RPS_StateIdle; |
| | | readOptionFile(); |
| | | } |
| | | |
| | | CRawResultReader::~CRawResultReader(void) |
| | | { |
| | | |
| | | if (m_nThreadStackFileReadFlag == 1) |
| | | { |
| | | m_nThreadStackFileReadFlag = 2; |
| | | while (m_nThreadStackFileReadFlag != 0) |
| | | { |
| | | Sleep(1); |
| | | } |
| | | } |
| | | |
| | | m_vecStackDefect.clear(); |
| | | |
| | | } |
| | | |
| | | BOOL CRawResultReader::openFile(char* pGlassID) |
| | | { |
| | | CString strFileName; |
| | | CDitGlassRawClient GlassRawClient; |
| | | GlassRawClient.ConnectServer(); |
| | | CDitGlassRawClient* pShared = &GlassRawClient; |
| | | |
| | | _grmDefectData* pGrmStack; |
| | | |
| | | strFileName.Format("%s\\%s", m_strLocalPath, pGlassID); |
| | | |
| | | FILE* pf = fopen(strFileName.GetBuffer(0), "r"); |
| | | |
| | | if (pf == NULL) |
| | | return FALSE; |
| | | |
| | | std::vector<_grmDefectData> vecStackDefect; |
| | | _grmDefectData StackDefect; |
| | | char buffer[2048]; |
| | | |
| | | char* pReadPoint = NULL; |
| | | char *pStr; |
| | | CString tempStr, strRight; |
| | | |
| | | while (!feof(pf)) //Data ìì |
| | | { |
| | | pStr = fgets(buffer, 2048, pf); |
| | | |
| | | if (strncmp(buffer, "DATA", 4)) continue; |
| | | |
| | | if (strlen(buffer) <= 0 || pStr == NULL) |
| | | break; |
| | | |
| | | if (strncmp(buffer, "DATA DEFECT", 10)) continue; |
| | | |
| | | //Defect Stack Start |
| | | { |
| | | pReadPoint = buffer; |
| | | int temp; |
| | | CString strtemp; |
| | | |
| | | pReadPoint = getParsingData(pReadPoint, 4, &temp); |
| | | pReadPoint = getParsingData(pReadPoint, 6, &temp); |
| | | pReadPoint = getParsingData(pReadPoint, 12, &strtemp); |
| | | |
| | | |
| | | //Cell IDë¡ idx 찾기 |
| | | { |
| | | tempStr = strtemp.Right(2); |
| | | int nUpper = atoi(tempStr.Left(1)); |
| | | nUpper *= 36; |
| | | |
| | | char ctemp[2]; |
| | | strRight = tempStr.Right(1); |
| | | strcpy(ctemp, strRight); |
| | | int nLower = static_cast<int>(ctemp[0]); |
| | | if (48 <= nLower && nLower <= 57) |
| | | nLower = 43 /* 65+26+17 */ + nLower; |
| | | nLower -= 65; |
| | | |
| | | StackDefect.m_nCellIdx = nUpper + nLower; |
| | | } |
| | | |
| | | |
| | | pReadPoint = getParsingData(pReadPoint, 5, &temp); |
| | | pReadPoint = getParsingData(pReadPoint, 8, &StackDefect.m_nUMCenterAlignX); |
| | | pReadPoint = getParsingData(pReadPoint, 8, &StackDefect.m_nUMCenterAlignY); |
| | | StackDefect.m_nUMCenterAlignY = StackDefect.m_nUMCenterAlignY*-1; |
| | | pReadPoint = getParsingData(pReadPoint, 6, &StackDefect.m_nCellGate); |
| | | pReadPoint = getParsingData(pReadPoint, 6, &StackDefect.m_nCellData); |
| | | pReadPoint = getParsingData(pReadPoint, 4, &StackDefect.m_nPixelSize); |
| | | pReadPoint = getParsingData(pReadPoint, 4, &StackDefect.m_nUMSizeX); |
| | | pReadPoint = getParsingData(pReadPoint, 4, &StackDefect.m_nUMSizeY); |
| | | pReadPoint = getParsingData(pReadPoint, 4, &StackDefect.m_nDefectRScale); |
| | | pReadPoint = getParsingData(pReadPoint, 4, &strtemp); //StackDefect.m_DefectJudgement |
| | | if (strtemp == "OK") |
| | | StackDefect.m_DefectJudgement = Judge_OK; |
| | | else if (strtemp == "TR") |
| | | StackDefect.m_DefectJudgement = Judge_TR; |
| | | else if (strtemp == "PR") |
| | | StackDefect.m_DefectJudgement = Judge_PR; |
| | | else |
| | | StackDefect.m_StackInfo = Stack_Unknown; |
| | | |
| | | pReadPoint = getParsingData(pReadPoint, 4, &strtemp); |
| | | strncpy(StackDefect.m_strDefectCode, strtemp.GetBuffer(0), 4+1); // Null 문ì ë문ì +1 |
| | | pReadPoint = getParsingData(pReadPoint, 2, &strtemp); |
| | | if (strtemp == "UK") |
| | | StackDefect.m_StackInfo = Stack_Unknown; |
| | | else if (strtemp == "TD") |
| | | StackDefect.m_StackInfo = Stack_TD; |
| | | else if (strtemp == "SD") |
| | | StackDefect.m_StackInfo = Stack_SD; |
| | | else if (strtemp == "PD") |
| | | StackDefect.m_StackInfo = Stack_PD; |
| | | else if (strtemp == "SP") |
| | | StackDefect.m_StackInfo = Stack_SP; |
| | | else |
| | | StackDefect.m_StackInfo = Stack_Unknown; |
| | | |
| | | pReadPoint = getParsingData(pReadPoint, 2, &StackDefect.m_nStackStepCount); |
| | | pReadPoint = getParsingData(pReadPoint, 60, &strtemp); // Stack Step m_strStackFirst |
| | | strncpy(StackDefect.m_strStackFirst, strtemp.GetBuffer(0), 60); |
| | | pReadPoint = getParsingData(pReadPoint, 16, &strtemp); // ReviewImageName m_strRevImageName |
| | | pReadPoint = getParsingData(pReadPoint, 12, &temp); // 미ì¬ì© |
| | | pReadPoint = getParsingData(pReadPoint, 12, &temp); // 미ì¬ì© |
| | | pReadPoint = getParsingData(pReadPoint, 12, &strtemp); // ZoneNum m_sZonePixelCount[i] |
| | | pReadPoint = getParsingData(pReadPoint, 12, &strtemp);//m_DefectSizeType |
| | | if (strtemp == "S") |
| | | StackDefect.m_DefectSizeType = SizeType_Small; |
| | | else if (strtemp == "M") |
| | | StackDefect.m_DefectSizeType = SizeType_Mid; |
| | | else if (strtemp == "L") |
| | | StackDefect.m_DefectSizeType = SizeType_Large; |
| | | else if (strtemp == "H") |
| | | StackDefect.m_DefectSizeType = SizeType_Huge; |
| | | else if (strtemp == "U") |
| | | StackDefect.m_DefectSizeType = SizeType_Ultra; |
| | | else |
| | | StackDefect.m_DefectSizeType = SizeType_Small; |
| | | |
| | | pReadPoint = getParsingData(pReadPoint, 12, &strtemp);//m_DefectSubType |
| | | if (strtemp == "MC") |
| | | StackDefect.m_DefectSubType = DefectSubType_MC; |
| | | else if (strtemp == "MD") |
| | | StackDefect.m_DefectSubType = DefectSubType_Mask; |
| | | else if (strtemp == "CD") |
| | | StackDefect.m_DefectSubType = DefectSubType_Common; |
| | | else if (strtemp == "NO") |
| | | StackDefect.m_DefectSubType = DefectSubType_NoDefect; |
| | | else if (strtemp == "N") |
| | | StackDefect.m_DefectSubType = DefectSubType_Normal; |
| | | else |
| | | StackDefect.m_DefectSubType = DefectSubType_Normal; |
| | | |
| | | pReadPoint = getParsingData(pReadPoint, 12, &temp);//m_ReviewDefect.m_fWsi_ResultData[1] |
| | | pReadPoint = getParsingData(pReadPoint, 12, &temp);//m_ReviewDefect.m_fWsi_ResultData[3] |
| | | pReadPoint = getParsingData(pReadPoint, 12, &strtemp);//미ì¬ì© |
| | | pReadPoint = getParsingData(pReadPoint, 12, &StackDefect.m_nLevelSrcMin);//m_nLevelSrcMin |
| | | pReadPoint = getParsingData(pReadPoint, 12, &StackDefect.m_nLevelSrcMax);//m_nLevelSrcMax |
| | | pReadPoint = getParsingData(pReadPoint, 12, &StackDefect.m_nLevelSrcAvg);//m_nLevelSrcAvg |
| | | pReadPoint = getParsingData(pReadPoint, 12, &StackDefect.m_sDefectPeak);//m_sDefectPeak |
| | | pReadPoint = getParsingData(pReadPoint, 12, &strtemp);//m_ReviewDefect.m_strWsi_3DImageFilename |
| | | pReadPoint = getParsingData(pReadPoint, 12, &strtemp);//m_strAoiImageName |
| | | strncpy(StackDefect.m_strAoiImageName, strtemp.GetBuffer(0), 12); |
| | | pReadPoint = getParsingData(pReadPoint, 12, &StackDefect.m_nScanIdx);//m_nScanIdx |
| | | pReadPoint = getParsingData(pReadPoint, 12, &StackDefect.m_nCameraID);//m_nCameraID |
| | | pReadPoint = getParsingData(pReadPoint, 12, &temp);//m_nDefectIdx |
| | | pReadPoint = getParsingData(pReadPoint, 12, &StackDefect.m_nLevelRefMin);//m_nLevelRefMin |
| | | pReadPoint = getParsingData(pReadPoint, 12, &StackDefect.m_nLevelRefMax);//m_nLevelRefMax |
| | | pReadPoint = getParsingData(pReadPoint, 12, &StackDefect.m_nLevelRefAvg);//m_nLevelRefAvg |
| | | pReadPoint = getParsingData(pReadPoint, 12, &strtemp);//m_ReviewDefect.m_fWsi_ResultData[4] |
| | | pReadPoint = getParsingData(pReadPoint, 12, &strtemp);//m_ReviewDefect.m_fWsi_ResultData[5] |
| | | pReadPoint = getParsingData(pReadPoint, 12, &strtemp);//m_ReviewDefect.m_fWsi_ResultData[6] |
| | | pReadPoint = getParsingData(pReadPoint, 12, &strtemp);//m_nHliLayers |
| | | StackDefect.m_nHliLayers = 0; |
| | | { |
| | | CString resToken; |
| | | int curPos = 0, idx = 0; |
| | | resToken = strtemp.Tokenize(_T(","), curPos); |
| | | while (resToken != "") |
| | | { |
| | | int nShiftCnt = atoi(resToken); |
| | | StackDefect.m_nHliLayers = StackDefect.m_nHliLayers +( 1 << nShiftCnt ); |
| | | resToken = strtemp.Tokenize(_T(","), curPos); |
| | | } |
| | | } |
| | | pReadPoint = getParsingData(pReadPoint, 12, &StackDefect.m_nCompact);//m_nCompact |
| | | pReadPoint = getParsingData(pReadPoint, 12, &StackDefect.m_nThickness);//m_nThickness |
| | | pReadPoint = getParsingData(pReadPoint, 12, &StackDefect.m_nMajor);//m_nMajor |
| | | pReadPoint = getParsingData(pReadPoint, 12, &StackDefect.m_nMinor);//m_nMinor |
| | | pReadPoint = getParsingData(pReadPoint, 12, &strtemp);//m_ReviewDefect.m_fWsi_ResultData[0] |
| | | pReadPoint = getParsingData(pReadPoint, 12, &strtemp);//m_DefectType |
| | | if (strtemp == "RB") |
| | | StackDefect.m_DefectType = DefectType_RBlack; |
| | | else if (strtemp == "RW") |
| | | StackDefect.m_DefectType = DefectType_RWhite; |
| | | else if (strtemp == "TB") |
| | | StackDefect.m_DefectType = DefectType_TBlack; |
| | | else if (strtemp == "TW") |
| | | StackDefect.m_DefectType = DefectType_TWhite; |
| | | else if (strtemp == "UN") |
| | | StackDefect.m_DefectType = DefectType_Unknown; |
| | | else |
| | | StackDefect.m_DefectType = DefectType_Unknown; |
| | | |
| | | vecStackDefect.push_back(StackDefect); |
| | | } |
| | | } |
| | | |
| | | AKLOG("Read RawMerge Size : %d", vecStackDefect.size()); |
| | | |
| | | fclose(pf); |
| | | |
| | | m_vecStackDefect = vecStackDefect; |
| | | |
| | | for (int i = 0; i < m_vecStackDefect.size(); i++) |
| | | { |
| | | pGrmStack = pShared->GetRawMergeData(i); |
| | | pGrmStack->clear(); |
| | | memcpy(pGrmStack, &m_vecStackDefect[i], sizeof(_grmDefectData)); |
| | | } |
| | | |
| | | pShared->GetGlassData()->m_nRawMergeNum = m_vecStackDefect.size(); // RawMerge |
| | | pShared->GetGlassData()->m_bRawMergeRead = TRUE; |
| | | |
| | | AKLOG("Import Vector Size : %d", m_vecStackDefect.size()); |
| | | return TRUE; |
| | | } |
| | | |
| | | char* CRawResultReader::getParsingData(char* pBuf, int nLen, CString* pOutData) |
| | | { |
| | | |
| | | for (int i = nLen - 1; i >= 0; i--) |
| | | { |
| | | if (pBuf[i] != ' ') |
| | | { |
| | | pBuf[i + 1] = 0; |
| | | break; |
| | | } |
| | | } |
| | | *pOutData = pBuf; |
| | | |
| | | return &pBuf[nLen + 1]; //구ë¶ì ê±´ë ë°ì´ì ë¤ì ì½ì í¬ì¸í¸ ë겨ì¤ë¤ |
| | | |
| | | } |
| | | |
| | | char* CRawResultReader::getParsingData(char* pBuf, int nLen, short* pOutData) |
| | | { |
| | | |
| | | pBuf[nLen] = 0; |
| | | *pOutData = atoi(pBuf); |
| | | |
| | | return &pBuf[nLen + 1]; //구ë¶ì ê±´ë ë°ì´ì ë¤ì ì½ì í¬ì¸í¸ ë겨ì¤ë¤ |
| | | } |
| | | |
| | | char* CRawResultReader::getParsingData(char* pBuf, int nLen, int* pOutData) |
| | | { |
| | | |
| | | pBuf[nLen] = 0; |
| | | *pOutData = atoi(pBuf); |
| | | |
| | | return &pBuf[nLen + 1]; //구ë¶ì ê±´ë ë°ì´ì ë¤ì ì½ì í¬ì¸í¸ ë겨ì¤ë¤ |
| | | } |
| | | |
| | | BOOL CRawResultReader::readOptionFile(char* pFileName /*= "C:\\AOIServer\\ConfigFile\\MacroInfo.cfg"*/) |
| | | { |
| | | if (pFileName == NULL) pFileName = m_strConfigFile; |
| | | |
| | | CakFileDB akFileDB; |
| | | akFileDB.openfile(pFileName); |
| | | |
| | | akFileDB.getItem("RawMerge_Use", &m_bStackUse, 0); |
| | | akFileDB.getItem("RawMerge_LocalPath", m_strLocalPath, "D:\\DIT_ResultData\\RawMerge"); |
| | | |
| | | if (m_bStackUse && m_nThreadStackFileReadFlag == 0) |
| | | { |
| | | _beginthread(threadResultFileRead, NULL, this); |
| | | } |
| | | return TRUE; |
| | | } |
| | | |
| | | void CRawResultReader::threadResultFileRead(void* pArg) |
| | | { |
| | | CRawResultReader* pThis = (CRawResultReader*)pArg; |
| | | |
| | | pThis->m_nThreadStackFileReadFlag = 1; |
| | | int nReadFailCount = 0; |
| | | int nThreadCount = 0; |
| | | CString strGlassID; |
| | | |
| | | while (pThis->m_nThreadStackFileReadFlag == 1) |
| | | { |
| | | if (pThis->m_nProcessState == RPS_CmdFileRead) //ì¤ííì¼ ì½ê¸° ìí [ê¹íí 2019/1/12] |
| | | { |
| | | strGlassID = pThis->m_strGlassID; |
| | | |
| | | pThis->m_nProcessState = RPS_StateFileRead; |
| | | nThreadCount = 0; |
| | | nReadFailCount = 0; |
| | | |
| | | AKLOG("RawMerge File Read Start : %s\\%s", pThis->m_strLocalPath, strGlassID); |
| | | Sleep(3000); |
| | | while (pThis->m_nProcessState == RPS_StateFileRead && pThis->m_nThreadStackFileReadFlag == 1) |
| | | { |
| | | if ((nThreadCount++ % 20) != 0) //ëª
ë ¹ ìíì ë¹ ë¥´ê² ê°ì§ ìí ì¡°ì¹ |
| | | { |
| | | Sleep(50); |
| | | continue; |
| | | } |
| | | if (pThis->openFile(strGlassID.GetBuffer(0)) == TRUE) |
| | | { |
| | | pThis->m_nProcessState = RPS_ResultReadOK; |
| | | AKLOG("RawMerge File Read Complete "); |
| | | break; |
| | | } |
| | | |
| | | nReadFailCount++; |
| | | AKLOG("RawMerge File Read Try : %d", nReadFailCount); |
| | | |
| | | if (nReadFailCount > 10) |
| | | { |
| | | pThis->m_nProcessState = RPS_ResultReadFail; |
| | | break; |
| | | } |
| | | |
| | | Sleep(50); |
| | | } |
| | | if (pThis->m_nProcessState != RPS_ResultReadOK) |
| | | { |
| | | pThis->m_nProcessState = RPS_ResultReadFail; |
| | | } |
| | | } |
| | | if (nReadFailCount) |
| | | Sleep(500); |
| | | } |
| | | |
| | | pThis->m_nThreadStackFileReadFlag = 0; |
| | | } |
| | | |
| | | BOOL CRawResultReader::RawMergeFileReadStart(char* pGlassID) |
| | | { |
| | | if (m_nThreadStackFileReadFlag == 0) |
| | | { |
| | | _beginthread(threadResultFileRead, NULL, this); |
| | | } |
| | | |
| | | if (m_nProcessState == RPS_StateFileRead) |
| | | { |
| | | m_nProcessState = RPS_CmdFileStop; |
| | | while (m_nProcessState == RPS_CmdFileStop) Sleep(0); |
| | | } |
| | | |
| | | m_strGlassID = pGlassID; |
| | | m_nProcessState = RPS_CmdFileRead; |
| | | |
| | | return TRUE; |
| | | } |
| | | |
| | | BOOL CRawResultReader::RawMergeFileReadStop(BOOL bWait/*=TRUE*/) |
| | | { |
| | | /* |
| | | if (bWait == TRUE && m_nProcessState == SPS_StateFileRead) |
| | | { |
| | | m_nProcessState = SPS_CmdFileStop; |
| | | while (m_nProcessState == SPS_CmdFileStop) Sleep(0); |
| | | } |
| | | */ |
| | | return TRUE; |
| | | } |
»õ ÆÄÀÏ |
| | |
| | | #pragma once |
| | | |
| | | #include "DitGlassRawStruct.h" |
| | | #include <vector> |
| | | #include "akCore/akFileUtil.h" |
| | | |
| | | class CRawResultReader |
| | | { |
| | | public: |
| | | CRawResultReader(void); |
| | | virtual ~CRawResultReader(void); |
| | | protected: |
| | | enum emReadProcessState |
| | | { |
| | | RPS_StateIdle = 0, |
| | | RPS_StateFileRead, //ì½ê¸° ìí ì¤ |
| | | RPS_ResultReadOK, |
| | | RPS_ResultReadFail, |
| | | RPS_CmdFileRead, //ì½ê¸° ëª
ë ¹ ìí |
| | | RPS_CmdFileStop, //ì½ê¸° ëª
ë ¹ ìí ì¤ì§ |
| | | RPS_Num |
| | | }; |
| | | public: |
| | | |
| | | |
| | | void clear() |
| | | { |
| | | m_vecStackDefect.clear(); |
| | | } |
| | | |
| | | BOOL RawMergeFileReadStart(char* pGlassID); |
| | | BOOL RawMergeFileReadStop(BOOL bWait = TRUE); |
| | | BOOL IsRead() { return m_nProcessState == RPS_ResultReadOK ? TRUE : FALSE; } |
| | | |
| | | int GetDefectNum() { return (int)m_vecStackDefect.size(); } |
| | | _grmDefectData* GetDefect(int i) { return &m_vecStackDefect[i]; } |
| | | |
| | | BOOL readOptionFile(char* pFileName = NULL); |
| | | |
| | | BOOL getRawMergeUse() { return m_bStackUse; }; |
| | | char* getRawMergeLocalPath() { return m_strLocalPath; }; |
| | | protected: |
| | | BOOL openFile(char* pGlassID); |
| | | static void threadResultFileRead(void* pArg); |
| | | |
| | | int m_nThreadStackFileReadFlag; |
| | | |
| | | protected: |
| | | char m_strConfigFile[MAX_PATH]; |
| | | BOOL m_bStackUse; |
| | | char m_strLocalPath[MAX_PATH]; |
| | | |
| | | |
| | | emReadProcessState m_nProcessState;//-1:ì½ê¸°ì¤í¨,0:Idle, 1:ì½ê¸°ì±ê³µ, 2:ì½ê¸°ìë(ì½ê¸°ì¤) |
| | | std::vector<_grmDefectData> m_vecStackDefect; |
| | | |
| | | CString m_strGlassID; |
| | | protected: |
| | | char* getParsingData(char* pBuf, int nLen, CString* pOutData); |
| | | char* getParsingData(char* pBuf, int nLen, int* pOutData); |
| | | char* getParsingData(char* pBuf, int nLen, short* pOutData); |
| | | |
| | | |
| | | |
| | | }; |
| | |
| | | #define IDC_EDIT_STACK_PARAM2 1032 |
| | | #define IDC_BTN_MANUAL_FTPUPLOAD 1033 |
| | | #define IDC_BTN_FTP_MANUALUPLOAD 1033 |
| | | #define IDC_CHECK_RAWMERGEFILEREAD 1034 |
| | | #define IDC_EDIT_RAWMERGE_LOCALSAVEPATH 1035 |
| | | |
| | | // Next default values for new objects |
| | | // |
| | |
| | | { |
| | | m_hMapBasicInfo = NULL; |
| | | m_hMapGlassData = NULL; |
| | | |
| | | m_pDitGlassClient =NULL; |
| | | m_pGlassRawInfo = NULL; |
| | | m_pGlassRawData = NULL; |
| | | |
| | | m_nLastCommandIdx = -1; |
| | | |
| | | m_pGlassData = NULL; |
| | | m_pBlockData = NULL; |
| | | m_pCellData = NULL; |
| | | m_pDefectData = NULL; |
| | | } |
| | | |
| | | CDitGlassRawClient::~CDitGlassRawClient(void) |
| | |
| | | m_pCellData = (_grmCellData*)&m_pGlassRawData[m_pGlassRawInfo->m_nCellDataPoint]; |
| | | m_pDefectData = (_grmDefectData*)&m_pGlassRawData[m_pGlassRawInfo->m_nDefectDataPoint]; |
| | | m_pStackData = (_grmDefectData*)&m_pGlassRawData[m_pGlassRawInfo->m_nStackDataPoint]; |
| | | m_pRawMergeData = (_grmDefectData*)&m_pGlassRawData[m_pGlassRawInfo->m_nRawMergeDataPoint]; |
| | | |
| | | return TRUE; |
| | | } |
| | |
| | | |
| | | 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; |
| | |
| | | if(isConnect() == FALSE) return FALSE; |
| | | m_pGlassRawInfo->m_ClientProcStep = APS_GlassLoading; |
| | | m_pGlassData->m_bStackRead = FALSE; |
| | | m_pGlassData->m_bRawMergeRead = FALSE; |
| | | return SetCommand(grcSequenceGlassLoading); |
| | | } |
| | | |
| | |
| | | return SetCommand(grcSequenceCustomReviewDataRead); |
| | | } |
| | | |
| | | CDitGlassRawClient* CDitGlassRawClient::GetInstance() |
| | | { |
| | | if(m_pDitGlassClient == NULL) |
| | | { |
| | | m_pDitGlassClient = new CDitGlassRawClient; |
| | | } |
| | | |
| | | return m_pDitGlassClient; |
| | | } |
| | | |
| | | 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--) |
| | | { |
| | |
| | | |
| | | m_pGlassData->m_nDefectNum = nDefectNum-nDefectDeleteNum; |
| | | } |
| | | |
| | | CDitGlassRawClient* CDitGlassRawClient::m_pDitGlassClient; |
| | |
| | | #pragma once |
| | | |
| | | #include "DitGlassRawStruct.h" |
| | | #include <afxmt.h> |
| | | |
| | | class CDitGlassRawClient |
| | | { |
| | |
| | | ~CDitGlassRawClient(void); |
| | | |
| | | public: |
| | | static CDitGlassRawClient* GetInstance(); //cmark |
| | | |
| | | BOOL ConnectServer(); |
| | | BOOL isConnect(){return m_hMapBasicInfo == NULL || m_hMapGlassData == NULL ? FALSE : TRUE;}; |
| | | |
| | |
| | | |
| | | BOOL SetReviewComtomize(); |
| | | |
| | | void RemoveReviewDefects();//AOI���� ������ ���� ������ �����ϰ�, ���信�� ������ User Ȥ�� Reflow ������ �����Ѵ�. |
| | | void RemoveReviewDefects();//AOIìì ìì±í ëí ì 보를 ì ì¸íê³ , 리뷰ìì ìì±í User í¹ì Reflow ê²°í¨ì ì ì¸íë¤. |
| | | |
| | | _grmDitMemInfo* GetGlassMeminfo(){return (_grmDitMemInfo*)m_pGlassRawInfo;}; |
| | | _grmGlassData* GetGlassData(){return m_pGlassData;}; |
| | |
| | | _grmCellData* GetCellData(int nIndex){return &m_pCellData[nIndex];}; |
| | | _grmDefectData* GetDefectData(int nIndex){return &m_pDefectData[nIndex];}; |
| | | _grmDefectData* GetStackData(int nIndex) { return &m_pStackData[nIndex];}; |
| | | _grmDefectData* GetRawMergeData(int nIndex) { return &m_pRawMergeData[nIndex]; }; |
| | | |
| | | //��� ���� ���� ���� ��� [������ 2018/11/12] |
| | | //ê²°ê³¼ íì¼ ê°ì ì°ê¸° ëª
ë ¹ [ê¹íí 2018/11/12] |
| | | BOOL WriteAOIRawFile(); |
| | | |
| | | //������� ���� ���̳ʸ� ���·� ���� [������ 2018/11/12] |
| | | //ê²°ê³¼íì¼ ê°ì ë°ì´ë리 ííë¡ ì°ê¸° [ê¹íí 2018/11/12] |
| | | BOOL WriteAOIRawBinFile(); |
| | | |
| | | //������� ���� ���̳ʸ� �б� |
| | | //ê²°ê³¼íì¼ ê°ì ë°ì´ë리 ì½ê¸° |
| | | BOOL ReadAOIRawBinFile(); |
| | | |
| | | BOOL WriteReviewRawBinFile(); |
| | |
| | | BOOL ConnectGlassRawInfo(); |
| | | BOOL ConnectGlassRawData(); |
| | | BOOL SetCommand(emGlassRawCommand nCmd); |
| | | |
| | | static CDitGlassRawClient* m_pDitGlassClient; //cmark |
| | | protected: |
| | | _grmGlassData* m_pGlassData; |
| | | _grmBlockData* m_pBlockData; |
| | | _grmCellData* m_pCellData; |
| | | _grmDefectData* m_pDefectData; |
| | | _grmDefectData* m_pStackData; |
| | | |
| | | _grmDefectData* m_pRawMergeData; |
| | | protected: |
| | | HANDLE m_hMapBasicInfo; |
| | | HANDLE m_hMapGlassData; |
| | |
| | | |
| | | #define RAWMESSENGER_MAXCAMNUM 30 |
| | | #define RAWMESSENGER_MAXSCANNUM 20 |
| | | #define RAWMESSENGER_MAXHLINUM 8 |
| | | |
| | | #define MAX_ZONE_NUM 16 |
| | | |
| | |
| | | memset(this, 0, sizeof(_grmGlassData)); |
| | | } |
| | | |
| | | //Glass ���� |
| | | //Glass ì ë³´ |
| | | char m_strFileName[64]; |
| | | char m_strPath[256]; |
| | | |
| | |
| | | |
| | | 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]; |
| | |
| | | CTime m_tmReviewLoading; |
| | | CTime m_tmReviewEnd; |
| | | |
| | | //�⺻ �������� |
| | | //기본 물ë¥ì ë³´ |
| | | char m_strGlassID[32]; //Glass ID |
| | | char m_strPPID[32]; |
| | | char m_strEPPID[32]; |
| | |
| | | char m_strVCRGlassID[32]; |
| | | |
| | | |
| | | //���� ���� ���� ���� |
| | | //ê²°í¨ ê°¯ì ê´ë¦¬ ë³ì |
| | | int m_nDefectNumSizeSmall; |
| | | int m_nDefectNumSizeMid; |
| | | int m_nDefectNumSizeLarge; |
| | |
| | | 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]; |
| | | unsigned char m_nGrayLevelAvg[RAWMESSENGER_MAXCAMNUM*RAWMESSENGER_MAXSCANNUM*RAWMESSENGER_MAXHLINUM]; |
| | | unsigned char m_nGrayLevelMin[RAWMESSENGER_MAXCAMNUM*RAWMESSENGER_MAXSCANNUM*RAWMESSENGER_MAXHLINUM]; |
| | | unsigned char m_nGrayLevelMax[RAWMESSENGER_MAXCAMNUM*RAWMESSENGER_MAXSCANNUM*RAWMESSENGER_MAXHLINUM]; |
| | | |
| | | //����� ���� um[������ 2018/12/10] |
| | | //ì¼ë¼ì¸ ì ë³´ um[ê¹íí 2018/12/10] |
| | | double m_nAlignCcdTheta; |
| | | double m_nAlignCcdShitftX; |
| | | double m_nAlignCcdShitftY; |
| | |
| | | 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 |
| | |
| | | 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]; |
| | |
| | | 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 ��� ���� �� |
| | | int m_nRawMergeNum; |
| | | BOOL m_bRawMergeRead; |
| | | //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; |
| | | |
| | | }; |
| | |
| | | } |
| | | 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; |
| | |
| | | int m_nJudgeGlade; |
| | | |
| | | |
| | | //���� ���� ���� ���� |
| | | //ê²°í¨ ê°¯ì ê´ë¦¬ ë³ì |
| | | int m_nDefectNumSizeSmall; |
| | | int m_nDefectNumSizeMid; |
| | | int m_nDefectNumSizeLarge; |
| | |
| | | char m_strProImage[32]; |
| | | char m_strAvgGray_0[12]; |
| | | char m_strPortion_0[12]; |
| | | //kyh Mura Data �߰� 0622 |
| | | //kyh Mura Data ì¶ê° 0622 |
| | | char m_strCorner_Gray_0[12]; |
| | | char m_strAvgAmp_0[12]; |
| | | char m_strFFTVar_0[12]; |
| | |
| | | |
| | | char m_strAvgGray_1[12]; |
| | | char m_strPortion_1[12]; |
| | | //kyh Mura Data �߰� 0622 |
| | | //kyh Mura Data ì¶ê° 0622 |
| | | char m_strCorner_Gray_1[12]; |
| | | char m_strAvgAmp_1[12]; |
| | | char m_strFFTVar_1[12]; |
| | |
| | | |
| | | char m_strAvgGray_2[12]; |
| | | char m_strPortion_2[12]; |
| | | //kyh Mura Data �߰� 0622 |
| | | //kyh Mura Data ì¶ê° 0622 |
| | | char m_strCorner_Gray_2[12]; |
| | | char m_strAvgAmp_2[12]; |
| | | char m_strFFTVar_2[12]; |
| | |
| | | |
| | | char m_strAvgGray_3[12]; |
| | | char m_strPortion_3[12]; |
| | | //kyh Mura Data �߰� 0622 |
| | | //kyh Mura Data ì¶ê° 0622 |
| | | char m_strCorner_Gray_3[12]; |
| | | char m_strAvgAmp_3[12]; |
| | | char m_strFFTVar_3[12]; |
| | |
| | | |
| | | 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; |
| | | }; |
| | |
| | | } |
| | | |
| | | ////////////////////////////////////////////////////////////////////////// |
| | | //���⼠���� ���� ���� [������ 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; |
| | |
| | | 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]; |
| | |
| | | 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; |
| | |
| | | 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]; |
| | |
| | | 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 ���� �߰� |
| | | BOOL m_bShrinked; //210323 CJH - Frame Shrink ì ë³´ ì¶ê° |
| | | |
| | | char m_strAoiImagePath[255]; |
| | | char m_strReviewImagePath[255]; |
| | |
| | | int m_nAlignRectRight; |
| | | |
| | | |
| | | //���� ���� ���� [������ 2019/1/19] |
| | | _grmDefectReviewData m_ReviewDefect; |
| | | }; |
| | | |
| | |
| | | |
| | | struct _grmDitMemInfo |
| | | { |
| | | //���� �޸� ������ ���� ���� [������ 2018/11/12] |
| | | //ê³µì ë©ëª¨ë¦¬ ìì±í ê³µê° ê²°ì [ê¹íí 2018/11/12] |
| | | size_t m_nGlassRawDataSize; |
| | | int m_nGlassMaxDataNum; |
| | | int m_nBlockMaxDataNum; |
| | | int m_nCellMaxDataNum; |
| | | int m_nDefectMaxDataNum; |
| | | int m_nStackMaxDataNum; |
| | | int m_nRawMergeMaxDataNum; |
| | | |
| | | //Char ���� �ڷᰡ �ִ� ���� ��ġ [������ 2018/11/12] |
| | | //Char ê¸°ì¤ ìë£ê° ìë ìì ìì¹ [ê¹íí 2018/11/12] |
| | | int m_nGlassDataPoint; |
| | | int m_nBlockDataPoint; |
| | | int m_nCellDataPoint; |
| | | int m_nDefectDataPoint; |
| | | int m_nStackDataPoint; |
| | | int m_nRawMergeDataPoint; |
| | | |
| | | int m_nSizeOfGlassData; |
| | | int m_nSizeOfBlockData; |
| | | int m_nSizeOfCellData; |
| | | int m_nSizeOfDefectData; |
| | | int m_nSizeOfStackData; |
| | | int m_nSizeOfRawMergeData; |
| | | }; |
| | | 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 |
| | |
| | | { |
| | | 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; |
| | | |
| | |
| | | || sizeof(_grmBlockData) != m_pGlassRawInfo->m_nSizeOfBlockData |
| | | || sizeof(_grmCellData) != m_pGlassRawInfo->m_nSizeOfCellData |
| | | || sizeof(_grmDefectData) != m_pGlassRawInfo->m_nSizeOfDefectData |
| | | || sizeof(_grmDefectData) != m_pGlassRawInfo->m_nSizeOfStackData) |
| | | || sizeof(_grmDefectData) != m_pGlassRawInfo->m_nSizeOfStackData |
| | | || sizeof(_grmDefectData) != m_pGlassRawInfo->m_nSizeOfRawMergeData) |
| | | { |
| | | return FALSE; |
| | | } |
| | |
| | | m_pGlassRawInfo->m_nCellMaxDataNum = nCellNum; |
| | | m_pGlassRawInfo->m_nDefectMaxDataNum = nDefectNum; |
| | | m_pGlassRawInfo->m_nStackMaxDataNum = nDefectNum; |
| | | |
| | | m_pGlassRawInfo->m_nRawMergeMaxDataNum = nDefectNum; |
| | | |
| | | m_pGlassRawInfo->m_nGlassRawDataSize; |
| | | { |
| | | int nDataNum = 0; |
| | |
| | | m_pGlassRawInfo->m_nStackDataPoint = nDataNum; |
| | | nDataNum += (m_pGlassRawInfo->m_nSizeOfStackData + m_pGlassRawInfo->m_nSizeOfStackData % 4)*nDefectNum; |
| | | |
| | | m_pGlassRawInfo->m_nRawMergeDataPoint = nDataNum; |
| | | nDataNum += (m_pGlassRawInfo->m_nSizeOfRawMergeData + m_pGlassRawInfo->m_nSizeOfRawMergeData % 4)*nDefectNum; |
| | | |
| | | m_pGlassRawInfo->m_nGlassRawDataSize = nDataNum; |
| | | } |
| | | |
| | |
| | | m_pGlassRawInfo->m_nSizeOfCellData = sizeof(_grmCellData); |
| | | m_pGlassRawInfo->m_nSizeOfDefectData = sizeof(_grmDefectData); |
| | | m_pGlassRawInfo->m_nSizeOfStackData = sizeof(_grmDefectData); |
| | | m_pGlassRawInfo->m_nSizeOfRawMergeData = sizeof(_grmDefectData); |
| | | |
| | | int bytealign = m_pGlassRawInfo->m_nSizeOfGlassData%4; |
| | | } |
| | |
| | | m_pCellData = (_grmCellData*)&m_pGlassRawData[m_pGlassRawInfo->m_nCellDataPoint]; |
| | | m_pDefectData = (_grmDefectData*)&m_pGlassRawData[m_pGlassRawInfo->m_nDefectDataPoint]; |
| | | m_pStackData = (_grmDefectData*)&m_pGlassRawData[m_pGlassRawInfo->m_nStackDataPoint]; |
| | | m_pRawMergeData = (_grmDefectData*)&m_pGlassRawData[m_pGlassRawInfo->m_nRawMergeDataPoint]; |
| | | |
| | | return TRUE; |
| | | } |
| | |
| | | _grmCellData* GetCellData(int nIndex){return &m_pCellData[nIndex];}; |
| | | _grmDefectData* GetDefectData(int nIndex){return &m_pDefectData[nIndex];}; |
| | | _grmDefectData* GetStackData(int nIndex) { return &m_pStackData[nIndex]; }; |
| | | _grmDefectData* GetRawMergeData(int nIndex) { return &m_pRawMergeData[nIndex]; }; |
| | | |
| | | _grmDitGlassRawInfo* GetGlassRawInfo(){return m_pGlassRawInfo;}; |
| | | |
| | |
| | | _grmCellData* m_pCellData; |
| | | _grmDefectData* m_pDefectData; |
| | | _grmDefectData* m_pStackData; |
| | | |
| | | _grmDefectData* m_pRawMergeData; |
| | | |
| | | protected: |
| | | HANDLE m_hMapBasicInfo; |
| | |
| | | |
| | | #define RAWMESSENGER_MAXCAMNUM 30 |
| | | #define RAWMESSENGER_MAXSCANNUM 20 |
| | | #define RAWMESSENGER_MAXHLINUM 8 |
| | | |
| | | #define MAX_ZONE_NUM 16 |
| | | |
| | |
| | | memset(this, 0, sizeof(_grmGlassData)); |
| | | } |
| | | |
| | | //Glass ���� |
| | | //Glass ì ë³´ |
| | | char m_strFileName[64]; |
| | | char m_strPath[256]; |
| | | |
| | |
| | | |
| | | 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]; |
| | |
| | | CTime m_tmReviewLoading; |
| | | CTime m_tmReviewEnd; |
| | | |
| | | //�⺻ �������� |
| | | //기본 물ë¥ì ë³´ |
| | | char m_strGlassID[32]; //Glass ID |
| | | char m_strPPID[32]; |
| | | char m_strEPPID[32]; |
| | |
| | | char m_strVCRGlassID[32]; |
| | | |
| | | |
| | | //���� ���� ���� ���� |
| | | //ê²°í¨ ê°¯ì ê´ë¦¬ ë³ì |
| | | int m_nDefectNumSizeSmall; |
| | | int m_nDefectNumSizeMid; |
| | | int m_nDefectNumSizeLarge; |
| | |
| | | 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]; |
| | | unsigned char m_nGrayLevelAvg[RAWMESSENGER_MAXCAMNUM*RAWMESSENGER_MAXSCANNUM*RAWMESSENGER_MAXHLINUM]; |
| | | unsigned char m_nGrayLevelMin[RAWMESSENGER_MAXCAMNUM*RAWMESSENGER_MAXSCANNUM*RAWMESSENGER_MAXHLINUM]; |
| | | unsigned char m_nGrayLevelMax[RAWMESSENGER_MAXCAMNUM*RAWMESSENGER_MAXSCANNUM*RAWMESSENGER_MAXHLINUM]; |
| | | |
| | | //����� ���� um[������ 2018/12/10] |
| | | //ì¼ë¼ì¸ ì ë³´ um[ê¹íí 2018/12/10] |
| | | double m_nAlignCcdTheta; |
| | | double m_nAlignCcdShitftX; |
| | | double m_nAlignCcdShitftY; |
| | |
| | | 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 |
| | |
| | | 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]; |
| | |
| | | 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 ��� ���� �� |
| | | int m_nRawMergeNum; |
| | | BOOL m_bRawMergeRead; |
| | | //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; |
| | | |
| | | }; |
| | |
| | | } |
| | | 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; |
| | |
| | | int m_nJudgeGlade; |
| | | |
| | | |
| | | //���� ���� ���� ���� |
| | | //ê²°í¨ ê°¯ì ê´ë¦¬ ë³ì |
| | | int m_nDefectNumSizeSmall; |
| | | int m_nDefectNumSizeMid; |
| | | int m_nDefectNumSizeLarge; |
| | |
| | | char m_strProImage[32]; |
| | | char m_strAvgGray_0[12]; |
| | | char m_strPortion_0[12]; |
| | | //kyh Mura Data �߰� 0622 |
| | | //kyh Mura Data ì¶ê° 0622 |
| | | char m_strCorner_Gray_0[12]; |
| | | char m_strAvgAmp_0[12]; |
| | | char m_strFFTVar_0[12]; |
| | |
| | | |
| | | char m_strAvgGray_1[12]; |
| | | char m_strPortion_1[12]; |
| | | //kyh Mura Data �߰� 0622 |
| | | //kyh Mura Data ì¶ê° 0622 |
| | | char m_strCorner_Gray_1[12]; |
| | | char m_strAvgAmp_1[12]; |
| | | char m_strFFTVar_1[12]; |
| | |
| | | |
| | | char m_strAvgGray_2[12]; |
| | | char m_strPortion_2[12]; |
| | | //kyh Mura Data �߰� 0622 |
| | | //kyh Mura Data ì¶ê° 0622 |
| | | char m_strCorner_Gray_2[12]; |
| | | char m_strAvgAmp_2[12]; |
| | | char m_strFFTVar_2[12]; |
| | |
| | | |
| | | char m_strAvgGray_3[12]; |
| | | char m_strPortion_3[12]; |
| | | //kyh Mura Data �߰� 0622 |
| | | //kyh Mura Data ì¶ê° 0622 |
| | | char m_strCorner_Gray_3[12]; |
| | | char m_strAvgAmp_3[12]; |
| | | char m_strFFTVar_3[12]; |
| | |
| | | |
| | | 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; |
| | | }; |
| | |
| | | } |
| | | |
| | | ////////////////////////////////////////////////////////////////////////// |
| | | //���⼠���� ���� ���� [������ 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; |
| | |
| | | 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]; |
| | |
| | | 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; |
| | |
| | | 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]; |
| | |
| | | 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 ���� �߰� |
| | | BOOL m_bShrinked; //210323 CJH - Frame Shrink ì ë³´ ì¶ê° |
| | | |
| | | char m_strAoiImagePath[255]; |
| | | char m_strReviewImagePath[255]; |
| | |
| | | int m_nAlignRectRight; |
| | | |
| | | |
| | | //���� ���� ���� [������ 2019/1/19] |
| | | _grmDefectReviewData m_ReviewDefect; |
| | | }; |
| | | |
| | |
| | | |
| | | struct _grmDitMemInfo |
| | | { |
| | | //���� �޸� ������ ���� ���� [������ 2018/11/12] |
| | | //ê³µì ë©ëª¨ë¦¬ ìì±í ê³µê° ê²°ì [ê¹íí 2018/11/12] |
| | | size_t m_nGlassRawDataSize; |
| | | int m_nGlassMaxDataNum; |
| | | int m_nBlockMaxDataNum; |
| | | int m_nCellMaxDataNum; |
| | | int m_nDefectMaxDataNum; |
| | | int m_nStackMaxDataNum; |
| | | int m_nRawMergeMaxDataNum; |
| | | |
| | | //Char ���� �ڷᰡ �ִ� ���� ��ġ [������ 2018/11/12] |
| | | //Char ê¸°ì¤ ìë£ê° ìë ìì ìì¹ [ê¹íí 2018/11/12] |
| | | int m_nGlassDataPoint; |
| | | int m_nBlockDataPoint; |
| | | int m_nCellDataPoint; |
| | | int m_nDefectDataPoint; |
| | | int m_nStackDataPoint; |
| | | int m_nRawMergeDataPoint; |
| | | |
| | | int m_nSizeOfGlassData; |
| | | int m_nSizeOfBlockData; |
| | | int m_nSizeOfCellData; |
| | | int m_nSizeOfDefectData; |
| | | int m_nSizeOfStackData; |
| | | int m_nSizeOfRawMergeData; |
| | | }; |
| | | 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 |
| | |
| | | { |
| | | 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; |
| | | |
| | |
| | | [Path] |
| | | Align=D:\ResultData\Align\ |
| | | Bin=D:\DIT_ResultData\RawBin\ |
| | | Inspector=D:\Image\Defect |
| | | Inspector=\\126.100.100.1\d\Image\Defect |
| | | Review=D:\ResultData\UploadImage\ |
| | |
| | | ProcessFlatness(); |
| | | Sleep(1000); |
| | | |
| | | if (ProcessDiagnosisJudge() == FALSE) { |
| | | if (ProcessDiagnosisJudge(nProcessMode) == FALSE) { |
| | | strMessage.Format(_T("[CDiagnosisProcessor] DiagnosisJudge FAIL")); |
| | | m_pDP2P->IDP2P_DisplayMessage(0, strMessage); |
| | | } |
| | |
| | | ProcessWsi(); |
| | | Sleep(1000); |
| | | |
| | | if (ProcessDiagnosisJudge() == FALSE) { |
| | | if (ProcessDiagnosisJudge(nProcessMode) == FALSE) { |
| | | strMessage.Format(_T("[CDiagnosisProcessor] DiagnosisJudge FAIL")); |
| | | m_pDP2P->IDP2P_DisplayMessage(0, strMessage); |
| | | } |
| | |
| | | m_pManager->m_bProcessAll = false; |
| | | ProcessSquareness(); |
| | | Sleep(1000); |
| | | if (ProcessDiagnosisJudge() == FALSE) { |
| | | if (ProcessDiagnosisJudge(nProcessMode) == FALSE) { |
| | | strMessage.Format(_T("[CDiagnosisProcessor] DiagnosisJudge FAIL")); |
| | | m_pDP2P->IDP2P_DisplayMessage(0, strMessage); |
| | | } |
| | |
| | | m_pManager->m_bProcessAll = false; |
| | | ProcessFlatness(); |
| | | Sleep(1000); |
| | | if (ProcessDiagnosisJudge() == FALSE) { |
| | | if (ProcessDiagnosisJudge(nProcessMode) == FALSE) { |
| | | strMessage.Format(_T("[CDiagnosisProcessor] DiagnosisJudge FAIL")); |
| | | m_pDP2P->IDP2P_DisplayMessage(0, strMessage); |
| | | } |
| | |
| | | //Sleep(2000); |
| | | Sleep(1000); |
| | | |
| | | if (ProcessDiagnosisJudge() == FALSE) { |
| | | if (ProcessDiagnosisJudge(DiagnosisMode_All) == FALSE) { |
| | | strMessage.Format(_T("[CDiagnosisProcessor] DiagnosisJudge FAIL")); |
| | | m_pDP2P->IDP2P_DisplayMessage(0, strMessage); |
| | | } |
| | |
| | | { |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _START |
| | | //if (10000 <= GetTickCount() - stTime) |
| | | if (1000 <= GetTickCount() - stTime) |
| | | if (11000 <= GetTickCount() - stTime) |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _END |
| | | { |
| | | break; |
| | |
| | | Sleep(500); |
| | | } |
| | | |
| | | if (nIdx == 0) |
| | | { |
| | | pResultPoint[nIdx].dPosX = 657.425 |
| | | ; |
| | | pResultPoint[nIdx].dPosY = 540.14 |
| | | ; |
| | | } |
| | | else if (nIdx == 1) |
| | | { |
| | | pResultPoint[nIdx].dPosX = 657.425 |
| | | ; |
| | | pResultPoint[nIdx].dPosY = 2278.636 |
| | | ; |
| | | } |
| | | else if (nIdx == 2) |
| | | { |
| | | pResultPoint[nIdx].dPosX = 2096.944 |
| | | ; |
| | | pResultPoint[nIdx].dPosY = 540.141 |
| | | ; |
| | | } |
| | | else if (nIdx == 3) |
| | | { |
| | | pResultPoint[nIdx].dPosX = 2096.944 |
| | | ; |
| | | pResultPoint[nIdx].dPosY = 2278.636; |
| | | } |
| | | // if (nIdx == 0) |
| | | // { |
| | | // pResultPoint[nIdx].dPosX = 657.425 |
| | | // ; |
| | | // pResultPoint[nIdx].dPosY = 540.14 |
| | | // ; |
| | | // } |
| | | // else if (nIdx == 1) |
| | | // { |
| | | // pResultPoint[nIdx].dPosX = 657.425 |
| | | // ; |
| | | // pResultPoint[nIdx].dPosY = 2278.636 |
| | | // ; |
| | | // } |
| | | // else if (nIdx == 2) |
| | | // { |
| | | // pResultPoint[nIdx].dPosX = 2096.944 |
| | | // ; |
| | | // pResultPoint[nIdx].dPosY = 540.141 |
| | | // ; |
| | | // } |
| | | // else if (nIdx == 3) |
| | | // { |
| | | // pResultPoint[nIdx].dPosX = 2096.944 |
| | | // ; |
| | | // pResultPoint[nIdx].dPosY = 2278.636; |
| | | // } |
| | | |
| | | |
| | | //1. 모í°ë¥¼ ì´ë |
| | |
| | | return TRUE; |
| | | } |
| | | |
| | | int CDiagnosisProcessor::ProcessDiagnosisJudge() |
| | | int CDiagnosisProcessor::ProcessDiagnosisJudge(int nMode) |
| | | { |
| | | for (int i = 0; i < 2; i++) |
| | | { |
| | |
| | | } |
| | | |
| | | CString strMessage = _T(""); |
| | | |
| | | double dDate = (90 - pProcessResult->GetGantryDegree()); |
| | | if (abs(dDate) >= abs(pSettingInfo->GetJudgeData_Degree())) // 0412 kyh ì§ê°ëìì ëì¨ Dgree ê°ì´ ì¤ì í Judge ê°ë³´ë¤ í¬ê±°ë ê°ìê²½ì° |
| | | if (nMode == DiagnosisMode_All || nMode == DiagnosisMode_Review || nMode == DiagnosisMode_Squareness) |
| | | { |
| | | double dDate = (90 - pProcessResult->GetGantryDegree()); |
| | | if (abs(dDate) >= abs(pSettingInfo->GetJudgeData_Degree())) // 0412 kyh ì§ê°ëìì ëì¨ Dgree ê°ì´ ì¤ì í Judge ê°ë³´ë¤ í¬ê±°ë ê°ìê²½ì° |
| | | { |
| | | |
| | | m_pDP2P->IDP2P_DiagnosisSendJudgeAlarm(); // ìë ë°ì |
| | | strMessage.Format(_T("[Judge Data] [Gantry %d]Diagnosis Error ! GantryDegree[%lf] Judge[%lf]"), i, dDate, pSettingInfo->GetJudgeData_Degree()); |
| | | m_pDP2P->IDP2P_DisplayMessage(0, strMessage); |
| | | m_pDP2P->IDP2P_DiagnosisSendJudgeAlarm(); // ìë ë°ì |
| | | strMessage.Format(_T("[Judge Data] [Gantry %d]Diagnosis Error ! GantryDegree[%lf] Judge[%lf]"), i, dDate, pSettingInfo->GetJudgeData_Degree()); |
| | | m_pDP2P->IDP2P_DisplayMessage(0, strMessage); |
| | | } |
| | | } |
| | | |
| | | if (pProcessWSIResult->getWSI_RTB() >= pSettingInfo->GetJudgeData_3Sigma() || pProcessWSIResult->getWSI_RTB() <= 0) // 0412 kyh WSI íì¤í¸ì°¨ ë¹êµ |
| | | if (nMode == DiagnosisMode_All || nMode == DiagnosisMode_Wsi) |
| | | { |
| | | m_pDP2P->IDP2P_DiagnosisSendJudgeAlarm(); // ìë ë°ì |
| | | strMessage.Format(_T("[Judge Data] [WSI %d]Diagnosis Error ! WSI RTB[%lf] Judge[%lf]"), i, pProcessWSIResult->getWSI_RTB(), pSettingInfo->GetJudgeData_3Sigma()); |
| | | m_pDP2P->IDP2P_DisplayMessage(0, strMessage); |
| | | if (pProcessWSIResult->getWSI_RTB() >= pSettingInfo->GetJudgeData_3Sigma() || pProcessWSIResult->getWSI_RTB() <= 0) // 0412 kyh WSI íì¤í¸ì°¨ ë¹êµ |
| | | { |
| | | m_pDP2P->IDP2P_DiagnosisSendJudgeAlarm(); // ìë ë°ì |
| | | strMessage.Format(_T("[Judge Data] [WSI %d]Diagnosis Error ! WSI RTB[%lf] Judge[%lf]"), i, pProcessWSIResult->getWSI_RTB(), pSettingInfo->GetJudgeData_3Sigma()); |
| | | m_pDP2P->IDP2P_DisplayMessage(0, strMessage); |
| | | } |
| | | } |
| | | |
| | | } |
| | | //#3407 KYH ìê°ì§ë¨ Judge íì ë° ìë ë°ì ê¸°ë¥ ADD END |
| | | |
| | |
| | | m_pCellData = (_grmCellData*)&m_pGlassRawData[m_pGlassRawInfo->m_nCellDataPoint]; |
| | | m_pDefectData = (_grmDefectData*)&m_pGlassRawData[m_pGlassRawInfo->m_nDefectDataPoint]; |
| | | m_pStackData = (_grmDefectData*)&m_pGlassRawData[m_pGlassRawInfo->m_nStackDataPoint]; |
| | | m_pRawMergeData = (_grmDefectData*)&m_pGlassRawData[m_pGlassRawInfo->m_nRawMergeDataPoint]; |
| | | |
| | | return TRUE; |
| | | } |
| | |
| | | |
| | | 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; |
| | |
| | | if(isConnect() == FALSE) return FALSE; |
| | | m_pGlassRawInfo->m_ClientProcStep = APS_GlassLoading; |
| | | m_pGlassData->m_bStackRead = FALSE; |
| | | m_pGlassData->m_bRawMergeRead = FALSE; |
| | | return SetCommand(grcSequenceGlassLoading); |
| | | } |
| | | |
| | |
| | | _grmCellData* m_pCellData; |
| | | _grmDefectData* m_pDefectData; |
| | | _grmDefectData* m_pStackData; |
| | | _grmDefectData* m_pRawMergeData; |
| | | |
| | | protected: |
| | | HANDLE m_hMapBasicInfo; |
| | |
| | | |
| | | #define RAWMESSENGER_MAXCAMNUM 30 |
| | | #define RAWMESSENGER_MAXSCANNUM 20 |
| | | #define RAWMESSENGER_MAXHLINUM 8 |
| | | |
| | | #define MAX_ZONE_NUM 16 |
| | | |
| | |
| | | memset(this, 0, sizeof(_grmGlassData)); |
| | | } |
| | | |
| | | //Glass ���� |
| | | //Glass ì ë³´ |
| | | char m_strFileName[64]; |
| | | char m_strPath[256]; |
| | | |
| | |
| | | |
| | | 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]; |
| | |
| | | CTime m_tmReviewLoading; |
| | | CTime m_tmReviewEnd; |
| | | |
| | | //�⺻ �������� |
| | | //기본 물ë¥ì ë³´ |
| | | char m_strGlassID[32]; //Glass ID |
| | | char m_strPPID[32]; |
| | | char m_strEPPID[32]; |
| | |
| | | char m_strVCRGlassID[32]; |
| | | |
| | | |
| | | //���� ���� ���� ���� |
| | | //ê²°í¨ ê°¯ì ê´ë¦¬ ë³ì |
| | | int m_nDefectNumSizeSmall; |
| | | int m_nDefectNumSizeMid; |
| | | int m_nDefectNumSizeLarge; |
| | |
| | | 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]; |
| | | unsigned char m_nGrayLevelAvg[RAWMESSENGER_MAXCAMNUM*RAWMESSENGER_MAXSCANNUM*RAWMESSENGER_MAXHLINUM]; |
| | | unsigned char m_nGrayLevelMin[RAWMESSENGER_MAXCAMNUM*RAWMESSENGER_MAXSCANNUM*RAWMESSENGER_MAXHLINUM]; |
| | | unsigned char m_nGrayLevelMax[RAWMESSENGER_MAXCAMNUM*RAWMESSENGER_MAXSCANNUM*RAWMESSENGER_MAXHLINUM]; |
| | | |
| | | //����� ���� um[������ 2018/12/10] |
| | | //ì¼ë¼ì¸ ì ë³´ um[ê¹íí 2018/12/10] |
| | | double m_nAlignCcdTheta; |
| | | double m_nAlignCcdShitftX; |
| | | double m_nAlignCcdShitftY; |
| | |
| | | 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 |
| | |
| | | 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]; |
| | |
| | | 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 ��� ���� �� |
| | | int m_nRawMergeNum; |
| | | BOOL m_bRawMergeRead; |
| | | //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; |
| | | |
| | | }; |
| | |
| | | } |
| | | 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; |
| | |
| | | int m_nJudgeGlade; |
| | | |
| | | |
| | | //���� ���� ���� ���� |
| | | //ê²°í¨ ê°¯ì ê´ë¦¬ ë³ì |
| | | int m_nDefectNumSizeSmall; |
| | | int m_nDefectNumSizeMid; |
| | | int m_nDefectNumSizeLarge; |
| | |
| | | char m_strProImage[32]; |
| | | char m_strAvgGray_0[12]; |
| | | char m_strPortion_0[12]; |
| | | //kyh Mura Data �߰� 0622 |
| | | //kyh Mura Data ì¶ê° 0622 |
| | | char m_strCorner_Gray_0[12]; |
| | | char m_strAvgAmp_0[12]; |
| | | char m_strFFTVar_0[12]; |
| | |
| | | |
| | | char m_strAvgGray_1[12]; |
| | | char m_strPortion_1[12]; |
| | | //kyh Mura Data �߰� 0622 |
| | | //kyh Mura Data ì¶ê° 0622 |
| | | char m_strCorner_Gray_1[12]; |
| | | char m_strAvgAmp_1[12]; |
| | | char m_strFFTVar_1[12]; |
| | |
| | | |
| | | char m_strAvgGray_2[12]; |
| | | char m_strPortion_2[12]; |
| | | //kyh Mura Data �߰� 0622 |
| | | //kyh Mura Data ì¶ê° 0622 |
| | | char m_strCorner_Gray_2[12]; |
| | | char m_strAvgAmp_2[12]; |
| | | char m_strFFTVar_2[12]; |
| | |
| | | |
| | | char m_strAvgGray_3[12]; |
| | | char m_strPortion_3[12]; |
| | | //kyh Mura Data �߰� 0622 |
| | | //kyh Mura Data ì¶ê° 0622 |
| | | char m_strCorner_Gray_3[12]; |
| | | char m_strAvgAmp_3[12]; |
| | | char m_strFFTVar_3[12]; |
| | |
| | | |
| | | 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; |
| | | }; |
| | |
| | | } |
| | | |
| | | ////////////////////////////////////////////////////////////////////////// |
| | | //���⼠���� ���� ���� [������ 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; |
| | |
| | | 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]; |
| | |
| | | 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; |
| | |
| | | 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]; |
| | |
| | | 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 ���� �߰� |
| | | BOOL m_bShrinked; //210323 CJH - Frame Shrink ì ë³´ ì¶ê° |
| | | |
| | | char m_strAoiImagePath[255]; |
| | | char m_strReviewImagePath[255]; |
| | |
| | | int m_nAlignRectRight; |
| | | |
| | | |
| | | //���� ���� ���� [������ 2019/1/19] |
| | | _grmDefectReviewData m_ReviewDefect; |
| | | }; |
| | | |
| | |
| | | |
| | | struct _grmDitMemInfo |
| | | { |
| | | //���� �޸� ������ ���� ���� [������ 2018/11/12] |
| | | //ê³µì ë©ëª¨ë¦¬ ìì±í ê³µê° ê²°ì [ê¹íí 2018/11/12] |
| | | size_t m_nGlassRawDataSize; |
| | | int m_nGlassMaxDataNum; |
| | | int m_nBlockMaxDataNum; |
| | | int m_nCellMaxDataNum; |
| | | int m_nDefectMaxDataNum; |
| | | int m_nStackMaxDataNum; |
| | | int m_nRawMergeMaxDataNum; |
| | | |
| | | //Char ���� �ڷᰡ �ִ� ���� ��ġ [������ 2018/11/12] |
| | | //Char ê¸°ì¤ ìë£ê° ìë ìì ìì¹ [ê¹íí 2018/11/12] |
| | | int m_nGlassDataPoint; |
| | | int m_nBlockDataPoint; |
| | | int m_nCellDataPoint; |
| | | int m_nDefectDataPoint; |
| | | int m_nStackDataPoint; |
| | | int m_nRawMergeDataPoint; |
| | | |
| | | int m_nSizeOfGlassData; |
| | | int m_nSizeOfBlockData; |
| | | int m_nSizeOfCellData; |
| | | int m_nSizeOfDefectData; |
| | | int m_nSizeOfStackData; |
| | | int m_nSizeOfRawMergeData; |
| | | }; |
| | | 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 |
| | |
| | | { |
| | | 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; |
| | | |
| | |
| | | m_pDlgWsi->DisableBtSIMULATION(FALSE); |
| | | break; |
| | | case 7: |
| | | m_pDlgWsi->UpdateWSIResult(0, 0, 0, 0, 0); |
| | | m_pDlgWsi->UpdateWSIResult(1, 0, 0, 0, 0); |
| | | //m_pDlgWsi->UpdateWSIResult(0, 0, 0, 0, 0); |
| | | //m_pDlgWsi->UpdateWSIResult(1, 0, 0, 0, 0); |
| | | |
| | | default: |
| | | break; |
| | |
| | | DDX_Control(pDX, IDC_EDIT_WSI_RTB_01, m_ctrlWsiRtb01); |
| | | DDX_Control(pDX, IDC_BUTTON_SIMULATION, m_btSimulation); |
| | | DDX_Text(pDX, IDC_EDIT_WSI_FIRST_STANDARD, m_editWSIFirstStandard); |
| | | DDX_Control(pDX, IDC_EDIT_WSI_HEIGHT1, m_editWSIHeight1); |
| | | DDX_Control(pDX, IDC_EDIT_WSI_HEIGHT2, m_editWSIHeight2); |
| | | DDX_Control(pDX, IDC_EDIT_WSI_HEIGHT3, m_editWSIHeight3); |
| | | DDX_Control(pDX, IDC_EDIT_WSI_HEIGHT4, m_editWSIHeight4); |
| | | DDX_Control(pDX, IDC_EDIT_WSI_HEIGHT5, m_editWSIHeight5); |
| | | DDX_Control(pDX, IDC_EDIT_WSI_HEIGHT6, m_editWSIHeight6); |
| | | DDX_Control(pDX, IDC_EDIT_WSI_HEIGHT7, m_editWSIHeight7); |
| | | DDX_Control(pDX, IDC_EDIT_WSI_HEIGHT8, m_editWSIHeight8); |
| | | DDX_Control(pDX, IDC_EDIT_WSI_HEIGHT9, m_editWSIHeight9); |
| | | DDX_Control(pDX, IDC_EDIT_WSI_HEIGHT10, m_editWSIHeight10); |
| | | DDX_Control(pDX, IDC_EDIT_WSI_HEIGHT11, m_editWSIHeight11); |
| | | DDX_Control(pDX, IDC_EDIT_WSI_HEIGHT12, m_editWSIHeight12); |
| | | DDX_Control(pDX, IDC_EDIT_WSI_HEIGHT13, m_editWSIHeight13); |
| | | DDX_Control(pDX, IDC_EDIT_WSI_HEIGHT14, m_editWSIHeight14); |
| | | DDX_Control(pDX, IDC_EDIT_WSI_HEIGHT15, m_editWSIHeight15); |
| | | DDX_Control(pDX, IDC_EDIT_WSI_HEIGHT16, m_editWSIHeight16); |
| | | DDX_Control(pDX, IDC_EDIT_WSI_HEIGHT17, m_editWSIHeight17); |
| | | DDX_Control(pDX, IDC_EDIT_WSI_HEIGHT18, m_editWSIHeight18); |
| | | DDX_Control(pDX, IDC_EDIT_WSI_HEIGHT19, m_editWSIHeight19); |
| | | DDX_Control(pDX, IDC_EDIT_WSI_HEIGHT20, m_editWSIHeight20); |
| | | DDX_Control(pDX, IDC_LIST_WSI_DIAGNOSIS_RESULT, m_ListWSIResult); |
| | | } |
| | | |
| | | BOOL CDlgSelfDiagnosis_Wsi::OnInitDialog() |
| | | { |
| | | CDialogEx::OnInitDialog(); |
| | | |
| | | m_ListWSIResult.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES); |
| | | m_ListWSIResult.InsertColumn(0, _T("Index"), LVCFMT_CENTER, 70); |
| | | m_ListWSIResult.InsertColumn(1, _T("Left Module"), LVCFMT_CENTER, 100); |
| | | m_ListWSIResult.InsertColumn(2, _T("Right Module"), LVCFMT_CENTER, 100); |
| | | |
| | | m_ListWSIResult.SetRedraw(TRUE); |
| | | |
| | | // TODO: ì¬ê¸°ì ì¶ê° ì´ê¸°í ìì
ì ì¶ê°í©ëë¤. |
| | | |
| | | return TRUE; // return TRUE unless you set the focus to a control |
| | | // ìì¸: OCX ìì± íì´ì§ë FALSE를 ë°íí´ì¼ í©ëë¤. |
| | | } |
| | | |
| | | |
| | |
| | | |
| | | void CDlgSelfDiagnosis_Wsi::OnBnClickedButtonSimulation() |
| | | { |
| | | |
| | | if (m_pDiagnosisManager == NULL) return; |
| | | |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _START |
| | |
| | | m_ctrlWsiRtb00.SetWindowTextA(strRTB00); |
| | | m_ctrlWsiRtb01.SetWindowTextA(strRTB01); |
| | | |
| | | strDiagnosisHeight.Format(_T("%d"), dDiagnosisHeight[0]); |
| | | m_editWSIHeight1.SetWindowTextA(strDiagnosisHeight); |
| | | for (int i = 0; i < 10; i++) |
| | | { |
| | | int nRow = i + 1; |
| | | |
| | | strDiagnosisHeight.Format(_T("%d"), dDiagnosisHeight[1]); |
| | | m_editWSIHeight2.SetWindowTextA(strDiagnosisHeight); |
| | | strDiagnosisHeight.Format(_T("%d"), nRow); |
| | | m_ListWSIResult.InsertItem(nRow, strDiagnosisHeight); |
| | | |
| | | strDiagnosisHeight.Format(_T("%d"), dDiagnosisHeight[2]); |
| | | m_editWSIHeight3.SetWindowTextA(strDiagnosisHeight); |
| | | strDiagnosisHeight.Format(_T("%d"), dDiagnosisHeight[i]); |
| | | m_ListWSIResult.SetItemText(nRow, 1, strDiagnosisHeight); |
| | | |
| | | strDiagnosisHeight.Format(_T("%d"), dDiagnosisHeight[3]); |
| | | m_editWSIHeight4.SetWindowTextA(strDiagnosisHeight); |
| | | strDiagnosisHeight.Format(_T("%d"), dDiagnosisHeight[i+10]); |
| | | m_ListWSIResult.SetItemText(nRow, 2, strDiagnosisHeight); |
| | | |
| | | strDiagnosisHeight.Format(_T("%d"), dDiagnosisHeight[4]); |
| | | m_editWSIHeight5.SetWindowTextA(strDiagnosisHeight); |
| | | |
| | | strDiagnosisHeight.Format(_T("%d"), dDiagnosisHeight[5]); |
| | | m_editWSIHeight6.SetWindowTextA(strDiagnosisHeight); |
| | | |
| | | strDiagnosisHeight.Format(_T("%d"), dDiagnosisHeight[6]); |
| | | m_editWSIHeight7.SetWindowTextA(strDiagnosisHeight); |
| | | |
| | | strDiagnosisHeight.Format(_T("%d"), dDiagnosisHeight[7]); |
| | | m_editWSIHeight8.SetWindowTextA(strDiagnosisHeight); |
| | | |
| | | strDiagnosisHeight.Format(_T("%d"), dDiagnosisHeight[8]); |
| | | m_editWSIHeight9.SetWindowTextA(strDiagnosisHeight); |
| | | |
| | | strDiagnosisHeight.Format(_T("%d"), dDiagnosisHeight[9]); |
| | | m_editWSIHeight10.SetWindowTextA(strDiagnosisHeight); |
| | | |
| | | strDiagnosisHeight.Format(_T("%d"), dDiagnosisHeight[10]); |
| | | m_editWSIHeight11.SetWindowTextA(strDiagnosisHeight); |
| | | |
| | | strDiagnosisHeight.Format(_T("%d"), dDiagnosisHeight[11]); |
| | | m_editWSIHeight12.SetWindowTextA(strDiagnosisHeight); |
| | | |
| | | strDiagnosisHeight.Format(_T("%d"), dDiagnosisHeight[12]); |
| | | m_editWSIHeight13.SetWindowTextA(strDiagnosisHeight); |
| | | |
| | | strDiagnosisHeight.Format(_T("%d"), dDiagnosisHeight[13]); |
| | | m_editWSIHeight14.SetWindowTextA(strDiagnosisHeight); |
| | | |
| | | strDiagnosisHeight.Format(_T("%d"), dDiagnosisHeight[14]); |
| | | m_editWSIHeight15.SetWindowTextA(strDiagnosisHeight); |
| | | |
| | | strDiagnosisHeight.Format(_T("%d"), dDiagnosisHeight[15]); |
| | | m_editWSIHeight16.SetWindowTextA(strDiagnosisHeight); |
| | | |
| | | strDiagnosisHeight.Format(_T("%d"), dDiagnosisHeight[16]); |
| | | m_editWSIHeight17.SetWindowTextA(strDiagnosisHeight); |
| | | |
| | | strDiagnosisHeight.Format(_T("%d"), dDiagnosisHeight[17]); |
| | | m_editWSIHeight18.SetWindowTextA(strDiagnosisHeight); |
| | | |
| | | strDiagnosisHeight.Format(_T("%d"), dDiagnosisHeight[18]); |
| | | m_editWSIHeight19.SetWindowTextA(strDiagnosisHeight); |
| | | |
| | | strDiagnosisHeight.Format(_T("%d"), dDiagnosisHeight[19]); |
| | | m_editWSIHeight20.SetWindowTextA(strDiagnosisHeight); |
| | | m_ListWSIResult.EnsureVisible(nRow, FALSE); |
| | | } |
| | | |
| | | } |
| | | |
| | |
| | | double nRTB00 = dRbt00; |
| | | double nRTB01 = dRbt01; |
| | | |
| | | CString strDiagnosisHeight; |
| | | CString strACC00, strACC01; |
| | | CString strRTB00, strRTB01; |
| | | strACC00.Format(_T("%f"),nACC00); |
| | |
| | | m_ctrlWsiRtb01.SetWindowTextA(strRTB01); |
| | | } |
| | | |
| | | double dDiagnosisHeightleft[10]; |
| | | double dDiagnosisHeightRight[10]; |
| | | |
| | | for (int i = 0; i < 10; i++) |
| | | { |
| | | dDiagnosisHeightleft[i] = m_pDiagnosisManager->GetDiagnosisResult_Wsi(0)->GetDiagnosisHeight(i); |
| | | } |
| | | |
| | | for (int i = 0; i < 10; i++) |
| | | { |
| | | dDiagnosisHeightRight[i] = m_pDiagnosisManager->GetDiagnosisResult_Wsi(1)->GetDiagnosisHeight(i); |
| | | } |
| | | |
| | | m_ListWSIResult.DeleteAllItems(); |
| | | |
| | | for (int i = 0; i < 10; i++) |
| | | { |
| | | int nRow = i; |
| | | |
| | | strDiagnosisHeight.Format(_T("%d"), nRow + 1); |
| | | m_ListWSIResult.InsertItem(nRow, strDiagnosisHeight); |
| | | |
| | | strDiagnosisHeight.Format(_T("%.3f"), dDiagnosisHeightleft[i]); |
| | | m_ListWSIResult.SetItemText(nRow, 1, strDiagnosisHeight); |
| | | |
| | | strDiagnosisHeight.Format(_T("%.3f"), dDiagnosisHeightRight[i]); |
| | | m_ListWSIResult.SetItemText(nRow, 2, strDiagnosisHeight); |
| | | |
| | | m_ListWSIResult.EnsureVisible(nRow, FALSE); |
| | | } |
| | | |
| | | } |
| | | |
| | |
| | | |
| | | // TODO: ì¬ê¸°ì 컨í¸ë¡¤ ì림 ì²ë¦¬ê¸° ì½ë를 ì¶ê°í©ëë¤. |
| | | } |
| | | |
| | |
| | | |
| | | protected: |
| | | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ì§ìì
ëë¤. |
| | | virtual BOOL OnInitDialog(); |
| | | |
| | | CListCtrl m_ListWSIResult; |
| | | |
| | | DECLARE_MESSAGE_MAP() |
| | | public: |
| | |
| | | CEdit m_ctrlWsiRtb01; |
| | | CButton m_btSimulation; |
| | | double m_editWSIFirstStandard; |
| | | CEdit m_editWSIHeight1; |
| | | CEdit m_editWSIHeight2; |
| | | CEdit m_editWSIHeight3; |
| | | CEdit m_editWSIHeight4; |
| | | CEdit m_editWSIHeight5; |
| | | CEdit m_editWSIHeight6; |
| | | CEdit m_editWSIHeight7; |
| | | CEdit m_editWSIHeight8; |
| | | CEdit m_editWSIHeight9; |
| | | CEdit m_editWSIHeight10; |
| | | CEdit m_editWSIHeight11; |
| | | CEdit m_editWSIHeight12; |
| | | CEdit m_editWSIHeight13; |
| | | CEdit m_editWSIHeight14; |
| | | CEdit m_editWSIHeight15; |
| | | CEdit m_editWSIHeight16; |
| | | CEdit m_editWSIHeight17; |
| | | CEdit m_editWSIHeight18; |
| | | CEdit m_editWSIHeight19; |
| | | CEdit m_editWSIHeight20; |
| | | |
| | | }; |
| | |
| | | m_bIsOffSetOn = 0; |
| | | m_bIsSimulation = 0; |
| | | |
| | | m_bFirstReviewLeft = 0; |
| | | m_bFirstReviewRight = 0; |
| | | |
| | | // cs init |
| | | InitializeCriticalSection(&m_csReviewResult); |
| | | InitializeCriticalSection(&m_csReviewSignal); |
| | |
| | | return m_pEdgeRecipeManager; |
| | | } |
| | | |
| | | BOOL CReviewInterface::IRP2P_GetFirstReviewLeft() |
| | | { |
| | | return m_bFirstReviewLeft; |
| | | } |
| | | |
| | | BOOL CReviewInterface::IRP2P_GetFirstReviewRight() |
| | | { |
| | | return m_bFirstReviewRight; |
| | | } |
| | | |
| | | void CReviewInterface::IRP2P_SetFirstReviewLeft(BOOL b_Check) |
| | | { |
| | | m_bFirstReviewLeft = b_Check; |
| | | } |
| | | |
| | | void CReviewInterface::IRP2P_SetFirstReviewRight(BOOL b_Check) |
| | | { |
| | | m_bFirstReviewRight = b_Check; |
| | | } |
| | | |
| | | |
| | | int CReviewInterface::PS2P_GetModuleStatusCount(int nModuleType) |
| | | { |
| | |
| | | if (m_SequenceProcessor == NULL) return; |
| | | m_SequenceProcessor->SetWsiType(9); |
| | | |
| | | if (!m_SequenceProcessor->WSIAllReadySignal(1)) |
| | | if (nModuleIdx == 0) |
| | | { |
| | | g_pLog->DisplayMessage(_T("[WSI] Send Ready Signal to All WIS Fail")); |
| | | if (!m_SequenceProcessor->WSIAllReadySignal(1)) |
| | | { |
| | | g_pLog->DisplayMessage(_T("[WSI] Send Ready Signal to All WIS Fail")); |
| | | return; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | |
| | | SetCurrentWsiMode(WsiMeasureType_VLSI); |
| | | |
| | | CWsiControl* pWsiControl = ISP2P_GetWSIControl(nModuleIdx); |
| | |
| | | |
| | | pWsiControl->SetWsiStart(1, vectorPosX, vectorPosY, 0); |
| | | |
| | | } |
| | | } |
| | | |
| | | void CReviewInterface::IDP2P_WsiMotorMotionEnd(int nModuleIdx, double dPosX, double dPosY) |
| | |
| | | return m_pDlgHistoryTool; |
| | | } |
| | | |
| | | BOOL CReviewInterface::ISP2P_GetFirstReviewLeft() |
| | | { |
| | | return m_bFirstReviewLeft; |
| | | } |
| | | |
| | | BOOL CReviewInterface::ISP2P_GetFirstReviewRight() |
| | | { |
| | | return m_bFirstReviewRight; |
| | | } |
| | | |
| | | void CReviewInterface::ISP2P_SetFirstReviewLeft(BOOL b_Check) |
| | | { |
| | | m_bFirstReviewLeft = b_Check; |
| | | } |
| | | |
| | | void CReviewInterface::ISP2P_SetFirstReviewRight(BOOL b_Check) |
| | | { |
| | | m_bFirstReviewRight = b_Check; |
| | | } |
| | | |
| | | void CReviewInterface::ILCC2P_DisplayMessage( int nIndex, const TCHAR* lpstrFormat, ... ) |
| | | { |
| | | |
| | |
| | | virtual void IRP2P_CompletePlanIndex(int nReviewStatus, int nPlanIndex); |
| | | virtual void IRP2P_UpdateReviewProcessStatus(int nReviewStatus, int nPlanIndex=0); |
| | | virtual CRecipeManager* IRP2P_GetEdgeRecipeManager(); |
| | | virtual BOOL IRP2P_GetFirstReviewLeft(); |
| | | virtual BOOL IRP2P_GetFirstReviewRight(); |
| | | virtual void IRP2P_SetFirstReviewLeft(BOOL b_Check); |
| | | virtual void IRP2P_SetFirstReviewRight(BOOL b_Check); |
| | | |
| | | BOOL m_bFirstReviewLeft; |
| | | BOOL m_bFirstReviewRight; |
| | | |
| | | virtual BOOL IRP2P_SaveDefectMap(const CString& strPath); |
| | | |
| | |
| | | virtual CDlgSelfDiagnosis* ISP2P_GetDlgDiagnosis(); |
| | | |
| | | virtual CDlgReviewHistoryTool* ISP2P_GetDlgHistory(); |
| | | |
| | | virtual BOOL ISP2P_GetFirstReviewLeft(); |
| | | virtual BOOL ISP2P_GetFirstReviewRight(); |
| | | virtual void ISP2P_SetFirstReviewLeft(BOOL b_Check); |
| | | virtual void ISP2P_SetFirstReviewRight(BOOL b_Check); |
| | | |
| | | public: |
| | | |
| | | virtual BOOL ISP2P_Motor_CameraGo(int nModuleIndex, double dPosX, double dPosY, int nMoveAxis, BOOL bAutoSelectCamera=FALSE, BOOL bGoEnd=FALSE); |
| | |
| | | |
| | | virtual void IRP2P_UpdateWSISelfDiagnosisResult(); |
| | | |
| | | virtual BOOL IRP2P_GetFirstReviewLeft() = 0; |
| | | virtual BOOL IRP2P_GetFirstReviewRight() = 0; |
| | | |
| | | virtual void IRP2P_SetFirstReviewLeft(BOOL b_Check) = 0; |
| | | virtual void IRP2P_SetFirstReviewRight(BOOL b_Check) = 0; |
| | | |
| | | }; |
| | | |
| | | typedef std::vector<CPoint> VectorPoint; |
| | |
| | | } |
| | | } |
| | | |
| | | if (pReviewResult->nModuleIdx == 0) |
| | | if (pReviewResult->nModuleIdx == 0 && m_pRP2P->IRP2P_GetFirstReviewLeft()) |
| | | { |
| | | m_pRP2P->IRP2P_GetCurrentGlassResult()->nReview00ImageContrast = dFocusValue; |
| | | /* double dAverageGray = 0.0; |
| | | if (CCHImageProcess::ImageAverage(pImageData, dAverageGray) == 1) |
| | | { |
| | | m_pRP2P->IRP2P_GetCurrentGlassResult()->nReview00ImageContrast = dAverageGray; |
| | | }*/ |
| | | } |
| | | else |
| | | m_pRP2P->IRP2P_SetFirstReviewLeft(FALSE); |
| | | m_pRP2P->IRP2P_DisplayMessage(_T("FirstReviewLeft FDC FocusValue = %.2f "), dFocusValue); |
| | | } |
| | | else if(pReviewResult->nModuleIdx == 1 && m_pRP2P->IRP2P_GetFirstReviewRight()) |
| | | { |
| | | m_pRP2P->IRP2P_GetCurrentGlassResult()->nReview01ImageContrast = dFocusValue; |
| | | |
| | | m_pRP2P->IRP2P_SetFirstReviewRight(FALSE); |
| | | m_pRP2P->IRP2P_DisplayMessage(_T("FirstReviewRight FDC FocusValue = %.2f "), dFocusValue); |
| | | } |
| | | } |
| | | } |
| | |
| | | dFocusValue = CalcFocusValue(imageConvert.GetImageBuffer(), imageConvert.GetWidth(), imageConvert.GetHeight()); |
| | | } |
| | | |
| | | if (pReviewResult->nModuleIdx == 0) |
| | | if (pReviewResult->nModuleIdx == 0 && m_pRP2P->IRP2P_GetFirstReviewLeft()) |
| | | { |
| | | m_pRP2P->IRP2P_GetCurrentGlassResult()->nReview00ImageContrast = dFocusValue; |
| | | m_pRP2P->IRP2P_SetFirstReviewLeft(FALSE); |
| | | } |
| | | else |
| | | else if (pReviewResult->nModuleIdx == 1 && m_pRP2P->IRP2P_GetFirstReviewRight()) |
| | | { |
| | | m_pRP2P->IRP2P_GetCurrentGlassResult()->nReview01ImageContrast = dFocusValue; |
| | | m_pRP2P->IRP2P_SetFirstReviewRight(FALSE); |
| | | |
| | | } |
| | | } |
| | | |
| | |
| | | if (imageConvert.GetImageExist()) |
| | | { |
| | | dFocusValue = CalcFocusValue(imageConvert.GetImageBuffer(), imageConvert.GetWidth(), imageConvert.GetHeight()); |
| | | |
| | | if (pReviewResult->nModuleIdx == 0 && m_pRP2P->IRP2P_GetFirstReviewLeft()) |
| | | { |
| | | m_pRP2P->IRP2P_GetCurrentGlassResult()->nReview00ImageContrast = dFocusValue; |
| | | m_pRP2P->IRP2P_SetFirstReviewLeft(FALSE); |
| | | m_pRP2P->IRP2P_DisplayMessage(_T("FirstReviewLeft FDC FocusValue = %.2f "), dFocusValue); |
| | | } |
| | | else if (pReviewResult->nModuleIdx == 1 && m_pRP2P->IRP2P_GetFirstReviewRight()) |
| | | { |
| | | m_pRP2P->IRP2P_GetCurrentGlassResult()->nReview01ImageContrast = dFocusValue; |
| | | m_pRP2P->IRP2P_SetFirstReviewRight(FALSE); |
| | | m_pRP2P->IRP2P_DisplayMessage(_T("FirstReviewRight FDC FocusValue = %.2f "), dFocusValue); |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | // count defocus |
| | | CGlassResult* pGlassResult = m_pRP2P->IRP2P_GetCurrentGlassResult(); |
| | | if (pGlassResult) |
| | |
| | | EDITTEXT IDC_EDIT_WSI_RTB_01,123,94,40,14,ES_AUTOHSCROLL |
| | | LTEXT "WSI Standard (um)",IDC_STATIC,32,113,65,10 |
| | | EDITTEXT IDC_EDIT_WSI_FIRST_STANDARD,97,112,40,15,ES_AUTOHSCROLL |
| | | LTEXT "um",IDC_STATIC,267,33,19,12 |
| | | LTEXT "WSI Height 1",IDC_STATIC,179,34,43,8 |
| | | LTEXT "WSI Height 2",IDC_STATIC,179,48,43,8 |
| | | LTEXT "WSI Height 3",IDC_STATIC,179,62,43,8 |
| | | LTEXT "WSI Height 4",IDC_STATIC,179,76,43,8 |
| | | LTEXT "WSI Height 5",IDC_STATIC,179,90,43,8 |
| | | LTEXT "WSI Height 6",IDC_STATIC,179,104,43,8 |
| | | LTEXT "WSI Height 7",IDC_STATIC,179,117,43,8 |
| | | LTEXT "WSI Height 8",IDC_STATIC,179,132,43,8 |
| | | LTEXT "WSI Height 9",IDC_STATIC,179,145,43,8 |
| | | LTEXT "WSI Height 10",IDC_STATIC,179,158,47,8 |
| | | EDITTEXT IDC_EDIT_WSI_HEIGHT1,227,33,39,12,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_WSI_HEIGHT2,227,47,39,12,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_WSI_HEIGHT3,227,61,39,12,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_WSI_HEIGHT4,226,75,39,12,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_WSI_HEIGHT5,226,89,39,12,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_WSI_HEIGHT6,226,103,39,12,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_WSI_HEIGHT7,226,117,39,12,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_WSI_HEIGHT8,226,131,39,12,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_WSI_HEIGHT9,226,145,39,12,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_WSI_HEIGHT10,226,158,39,12,ES_AUTOHSCROLL |
| | | LTEXT "um",IDC_STATIC,148,121,19,12 |
| | | LTEXT "um",IDC_STATIC,267,47,19,12 |
| | | LTEXT "um",IDC_STATIC,267,61,19,12 |
| | | LTEXT "um",IDC_STATIC,267,75,19,12 |
| | | LTEXT "um",IDC_STATIC,267,89,19,12 |
| | | LTEXT "um",IDC_STATIC,267,103,19,12 |
| | | LTEXT "um",IDC_STATIC,267,117,19,12 |
| | | LTEXT "um",IDC_STATIC,267,131,19,12 |
| | | LTEXT "um",IDC_STATIC,267,145,19,12 |
| | | LTEXT "um",IDC_STATIC,267,159,19,12 |
| | | LTEXT "um",IDC_STATIC,387,33,19,12 |
| | | LTEXT "WSI Height 1",IDC_STATIC,299,34,43,8 |
| | | LTEXT "WSI Height 2",IDC_STATIC,299,48,43,8 |
| | | LTEXT "WSI Height 3",IDC_STATIC,299,62,43,8 |
| | | LTEXT "WSI Height 4",IDC_STATIC,299,76,43,8 |
| | | LTEXT "WSI Height 5",IDC_STATIC,299,90,43,8 |
| | | LTEXT "WSI Height 6",IDC_STATIC,299,104,43,8 |
| | | LTEXT "WSI Height 7",IDC_STATIC,299,117,43,8 |
| | | LTEXT "WSI Height 8",IDC_STATIC,299,132,43,8 |
| | | LTEXT "WSI Height 9",IDC_STATIC,299,145,43,8 |
| | | LTEXT "WSI Height 10",IDC_STATIC,299,158,47,8 |
| | | EDITTEXT IDC_EDIT_WSI_HEIGHT11,347,33,39,12,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_WSI_HEIGHT12,347,47,39,12,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_WSI_HEIGHT13,347,61,39,12,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_WSI_HEIGHT14,346,75,39,12,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_WSI_HEIGHT15,346,89,39,12,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_WSI_HEIGHT16,346,103,39,12,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_WSI_HEIGHT17,346,117,39,12,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_WSI_HEIGHT18,346,131,39,12,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_WSI_HEIGHT19,346,145,39,12,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_WSI_HEIGHT20,346,158,39,12,ES_AUTOHSCROLL |
| | | LTEXT "um",IDC_STATIC,387,47,19,12 |
| | | LTEXT "um",IDC_STATIC,387,61,19,12 |
| | | LTEXT "um",IDC_STATIC,387,75,19,12 |
| | | LTEXT "um",IDC_STATIC,387,89,19,12 |
| | | LTEXT "um",IDC_STATIC,387,103,19,12 |
| | | LTEXT "um",IDC_STATIC,387,117,19,12 |
| | | LTEXT "um",IDC_STATIC,387,131,19,12 |
| | | LTEXT "um",IDC_STATIC,387,145,19,12 |
| | | LTEXT "um",IDC_STATIC,387,159,19,12 |
| | | GROUPBOX "Left",IDC_STATIC,176,24,105,154 |
| | | GROUPBOX "Right",IDC_STATIC,296,24,105,154 |
| | | LTEXT "um",IDC_STATIC,141,113,19,12 |
| | | CONTROL "",IDC_LIST_WSI_DIAGNOSIS_RESULT,"SysListView32",LVS_REPORT | LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,182,30,162,187 |
| | | END |
| | | |
| | | IDD_DLG_SELF_DIAGNOSIS_SETTING DIALOGEX 0, 0, 435, 379 |
| | |
| | | if(pWsiControl == NULL) continue ; |
| | | |
| | | CRcpAFMRecipeInfo *pRcpWsiAFMInfo = pRsRcpReviewInfo->GetRcpWsiAFMRecipeInfo(nWsiControlIdx); |
| | | if(pRcpWsiAFMInfo == NULL) continue ; |
| | | // if(pRcpWsiAFMInfo == NULL) continue ; |
| | | // |
| | | // int nRealMagIndex = GetRealMagnification(nWsiControlIdx, pRcpWsiAFMInfo->m_nZoomIndex); |
| | | |
| | | int nRealMagIndex = GetRealMagnification(nWsiControlIdx, pRcpWsiAFMInfo->m_nZoomIndex); |
| | | int nRealMagIndex = 0; |
| | | |
| | | //pWsiControl->SetWsiReady(*pGlassResult->GetJobID(),_T("LGDemo"),2, 0); //TEST0716 |
| | | |
| | |
| | | virtual CDlgSelfDiagnosis* ISP2P_GetDlgDiagnosis() = 0; |
| | | virtual CDlgReviewHistoryTool* ISP2P_GetDlgHistory() = 0; |
| | | |
| | | virtual BOOL ISP2P_GetFirstReviewLeft() = 0; |
| | | virtual BOOL ISP2P_GetFirstReviewRight() = 0; |
| | | virtual void ISP2P_SetFirstReviewLeft(BOOL b_Check) = 0; |
| | | virtual void ISP2P_SetFirstReviewRight(BOOL b_Check) = 0; |
| | | |
| | | |
| | | |
| | | virtual BOOL GetOffSetValue(int nModule, int nCam, int nScan, double dGlassXPos, double &dXpos, double &dYpos) = 0; |
| | | |
| | | public: |
| | |
| | | bFileFind = FALSE; |
| | | |
| | | m_pSP2P->ISP2P_GetDiagnosisHistory(); |
| | | |
| | | m_pSP2P->ISP2P_SetFirstReviewLeft(TRUE); |
| | | m_pSP2P->ISP2P_SetFirstReviewRight(TRUE); |
| | | |
| | | if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_LoadingAck_CPJT)) |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading] Send Loading Ack Signal!")); |
| | |
| | | #define IDC_EDIT_WSI_HEIGHT11 1181 |
| | | #define IDC_EDIT_WSI_HEIGHT12 1182 |
| | | #define IDC_EDIT_WSI_HEIGHT13 1183 |
| | | #define IDC_LIST_WSI_DIAGNOSIS_RESULT 1184 |
| | | #define ID_INS_HOOK 32772 |
| | | #define ID_UNINS_HOOK 32773 |
| | | |
| | |
| | | #ifndef APSTUDIO_READONLY_SYMBOLS |
| | | #define _APS_NEXT_RESOURCE_VALUE 381 |
| | | #define _APS_NEXT_COMMAND_VALUE 32775 |
| | | #define _APS_NEXT_CONTROL_VALUE 1181 |
| | | #define _APS_NEXT_CONTROL_VALUE 1185 |
| | | #define _APS_NEXT_SYMED_VALUE 346 |
| | | #endif |
| | | #endif |
| | |
| | | int ProcessFlatness(); |
| | | int ProcessFlatness_Manual(); |
| | | int ProcessSimulation(); |
| | | int ProcessDiagnosisJudge(); |
| | | int ProcessDiagnosisJudge(int nMode); |
| | | |
| | | BOOL CalculateSquareness(int nIndex); |
| | | protected: |