| | |
| | | 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; |
| | | |
| | |
| | | measureResult.nWsiState = pPacket->GetInt(3); |
| | | measureResult.dAccuracy = pPacket->GetDouble(0); |
| | | measureResult.dRepeatability = pPacket->GetDouble(1); |
| | | for (int i = 0; i < 10; i++) |
| | | { |
| | | measureResult.dDiagnosisHeight[i] = pPacket->GetDouble(i + 2); |
| | | } |
| | | m_pWC2P->IWC2P_DisplayMessage(m_nIndex,_T("VLSI state %d ACC %f RTB %f"),measureResult.nWsiState,measureResult.dAccuracy ,measureResult.dRepeatability); |
| | | } |
| | | break; |
| | |
| | | int nWsiState; |
| | | double dAccuracy; |
| | | double dRepeatability; |
| | | double dDiagnosisHeight[10]; |
| | | |
| | | bool bBigSizeDefect; |
| | | |
| | |
| | | || 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\ |
| | |
| | | file.GetItem(_T("FLATNESS_JUDGE_DATA_Z_RANGE"), m_dJudgeData_ZRange, 0); |
| | | file.GetItem(_T("FLATNESS_GLASS_X"), m_nGlassSizeX, 0); |
| | | file.GetItem(_T("FLATNESS_GLASS_Y"), m_nGlassSizeY, 0); |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _START |
| | | file.GetItem(_T("FLATNESS_SKIPMODE"), m_nFlatnessSkipMode, 0); |
| | | file.GetItem(_T("SQUARENESS_STANDARD"), m_dSquarenessStandard, 0); |
| | | file.GetItem(_T("SQUARENESS_STANDARD2"), m_dSquarenessStandard2, 0); |
| | | file.GetItem(_T("WSI_STANDARD"), m_dWSIStandard, 0); |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _END |
| | | file.GetItem(_T("FLATNESS_MODE"), m_nFlatnessMode, 0); |
| | | file.GetItem(_T("FLATNESS_RANGECOUNT"), m_nRangeCount_Flatness, 0); |
| | | file.GetItem(_T("WSI_PANEL_COUNT"), m_nPanelCount_Wsi, 0); |
| | |
| | | return CreateDirectory(strTemp, NULL); |
| | | } |
| | | |
| | | BOOL CDiagnosisManager::CheckManualMode() |
| | | { |
| | | if (m_pDP2P->IDP2P_CheckManualMode() == TRUE) |
| | | { |
| | | return TRUE; |
| | | } |
| | | return FALSE; |
| | | } |
| | | |
| | | int CDiagnosisManager::SetDiagnosisResultCount_Squareness(int nCount) |
| | | { |
| | | if (nCount == int(m_vecDiagnosisResult_Squareness.size())) return int(m_vecDiagnosisResult_Squareness.size()); |
| | |
| | | { |
| | | if (pParameter == NULL) return; |
| | | |
| | | CString strMessage = ""; |
| | | |
| | | CDiagnosisProcessData* pProcessData = static_cast<CDiagnosisProcessData*>(pParameter); |
| | | int nProcessMode = pProcessData->nProcessMode; |
| | | |
| | |
| | | m_pManager->m_bProcessAll = true; |
| | | ProcessAll(); |
| | | break; |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _START |
| | | case DiagnosisMode_Review : |
| | | strMessage.Format(_T("[CDiagnosisProcessor] DiagnosisMode_Review START")); |
| | | m_pDP2P->IDP2P_DisplayMessage(0, strMessage); |
| | | |
| | | m_pManager->m_bProcessAll = false; |
| | | if (IsCommandStop()) return; |
| | | m_pDP2P->IDP2P_SetDialogTap(0); |
| | | ProcessSquareness(); |
| | | Sleep(1000); |
| | | if (IsCommandStop()) return; |
| | | m_pDP2P->IDP2P_SetDialogTap(1); |
| | | ProcessFlatness(); |
| | | Sleep(1000); |
| | | |
| | | if (ProcessDiagnosisJudge(nProcessMode) == FALSE) { |
| | | strMessage.Format(_T("[CDiagnosisProcessor] DiagnosisJudge FAIL")); |
| | | m_pDP2P->IDP2P_DisplayMessage(0, strMessage); |
| | | } |
| | | |
| | | strMessage.Format(_T("[CDiagnosisProcessor] DiagnosisMode_Review END")); |
| | | m_pDP2P->IDP2P_DisplayMessage(0, strMessage); |
| | | |
| | | break; |
| | | |
| | | case DiagnosisMode_Wsi: |
| | | strMessage.Format(_T("[CDiagnosisProcessor] DiagnosisMode_WSI START")); |
| | | m_pDP2P->IDP2P_DisplayMessage(0, strMessage); |
| | | |
| | | m_pManager->m_bProcessAll = false; |
| | | if (IsCommandStop()) return; |
| | | m_pDP2P->IDP2P_UpdateDialog(7); |
| | | ProcessWsi(); |
| | | Sleep(1000); |
| | | |
| | | if (ProcessDiagnosisJudge(nProcessMode) == FALSE) { |
| | | strMessage.Format(_T("[CDiagnosisProcessor] DiagnosisJudge FAIL")); |
| | | m_pDP2P->IDP2P_DisplayMessage(0, strMessage); |
| | | } |
| | | |
| | | strMessage.Format(_T("[CDiagnosisProcessor] DiagnosisMode_WSI END")); |
| | | m_pDP2P->IDP2P_DisplayMessage(0, strMessage); |
| | | |
| | | break; |
| | | |
| | | case DiagnosisMode_Squareness: |
| | | m_pManager->m_bProcessAll = false; |
| | | ProcessSquareness(); |
| | | Sleep(1000); |
| | | if (ProcessDiagnosisJudge(nProcessMode) == FALSE) { |
| | | strMessage.Format(_T("[CDiagnosisProcessor] DiagnosisJudge FAIL")); |
| | | m_pDP2P->IDP2P_DisplayMessage(0, strMessage); |
| | | } |
| | | break; |
| | | |
| | | case DiagnosisMode_Wsi: |
| | | m_pManager->m_bProcessAll = false; |
| | | ProcessWsi(); |
| | | break; |
| | | |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _END |
| | | case DiagnosisMode_Flatness: |
| | | m_pManager->m_bProcessAll = false; |
| | | ProcessFlatness(); |
| | | Sleep(1000); |
| | | if (ProcessDiagnosisJudge(nProcessMode) == FALSE) { |
| | | strMessage.Format(_T("[CDiagnosisProcessor] DiagnosisJudge FAIL")); |
| | | m_pDP2P->IDP2P_DisplayMessage(0, strMessage); |
| | | } |
| | | break; |
| | | |
| | | case DiagnosisMode_Flatness_Manual: |
| | |
| | | int CDiagnosisProcessor::ProcessAll() |
| | | { |
| | | if (IsCommandStop()) return 1; |
| | | |
| | | CString strMessage = ""; |
| | | |
| | | m_pDP2P->IDP2P_UpdateDialog(7);//WSI Result 칸 ì´ê¸°í |
| | | //if (m_pDP2P == NULL) return 0; |
| | |
| | | m_pDP2P->IDP2P_SetDialogTap(1); |
| | | ProcessFlatness(); |
| | | |
| | | Sleep(2000); |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _START |
| | | //Sleep(2000); |
| | | Sleep(1000); |
| | | |
| | | //#3407 KYH ìê°ì§ë¨ Judge íì ë° ìë ë°ì ê¸°ë¥ ADD START |
| | | for (int i = 0; i < 2; i++) |
| | | { |
| | | int nSelModuleIndex = i; |
| | | |
| | | CDiagnosisInfo* pSettingInfo = m_pManager->GetDiagnosisInfo(); |
| | | if (pSettingInfo == NULL) { |
| | | m_pDP2P->IDP2P_UpdateDialog(4); |
| | | return 0; |
| | | } |
| | | |
| | | CDiagnosisResult* pProcessResult = m_pManager->GetDiagnosisResult_Squareness(nSelModuleIndex); // 0412 kyh ì§ê°ë 측ì 모ëì ëí ê²°ê³¼ì ë³´ |
| | | if (pProcessResult == NULL) { |
| | | m_pDP2P->IDP2P_UpdateDialog(4); |
| | | return 0; |
| | | } |
| | | |
| | | CDiagnosisResult* pProcessWSIResult = m_pManager->GetDiagnosisResult_Wsi(nSelModuleIndex); // 0412 kyh WSI 측ì 모ëì ëí ê²°ê³¼ ì ë³´ |
| | | if (pProcessWSIResult == NULL) { |
| | | m_pDP2P->IDP2P_UpdateDialog(6); |
| | | return 0; |
| | | } |
| | | |
| | | CString strMessage = _T(""); |
| | | |
| | | 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); |
| | | } |
| | | |
| | | 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); |
| | | } |
| | | if (ProcessDiagnosisJudge(DiagnosisMode_All) == FALSE) { |
| | | strMessage.Format(_T("[CDiagnosisProcessor] DiagnosisJudge FAIL")); |
| | | m_pDP2P->IDP2P_DisplayMessage(0, strMessage); |
| | | } |
| | | //#3407 KYH ìê°ì§ë¨ Judge íì ë° ìë ë°ì ê¸°ë¥ ADD END |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _START |
| | | |
| | | //ì»´íë¦¿í¸ ì í¸ ë³´ë´ê¸° |
| | | m_pDP2P->IDP2P_DiagnosisSendCompleteSig(); |
| | | m_pManager->m_bProcessAll = false; |
| | | |
| | | return 1; |
| | |
| | | int stTime = GetTickCount(); |
| | | while (1) |
| | | { |
| | | if (11000 <= GetTickCount() - stTime) |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _START |
| | | //if (11000 <= GetTickCount() - stTime) |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _END |
| | | if (1000 <= GetTickCount() - stTime) |
| | | { |
| | | break; |
| | | } |
| | |
| | | |
| | | } |
| | | m_pDP2P->IDP2P_SetAFMTracking(nSelModuleIndex, TRUE); |
| | | Sleep(1000); |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _START |
| | | //Sleep(1000); |
| | | Sleep(500); |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _END |
| | | |
| | | CString strimagename; |
| | | strimagename.Format(_T("%s_Module[%d]Index[%d].bmp"), m_pManager->m_strResultImageFileName, nSelModuleIndex, nIdx); |
| | | |
| | | |
| | | // find mark at panel |
| | | double dFindPixX = 0., dFindPixY = 0.; |
| | | if (m_pDP2P->IDP2P_FindPanelCenter(nSelModuleIndex, dFindPixX, dFindPixY, strimagename) == FALSE) continue; |
| | | if (m_pDP2P->IDP2P_FindPanelCenter(nSelModuleIndex, dFindPixX, dFindPixY, strimagename) == FALSE) { |
| | | strMessage.Format(_T("[CDiagnosisProcessor] find mark at panel FAIL")); |
| | | m_pDP2P->IDP2P_DisplayMessage(0, strMessage); |
| | | continue; |
| | | } |
| | | |
| | | m_pDP2P->IDP2P_SetAFMTracking(nSelModuleIndex, FALSE); |
| | | |
| | |
| | | } |
| | | m_pDP2P->IDP2P_SetWsiManualMeasure(nSelModuleIndex, dXpos, dYpos); |
| | | // move panel |
| | | Sleep(2000); |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _START |
| | | //Sleep(2000); |
| | | Sleep(1000); |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _END |
| | | m_pDP2P->IDP2P_MotorGo(nSelModuleIndex, dXpos, dYpos); |
| | | |
| | | if (m_pDP2P->IDP2P_IsGantryMotionEnd(nSelModuleIndex) == FALSE) |
| | |
| | | int stTime = GetTickCount(); |
| | | while (1) |
| | | { |
| | | if (10000 <= GetTickCount() - stTime) |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _START |
| | | //if (10000 <= GetTickCount() - stTime) |
| | | if (11000 <= GetTickCount() - stTime) |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _END |
| | | { |
| | | break; |
| | | } |
| | |
| | | { |
| | | if (m_pDP2P == NULL || m_pManager == NULL) return 0; |
| | | |
| | | CString strMessage = ""; |
| | | |
| | | CDiagnosisInfo * pSettingInfo = m_pManager->GetDiagnosisInfo(); |
| | | if (pSettingInfo == NULL) return 0; |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _START |
| | | if (pSettingInfo->GetFlastnessSkipMode() == TRUE) { |
| | | strMessage.Format(_T("[CDiagnosisProcessor] FlastnessSkipMode!")); |
| | | m_pDP2P->IDP2P_DisplayMessage(0, strMessage); |
| | | return 0; |
| | | } |
| | | |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _END |
| | | |
| | | int nSelModuleIndex = m_pDP2P->IDP2P_GetSelectedModuleIndex(); |
| | | int nFlatnessMode = pSettingInfo->GetFlatnessMode(); |
| | |
| | | { |
| | | // AF Home |
| | | m_pDP2P->IDP2P_AFMHomePosition(0); |
| | | Sleep(5000); |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _START |
| | | //Sleep(5000); |
| | | Sleep(1000); |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _END |
| | | m_pDP2P->IDP2P_SetAFMTracking(0, TRUE); |
| | | 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 nMode) |
| | | { |
| | | for (int i = 0; i < 2; i++) |
| | | { |
| | | int nSelModuleIndex = i; |
| | | |
| | | CDiagnosisInfo* pSettingInfo = m_pManager->GetDiagnosisInfo(); |
| | | if (pSettingInfo == NULL) { |
| | | m_pDP2P->IDP2P_UpdateDialog(4); |
| | | return 0; |
| | | } |
| | | |
| | | CDiagnosisResult* pProcessResult = m_pManager->GetDiagnosisResult_Squareness(nSelModuleIndex); // 0412 kyh ì§ê°ë 측ì 모ëì ëí ê²°ê³¼ì ë³´ |
| | | if (pProcessResult == NULL) { |
| | | m_pDP2P->IDP2P_UpdateDialog(4); |
| | | return 0; |
| | | } |
| | | |
| | | CDiagnosisResult* pProcessWSIResult = m_pManager->GetDiagnosisResult_Wsi(nSelModuleIndex); // 0412 kyh WSI 측ì 모ëì ëí ê²°ê³¼ ì ë³´ |
| | | if (pProcessWSIResult == NULL) { |
| | | m_pDP2P->IDP2P_UpdateDialog(6); |
| | | return 0; |
| | | } |
| | | |
| | | CString strMessage = _T(""); |
| | | 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); |
| | | } |
| | | } |
| | | |
| | | if (nMode == DiagnosisMode_All || nMode == DiagnosisMode_Wsi) |
| | | { |
| | | 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_pDP2P->IDP2P_DiagnosisSendCompleteSig(); |
| | | return 1; |
| | | } |
| | | |
| | | BOOL CDiagnosisProcessor::CalculateSquareness(int nIndex) |
| | | { |
| | | if (m_pDP2P == NULL || m_pManager == NULL) return 0; |
| | |
| | | </ModuleDefinitionFile> |
| | | <AdditionalLibraryDirectories>../lib;../../Internal_Library/lib;</AdditionalLibraryDirectories> |
| | | <AdditionalDependencies>CHThreadPools_x64_vc15.lib</AdditionalDependencies> |
| | | <ImportLibrary>$(SolutionDir)\lib\$(TargetName).lib</ImportLibrary> |
| | | </Link> |
| | | <Midl> |
| | | <MkTypLibCompatible>false</MkTypLibCompatible> |
| | |
| | | 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; |
| | |
| | | void CDlgSelfDiagnosis_Flatness::OnBnClickedButtonSimulation() |
| | | { |
| | | // TODO: ì¬ê¸°ì 컨í¸ë¡¤ ì림 ì²ë¦¬ê¸° ì½ë를 ì¶ê°í©ëë¤. |
| | | |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _START |
| | | if (m_pDiagnosisManager->CheckManualMode() == FALSE) |
| | | { |
| | | CString strMessage; |
| | | strMessage.Format(_T("Change Manual Mode!!")); |
| | | if (IDOK == AfxMessageBox(strMessage, MB_OK | MB_ICONERROR)) |
| | | { |
| | | g_pLog->DisplayMessage(_T("Manual Diagnosis Fail! Not Manual Mode")); |
| | | return; |
| | | } |
| | | } |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _END |
| | | |
| | | if (m_bState == FALSE) |
| | | { |
| | | m_bState = TRUE; |
| | |
| | | |
| | | void CDlgSelfDiagnosis_Flatness::OnBnClickedButtonManual() |
| | | { |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _START |
| | | if (m_pDiagnosisManager->CheckManualMode() == FALSE) |
| | | { |
| | | CString strMessage; |
| | | strMessage.Format(_T("Change Manual Mode!!")); |
| | | if (IDOK == AfxMessageBox(strMessage, MB_OK | MB_ICONERROR)) |
| | | { |
| | | g_pLog->DisplayMessage(_T("Manual Diagnosis Fail! Not Manual Mode")); |
| | | return; |
| | | } |
| | | } |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _END |
| | | |
| | | m_pDiagnosisManager->ManualMeasure_Flatness(); |
| | | } |
| | | |
| | |
| | | DDX_Control(pDX, IDC_EDIT_WSI_PANEL_POS_Y, m_editPanelPosY); |
| | | DDX_Control(pDX, IDC_EDIT_WSI_PANEL_POS_X2, m_editPanelPosX2); |
| | | DDX_Control(pDX, IDC_EDIT_WSI_PANEL_POS_Y2, m_editPanelPosY2); |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _START |
| | | DDX_Control(pDX, IDC_CHECK_SELF_DIAGNOSIS_FLATNESS_SKIP, m_CheckFlatnessSkip); |
| | | DDX_Control(pDX, IDC_EDIT_SQUARENESS_STANDARD, m_editSquarenessStandard); |
| | | DDX_Control(pDX, IDC_EDIT_SQUARENESS_STANDARD2, m_editSquarenessStandard2); |
| | | DDX_Control(pDX, IDC_EDIT_WSI_STANDARD, m_editWSIStandard); |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _END |
| | | DDX_Text(pDX, IDC_EDIT_REVIEW_PANEL_POS_X, m_dEditReviewPanelPosX); |
| | | DDX_Text(pDX, IDC_EDIT_REVIEW_PANEL_POS_Y, m_dEditReviewPanelPosY); |
| | | DDX_Text(pDX, IDC_EDIT_REVIEW_PANEL_POS_X2, m_dEditReviewPanelPosX2); |
| | |
| | | |
| | | BOOL CDlgSelfDiagnosis_Setting::ReadAutoDiagnosisConfigFile() |
| | | { |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _START |
| | | CString strConfigFilePath = _T(""); |
| | | strConfigFilePath.Format(_T("%s\\%s"), REVIEW_AUTO_DIAGNOSIS_SETTING_FILE_PATH, REVIEW_AUTO_DIAGNOSIS_SETTING_FILE_NAME); |
| | | m_pDiagnosisManager->LoadSettingConfigFile(strConfigFilePath); |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _END |
| | | |
| | | CDiagnosisInfo* pSettingInfo = m_pDiagnosisManager->GetDiagnosisInfo(); |
| | | if (pSettingInfo == NULL) |
| | | return FALSE; |
| | | |
| | | CString strTemp = _T(""); |
| | | CString strFilePath = REVIEW_AUTO_DIAGNOSIS_SETTING_FILE_PATH; |
| | | CString strFileName = _T("AutoDiagnosisSetting.cfg"); |
| | | |
| | | m_editFilePath.SetWindowTextA(strFilePath +_T('\\') + strFileName); |
| | | m_editFilePath.SetWindowTextA(strConfigFilePath); |
| | | |
| | | strTemp.Format("%d", pSettingInfo->GetModuleCount()); |
| | | m_editModuleCount.SetWindowTextA(strTemp); |
| | |
| | | |
| | | strTemp.Format("%f", pSettingInfo->GetJudgeData_Degree()); |
| | | m_editJudgeData_Degree.SetWindowTextA(strTemp); |
| | | |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _START |
| | | strTemp.Format("%f", pSettingInfo->GetSquarenessStandard()); |
| | | m_editSquarenessStandard.SetWindowTextA(strTemp); |
| | | |
| | | strTemp.Format("%f", pSettingInfo->GetSquarenessStandard2()); |
| | | m_editSquarenessStandard2.SetWindowTextA(strTemp); |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _END |
| | | |
| | | strTemp.Format("%d", pSettingInfo->GetCameraFrameWidth()); |
| | | m_editFrameWidth.SetWindowTextA(strTemp); |
| | |
| | | strTemp.Format("%d", pSettingInfo->GetGlassSizeY_Flatness()); |
| | | m_editGlassSizeY.SetWindowTextA(strTemp); |
| | | |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _START |
| | | m_CheckFlatnessSkip.SetCheck(pSettingInfo->GetFlastnessSkipMode()); |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _END |
| | | |
| | | strTemp.Format("%d", pSettingInfo->GetPanelCount_Wsi()); |
| | | m_editPanelCount_Wsi.SetWindowTextA(strTemp); |
| | | |
| | | strTemp.Format("%f", pSettingInfo->GetJudgeData_3Sigma()); |
| | | m_editJudgeData_3Sigma.SetWindowTextA(strTemp); |
| | | |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _START |
| | | strTemp.Format("%f", pSettingInfo->GetWSIStandard()); |
| | | m_editWSIStandard.SetWindowTextA(strTemp); |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _END |
| | | |
| | | strTemp.Format("%f", pSettingInfo->GetPanelPosX_Wsi()); |
| | | m_editPanelPosX.SetWindowTextA(strTemp); |
| | |
| | | nTemp = atoi(strTemp); |
| | | macroFile.SetItem(strItem, nTemp); |
| | | |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _START |
| | | strItem.Format(_T("FLATNESS_SKIPMODE")); |
| | | nTemp = m_CheckFlatnessSkip.GetCheck(); |
| | | macroFile.SetItem(strItem, nTemp); |
| | | |
| | | strItem.Format(_T("SQUARENESS_STANDARD")); |
| | | m_editSquarenessStandard.GetWindowTextA(strTemp); |
| | | dTemp = atof(strTemp); |
| | | macroFile.SetItem(strItem, dTemp); |
| | | |
| | | strItem.Format(_T("SQUARENESS_STANDARD2")); |
| | | m_editSquarenessStandard2.GetWindowTextA(strTemp); |
| | | dTemp = atof(strTemp); |
| | | macroFile.SetItem(strItem, dTemp); |
| | | |
| | | strItem.Format(_T("WSI_STANDARD")); |
| | | m_editWSIStandard.GetWindowTextA(strTemp); |
| | | dTemp = atof(strTemp); |
| | | macroFile.SetItem(strItem, dTemp); |
| | | |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _END |
| | | |
| | | strItem.Format(_T("WSI_PANEL_COUNT")); |
| | | m_editPanelCount_Wsi.GetWindowTextA(strTemp); |
| | | nTemp = atoi(strTemp); |
| | |
| | | double m_dEditReviewPanelPosY5; |
| | | double m_dEditReviewPanelPosX6; |
| | | double m_dEditReviewPanelPosY6; |
| | | public: |
| | | CButton m_CheckFlatnessSkip; |
| | | CEdit m_editSquarenessStandard; |
| | | CEdit m_editSquarenessStandard2; |
| | | CEdit m_editWSIStandard; |
| | | }; |
| | |
| | | CDlgSelfDiagnosis_Squareness::CDlgSelfDiagnosis_Squareness(CDiagnosisManager* pDiagnosisManager, CWnd* pParent /*=nullptr*/) |
| | | : CDialogEx(IDD_DLG_SELF_DIAGNOSIS_SQUARENESS, pParent) |
| | | , m_nSelModuleIndex(0) |
| | | , m_dEditTheta(0) |
| | | , m_dEditLeftTheta(0) |
| | | , m_dEditMotorX_1(0) |
| | | , m_dEditMotorY_1(0) |
| | | , m_dEditPixelX_1(0) |
| | |
| | | , m_dEditMotorY_3(0) |
| | | , m_dEditPixelX_3(0) |
| | | , m_dEditPixelY_3(0) |
| | | , m_dEditRightTheta(0) |
| | | , m_dEditMotorX_4(0) |
| | | , m_dEditMotorY_4(0) |
| | | , m_dEditPixelX_4(0) |
| | | , m_dEditPixelY_4(0) |
| | | , m_dEditMotorX_5(0) |
| | | , m_dEditMotorY_5(0) |
| | | , m_dEditPixelX_5(0) |
| | | , m_dEditPixelY_5(0) |
| | | , m_dEditMotorX_6(0) |
| | | , m_dEditMotorY_6(0) |
| | | , m_dEditPixelX_6(0) |
| | | , m_dEditPixelY_6(0) |
| | | , m_editFirstSettingStandard(0) |
| | | , m_editFirstSettingStandard2(0) |
| | | { |
| | | m_pDiagnosisManager = pDiagnosisManager; |
| | | } |
| | |
| | | CDialogEx::DoDataExchange(pDX); |
| | | DDX_Control(pDX, IDC_GRID_GANTRY_DATA_HISTORY, m_ctrlGridGantryDataHistory); |
| | | DDX_Control(pDX, IDC_LIST, m_ctrlListFileHistory); |
| | | DDX_Text(pDX, IDC_EDIT_GANTRY_THETA, m_dEditTheta); |
| | | DDX_Text(pDX, IDC_EDIT_GANTRY_THETA, m_dEditLeftTheta); |
| | | DDX_Text(pDX, IDC_EDIT_GANTRY_MOTOR_X, m_dEditMotorX_1); |
| | | DDX_Text(pDX, IDC_EDIT_GANTRY_MOTOR_Y, m_dEditMotorY_1); |
| | | DDX_Text(pDX, IDC_EDIT_GANTRY_PIXEL_X, m_dEditPixelX_1); |
| | |
| | | DDX_Text(pDX, IDC_EDIT_GANTRY_MOTOR_Y3, m_dEditMotorY_3); |
| | | DDX_Text(pDX, IDC_EDIT_GANTRY_PIXEL_X3, m_dEditPixelX_3); |
| | | DDX_Text(pDX, IDC_EDIT_GANTRY_PIXEL_Y3, m_dEditPixelY_3); |
| | | |
| | | DDX_Text(pDX, IDC_EDIT_GANTRY_THETA2, m_dEditRightTheta); |
| | | DDX_Text(pDX, IDC_EDIT_GANTRY_MOTOR_X4, m_dEditMotorX_4); |
| | | DDX_Text(pDX, IDC_EDIT_GANTRY_MOTOR_Y4, m_dEditMotorY_4); |
| | | DDX_Text(pDX, IDC_EDIT_GANTRY_PIXEL_X4, m_dEditPixelX_4); |
| | | DDX_Text(pDX, IDC_EDIT_GANTRY_PIXEL_Y4, m_dEditPixelY_4); |
| | | DDX_Text(pDX, IDC_EDIT_GANTRY_MOTOR_X5, m_dEditMotorX_5); |
| | | DDX_Text(pDX, IDC_EDIT_GANTRY_MOTOR_Y5, m_dEditMotorY_5); |
| | | DDX_Text(pDX, IDC_EDIT_GANTRY_PIXEL_X5, m_dEditPixelX_5); |
| | | DDX_Text(pDX, IDC_EDIT_GANTRY_PIXEL_Y5, m_dEditPixelY_5); |
| | | DDX_Text(pDX, IDC_EDIT_GANTRY_MOTOR_X6, m_dEditMotorX_6); |
| | | DDX_Text(pDX, IDC_EDIT_GANTRY_MOTOR_Y6, m_dEditMotorY_6); |
| | | DDX_Text(pDX, IDC_EDIT_GANTRY_PIXEL_X6, m_dEditPixelX_6); |
| | | DDX_Text(pDX, IDC_EDIT_GANTRY_PIXEL_Y6, m_dEditPixelY_6); |
| | | DDX_Text(pDX, IDC_EDIT_SQUARENESS_FIRSTSETTING, m_editFirstSettingStandard); |
| | | DDX_Text(pDX, IDC_EDIT_SQUARENESS_FIRSTSETTING2, m_editFirstSettingStandard2); |
| | | //DDX_Control(pDX, IDC_BUTTON_SIMULATION, m_BtSumulation); |
| | | //DDX_Control(pDX, IDC_BUTTON_SIMULATION, m_BtSumulation); |
| | | DDX_Control(pDX, IDC_BUTTON_SIMULATION2, m_BtSumulation); |
| | |
| | | const CDiagnosisInfo* pSettingInfo = m_pDiagnosisManager->GetDiagnosisInfo(); |
| | | if (pSettingInfo == NULL) return; |
| | | |
| | | const CDiagnosisResult* pStandardResult = pSettingInfo->GetSettingResult_Squareness(m_nSelModuleIndex); |
| | | if (pStandardResult == NULL) return; |
| | | m_editFirstSettingStandard = pSettingInfo->GetSquarenessStandard(); |
| | | m_editFirstSettingStandard2 = pSettingInfo->GetSquarenessStandard2(); |
| | | |
| | | if (bLoadResult) // update load file data |
| | | { |
| | | const CDiagnosisResult* pResult = m_pDiagnosisManager->GetDiagnosisResult_Squareness(m_nSelModuleIndex); |
| | | const CDiagnosisResult* pResult = m_pDiagnosisManager->GetDiagnosisResult_Squareness(0); |
| | | if (pResult == NULL) return; |
| | | |
| | | // result : theta, pixel position |
| | | m_dEditTheta = pResult->GetGantryDegree(); |
| | | m_dEditLeftTheta = pResult->GetGantryDegree(); |
| | | for (int nPIdx = 0; nPIdx < pSettingInfo->GetPanelCount_Squareness(); nPIdx++) |
| | | { |
| | | const SPositionData* pPosData = pResult->GetPositionData_Squareness(nPIdx); |
| | | if (pPosData == NULL) continue; |
| | | |
| | | if (pPosData->nIndex == PanelPosition_Base) |
| | | if (pPosData->nPosMode == PanelPosition_Base) |
| | | { |
| | | m_dEditPixelX_1 = pPosData->dPixelX; |
| | | m_dEditPixelY_1 = pPosData->dPixelY; |
| | | } |
| | | else if (pPosData->nIndex == PanelPosition_Sub) |
| | | else if (pPosData->nPosMode == PanelPosition_Sub) |
| | | { |
| | | m_dEditPixelX_2 = pPosData->dPixelX; |
| | | m_dEditPixelY_2 = pPosData->dPixelY; |
| | | } |
| | | else if (pPosData->nIndex == PanelPosition_Addition) |
| | | else if (pPosData->nPosMode == PanelPosition_Addition) |
| | | { |
| | | m_dEditPixelX_3 = pPosData->dPixelX; |
| | | m_dEditPixelY_3 = pPosData->dPixelY; |
| | | } |
| | | } |
| | | |
| | | pResult = m_pDiagnosisManager->GetDiagnosisResult_Squareness(1); |
| | | if (pResult == NULL) return; |
| | | |
| | | // result : theta, pixel position |
| | | m_dEditRightTheta = pResult->GetGantryDegree(); |
| | | for (int nPIdx = 0; nPIdx < pSettingInfo->GetPanelCount_Squareness(); nPIdx++) |
| | | { |
| | | const SPositionData* pPosData = pResult->GetPositionData_Squareness(nPIdx+3); |
| | | if (pPosData == NULL) continue; |
| | | |
| | | if (pPosData->nPosMode == PanelPosition_Base) |
| | | { |
| | | m_dEditPixelX_4 = pPosData->dPixelX; |
| | | m_dEditPixelY_4 = pPosData->dPixelY; |
| | | } |
| | | else if (pPosData->nPosMode == PanelPosition_Sub) |
| | | { |
| | | m_dEditPixelX_5 = pPosData->dPixelX; |
| | | m_dEditPixelY_5 = pPosData->dPixelY; |
| | | } |
| | | else if (pPosData->nPosMode == PanelPosition_Addition) |
| | | { |
| | | m_dEditPixelX_6 = pPosData->dPixelX; |
| | | m_dEditPixelY_6 = pPosData->dPixelY; |
| | | } |
| | | } |
| | | |
| | | } |
| | | else if (bLoadResult == FALSE && m_pDiagnosisManager->ExistStandardData() == FALSE)// update setting data |
| | | { |
| | | const CDiagnosisResult* pResult = m_pDiagnosisManager->GetDiagnosisResult_Squareness(m_nSelModuleIndex); |
| | | const CDiagnosisResult* pResult = m_pDiagnosisManager->GetDiagnosisResult_Squareness(0); |
| | | if (pResult == NULL) return; |
| | | |
| | | // result : theta, pixel position |
| | | m_dEditTheta = pResult->GetGantryDegree(); |
| | | m_dEditLeftTheta = pResult->GetGantryDegree(); |
| | | |
| | | for (int nPIdx = 0; nPIdx < pSettingInfo->GetPanelCount_Squareness(); nPIdx++) |
| | | { |
| | | const SPositionData* pPosData = pResult->GetPositionData_Squareness(nPIdx); |
| | | if (pPosData == NULL) continue; |
| | | |
| | | if (pPosData->nIndex == PanelPosition_Base) |
| | | if (pPosData->nPosMode == PanelPosition_Base) |
| | | { |
| | | m_dEditPixelX_1 = pPosData->dPixelX; |
| | | m_dEditPixelY_1 = pPosData->dPixelY; |
| | | } |
| | | else if (pPosData->nIndex == PanelPosition_Sub) |
| | | else if (pPosData->nPosMode == PanelPosition_Sub) |
| | | { |
| | | m_dEditPixelX_2 = pPosData->dPixelX; |
| | | m_dEditPixelY_2 = pPosData->dPixelY; |
| | | } |
| | | else if (pPosData->nIndex == PanelPosition_Addition) |
| | | else if (pPosData->nPosMode == PanelPosition_Addition) |
| | | { |
| | | m_dEditPixelX_3 = pPosData->dPixelX; |
| | | m_dEditPixelY_3 = pPosData->dPixelY; |
| | | } |
| | | } |
| | | |
| | | pResult = m_pDiagnosisManager->GetDiagnosisResult_Squareness(1); |
| | | if (pResult == NULL) return; |
| | | |
| | | // result : theta, pixel position |
| | | m_dEditLeftTheta = pResult->GetGantryDegree(); |
| | | |
| | | for (int nPIdx = 0; nPIdx < pSettingInfo->GetPanelCount_Squareness(); nPIdx++) |
| | | { |
| | | const SPositionData* pPosData = pResult->GetPositionData_Squareness(nPIdx+3); |
| | | if (pPosData == NULL) continue; |
| | | |
| | | if (pPosData->nPosMode == PanelPosition_Base) |
| | | { |
| | | m_dEditPixelX_4 = pPosData->dPixelX; |
| | | m_dEditPixelY_4 = pPosData->dPixelY; |
| | | } |
| | | else if (pPosData->nPosMode == PanelPosition_Sub) |
| | | { |
| | | m_dEditPixelX_5 = pPosData->dPixelX; |
| | | m_dEditPixelY_5 = pPosData->dPixelY; |
| | | } |
| | | else if (pPosData->nPosMode == PanelPosition_Addition) |
| | | { |
| | | m_dEditPixelX_6 = pPosData->dPixelX; |
| | | m_dEditPixelY_6 = pPosData->dPixelY; |
| | | } |
| | | } |
| | | |
| | | } |
| | | else |
| | | { |
| | | int nPlanindex = 0; |
| | | |
| | | // result : theta, pixel position |
| | | const CDiagnosisResult* pResult = m_pDiagnosisManager->GetDiagnosisResult_Squareness(m_nSelModuleIndex); |
| | | const CDiagnosisResult* pResult = m_pDiagnosisManager->GetDiagnosisResult_Squareness(0); |
| | | if (pResult == NULL) return; |
| | | |
| | | BOOL bProcess = FALSE; |
| | | for (int nPIdx = 0; nPIdx < pSettingInfo->GetPanelCount_Squareness(); nPIdx++) |
| | | { |
| | | if (m_nSelModuleIndex == 1) |
| | | { |
| | | nPlanindex = nPIdx + 3; |
| | | } |
| | | else |
| | | { |
| | | nPlanindex = nPIdx; |
| | | } |
| | | const SPositionData* pPosData = pResult->GetPositionData_Squareness(nPlanindex); |
| | | const SPositionData* pPosData = pResult->GetPositionData_Squareness(nPIdx); |
| | | if (pPosData == NULL) continue; |
| | | |
| | | if (pPosData->nPosMode == PanelPosition_Base) |
| | |
| | | m_dEditPixelY_1 = pPosData->dPixelY; |
| | | bProcess = pPosData->bProcsss; |
| | | } |
| | | else if (pPosData->nIndex == PanelPosition_Sub) |
| | | else if (pPosData->nPosMode == PanelPosition_Sub) |
| | | { |
| | | m_dEditPixelX_2 = pPosData->dPixelX; |
| | | m_dEditPixelY_2 = pPosData->dPixelY; |
| | | bProcess &= pPosData->bProcsss; |
| | | } |
| | | else if (pPosData->nIndex == PanelPosition_Addition) |
| | | else if (pPosData->nPosMode == PanelPosition_Addition) |
| | | { |
| | | m_dEditPixelX_3 = pPosData->dPixelX; |
| | | m_dEditPixelY_3 = pPosData->dPixelY; |
| | |
| | | } |
| | | } |
| | | |
| | | m_dEditTheta = bProcess ? pResult->GetGantryDegree() : 0.; |
| | | m_dEditLeftTheta = bProcess ? pResult->GetGantryDegree() : 0.; |
| | | |
| | | pResult = m_pDiagnosisManager->GetDiagnosisResult_Squareness(1); |
| | | if (pResult == NULL) return; |
| | | |
| | | bProcess = FALSE; |
| | | for (int nPIdx = 0; nPIdx < pSettingInfo->GetPanelCount_Squareness(); nPIdx++) |
| | | { |
| | | const SPositionData* pPosData = pResult->GetPositionData_Squareness(nPIdx+3); |
| | | if (pPosData == NULL) continue; |
| | | |
| | | if (pPosData->nPosMode == PanelPosition_Base) |
| | | { |
| | | m_dEditPixelX_4 = pPosData->dPixelX; |
| | | m_dEditPixelY_4 = pPosData->dPixelY; |
| | | bProcess = pPosData->bProcsss; |
| | | } |
| | | else if (pPosData->nPosMode == PanelPosition_Sub) |
| | | { |
| | | m_dEditPixelX_5 = pPosData->dPixelX; |
| | | m_dEditPixelY_5 = pPosData->dPixelY; |
| | | bProcess &= pPosData->bProcsss; |
| | | } |
| | | else if (pPosData->nPosMode == PanelPosition_Addition) |
| | | { |
| | | m_dEditPixelX_6 = pPosData->dPixelX; |
| | | m_dEditPixelY_6 = pPosData->dPixelY; |
| | | bProcess &= pPosData->bProcsss; |
| | | } |
| | | } |
| | | |
| | | m_dEditRightTheta = bProcess ? pResult->GetGantryDegree() : 0.; |
| | | } |
| | | |
| | | const CDiagnosisResult* pStandardResult = pSettingInfo->GetSettingResult_Squareness(0); |
| | | |
| | | // info : motor position |
| | | for (int nPIdx = 0; nPIdx < pSettingInfo->GetPanelCount_Squareness(); nPIdx++) |
| | |
| | | { |
| | | m_dEditMotorX_3 = pPosData->dPosX; |
| | | m_dEditMotorY_3 = pPosData->dPosY; |
| | | } |
| | | } |
| | | |
| | | pStandardResult = pSettingInfo->GetSettingResult_Squareness(1); |
| | | |
| | | for (int nPIdx = 0; nPIdx < pSettingInfo->GetPanelCount_Squareness(); nPIdx++) |
| | | { |
| | | const SPositionData* pPosData = pStandardResult->GetPositionData_Squareness(nPIdx); |
| | | if (pPosData == NULL) continue; |
| | | |
| | | if (pPosData->nIndex == PanelPosition_Base) |
| | | { |
| | | m_dEditMotorX_4 = pPosData->dPosX; |
| | | m_dEditMotorY_4 = pPosData->dPosY; |
| | | } |
| | | else if (pPosData->nIndex == PanelPosition_Sub) |
| | | { |
| | | m_dEditMotorX_5 = pPosData->dPosX; |
| | | m_dEditMotorY_5 = pPosData->dPosY; |
| | | } |
| | | else if (pPosData->nIndex == PanelPosition_Addition) |
| | | { |
| | | m_dEditMotorX_6 = pPosData->dPosX; |
| | | m_dEditMotorY_6 = pPosData->dPosY; |
| | | } |
| | | } |
| | | |
| | |
| | | void CDlgSelfDiagnosis_Squareness::OnBnClickedButtonSimulation2() |
| | | { |
| | | // TODO: ì¬ê¸°ì 컨í¸ë¡¤ ì림 ì²ë¦¬ê¸° ì½ë를 ì¶ê°í©ëë¤. |
| | | |
| | | if (m_pDiagnosisManager == NULL) return; |
| | | |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _START |
| | | if (m_pDiagnosisManager->CheckManualMode() == FALSE) |
| | | { |
| | | CString strMessage; |
| | | strMessage.Format(_T("Change Manual Mode!!")); |
| | | if (IDOK == AfxMessageBox(strMessage, MB_OK | MB_ICONERROR)) |
| | | { |
| | | g_pLog->DisplayMessage(_T("Manual Diagnosis Fail! Not Manual Mode")); |
| | | return; |
| | | } |
| | | } |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _END |
| | | |
| | | GetDialogControls(); |
| | | |
| | | m_pDiagnosisManager->RecvSignalToSignalControl(DiagnosisSignal_Manual, DiagnosisMode_Squareness, TRUE); |
| | |
| | | CListBox m_ctrlListFileHistory; |
| | | CComboBox m_ctrlComboModuleIndex; |
| | | int m_nSelModuleIndex; |
| | | double m_dEditTheta; |
| | | double m_dEditLeftTheta; |
| | | double m_dEditMotorX_1; |
| | | double m_dEditMotorY_1; |
| | | double m_dEditPixelX_1; |
| | |
| | | double m_dEditMotorY_3; |
| | | double m_dEditPixelX_3; |
| | | double m_dEditPixelY_3; |
| | | double m_dEditRightTheta; |
| | | double m_dEditMotorX_4; |
| | | double m_dEditMotorY_4; |
| | | double m_dEditPixelX_4; |
| | | double m_dEditPixelY_4; |
| | | double m_dEditMotorX_5; |
| | | double m_dEditMotorY_5; |
| | | double m_dEditPixelX_5; |
| | | double m_dEditPixelY_5; |
| | | double m_dEditMotorX_6; |
| | | double m_dEditMotorY_6; |
| | | double m_dEditPixelX_6; |
| | | double m_dEditPixelY_6; |
| | | CButton m_BtSumulation; |
| | | afx_msg void OnBnClickedButtonSimulation2(); |
| | | double m_editFirstSettingStandard; |
| | | double m_editFirstSettingStandard2; |
| | | }; |
| | |
| | | : CDialogEx(IDD_DLG_SELF_DIAGNOSIS_WSI, pParent) |
| | | { |
| | | m_pDiagnosisManager = pDiagnosisManager; |
| | | m_editWSIFirstStandard = 180; |
| | | } |
| | | |
| | | CDlgSelfDiagnosis_Wsi::~CDlgSelfDiagnosis_Wsi() |
| | |
| | | DDX_Control(pDX, IDC_EDIT_WSI_RTB_00, m_ctrlWsiRtb00); |
| | | 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_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() |
| | | { |
| | | // TODO: ì¬ê¸°ì 컨í¸ë¡¤ ì림 ì²ë¦¬ê¸° ì½ë를 ì¶ê°í©ëë¤. |
| | | // TODO: ì¬ê¸°ì 컨í¸ë¡¤ ì림 ì²ë¦¬ê¸° ì½ë를 ì¶ê°í©ëë¤. |
| | | |
| | | if (m_pDiagnosisManager == NULL) return; |
| | | |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _START |
| | | if (m_pDiagnosisManager->CheckManualMode() == FALSE) |
| | | { |
| | | CString strMessage; |
| | | strMessage.Format(_T("Change Manual Mode!!")); |
| | | if (IDOK == AfxMessageBox(strMessage, MB_OK | MB_ICONERROR)) |
| | | { |
| | | g_pLog->DisplayMessage(_T("Manual Diagnosis Fail! Not Manual Mode")); |
| | | return; |
| | | } |
| | | } |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _END |
| | | |
| | | //GetDialogControls(); |
| | | |
| | |
| | | { |
| | | const CDiagnosisInfo* pSettingInfo = m_pDiagnosisManager->GetDiagnosisInfo(); |
| | | if (pSettingInfo == NULL) return; |
| | | |
| | | m_editWSIFirstStandard = pSettingInfo->GetWSIStandard(); |
| | | |
| | | double nACC00 = m_pDiagnosisManager->GetDiagnosisResult_Wsi(0)->getWSI_ACC(); |
| | | double nACC01 = m_pDiagnosisManager->GetDiagnosisResult_Wsi(1)->getWSI_ACC(); |
| | | double nRTB00 = m_pDiagnosisManager->GetDiagnosisResult_Wsi(0)->getWSI_RTB(); |
| | | double nRTB01 = m_pDiagnosisManager->GetDiagnosisResult_Wsi(1)->getWSI_RTB(); |
| | | |
| | | double dDiagnosisHeight[20]; |
| | | |
| | | for (int i = 0; i < 10; i++) |
| | | { |
| | | dDiagnosisHeight[i] = m_pDiagnosisManager->GetDiagnosisResult_Wsi(0)->GetDiagnosisHeight(i); |
| | | } |
| | | for (int i = 0; i < 10; i++) |
| | | { |
| | | dDiagnosisHeight[i+10] = m_pDiagnosisManager->GetDiagnosisResult_Wsi(1)->GetDiagnosisHeight(i); |
| | | } |
| | | |
| | | CString strDiagnosisHeight; |
| | | CString strACC00, strACC01; |
| | | CString strRTB00, strRTB01; |
| | | strACC00.Format(_T("%d"), nACC00); |
| | | strACC01.Format(_T("%d"), nACC01); |
| | | strRTB00.Format(_T("%d"), nRTB00); |
| | | strRTB01.Format(_T("%d"), nRTB01); |
| | | m_ctrlWsiAcc00.SetWindowTextA(strACC00); |
| | | m_ctrlWsiAcc01.SetWindowTextA(strACC01); |
| | | m_ctrlWsiRtb00.SetWindowTextA(strRTB00); |
| | | m_ctrlWsiRtb01.SetWindowTextA(strRTB01); |
| | | |
| | | for (int i = 0; i < 10; i++) |
| | | { |
| | | int nRow = i + 1; |
| | | |
| | | strDiagnosisHeight.Format(_T("%d"), nRow); |
| | | m_ListWSIResult.InsertItem(nRow, strDiagnosisHeight); |
| | | |
| | | strDiagnosisHeight.Format(_T("%d"), dDiagnosisHeight[i]); |
| | | m_ListWSIResult.SetItemText(nRow, 1, strDiagnosisHeight); |
| | | |
| | | strDiagnosisHeight.Format(_T("%d"), dDiagnosisHeight[i+10]); |
| | | m_ListWSIResult.SetItemText(nRow, 2, strDiagnosisHeight); |
| | | |
| | | m_ListWSIResult.EnsureVisible(nRow, FALSE); |
| | | } |
| | | |
| | | } |
| | | |
| | |
| | | const CDiagnosisInfo* pSettingInfo = m_pDiagnosisManager->GetDiagnosisInfo(); |
| | | if (pSettingInfo == NULL) return; |
| | | |
| | | m_editWSIFirstStandard = pSettingInfo->GetWSIStandard(); |
| | | |
| | | double nACC00 = dAcc00; |
| | | double nACC01 = dAcc01; |
| | | |
| | | 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_ctrlWsiRtb00; |
| | | CEdit m_ctrlWsiRtb01; |
| | | CButton m_btSimulation; |
| | | double m_editWSIFirstStandard; |
| | | |
| | | }; |
| | |
| | | m_bIsOffSetOn = 0; |
| | | m_bIsSimulation = 0; |
| | | |
| | | m_bFirstReviewLeft = 0; |
| | | m_bFirstReviewRight = 0; |
| | | |
| | | // cs init |
| | | InitializeCriticalSection(&m_csReviewResult); |
| | | InitializeCriticalSection(&m_csReviewSignal); |
| | |
| | | |
| | | double dAccdata = measureResut.dAccuracy; |
| | | double dRbtdata = measureResut.dRepeatability; |
| | | double dDiagnosisHeight[10]; |
| | | |
| | | for (int i = 0; i < 10; i++) |
| | | { |
| | | dDiagnosisHeight[i] = measureResut.dDiagnosisHeight[i]; |
| | | } |
| | | |
| | | if (nModuleIndex == 0) |
| | | { |
| | | m_pDiagnosisManager->GetDiagnosisResult_Wsi(0)->SetACC(dAccdata); |
| | | m_pDiagnosisManager->GetDiagnosisResult_Wsi(0)->SetRTB(dRbtdata); |
| | | for (int i = 0; i < 10; i++) |
| | | { |
| | | m_pDiagnosisManager->GetDiagnosisResult_Wsi(0)->SetDiagnosisHeight(dDiagnosisHeight[i], i); |
| | | } |
| | | m_vecWSIControl[0]->SendWsiAfmSafePosMove(); |
| | | } |
| | | else if (nModuleIndex == 1) |
| | | { |
| | | m_pDiagnosisManager->GetDiagnosisResult_Wsi(1)->SetACC(dAccdata); |
| | | m_pDiagnosisManager->GetDiagnosisResult_Wsi(1)->SetRTB(dRbtdata); |
| | | for (int i = 0; i < 10; i++) |
| | | { |
| | | m_pDiagnosisManager->GetDiagnosisResult_Wsi(1)->SetDiagnosisHeight(dDiagnosisHeight[i], i); |
| | | } |
| | | m_vecWSIControl[1]->SendWsiAfmSafePosMove(); |
| | | } |
| | | |
| | | |
| | | m_pDlgDiagnosis->m_pDlgWsi->UpdateWSIResult(nModuleIndex,dAccdata, dAccdata, dRbtdata, dRbtdata); |
| | | |
| | | |
| | | |
| | | |
| | | m_pDlgDiagnosis->m_pDiagnosisManager->setWSIVLSIEnd(true); |
| | | } |
| | |
| | | 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) |
| | | { |
| | |
| | | |
| | | return m_pMotorControl->IsGantryMotionEnd(nModuleIdx); |
| | | |
| | | } |
| | | |
| | | BOOL CReviewInterface::IDP2P_CheckManualMode() |
| | | { |
| | | if (IsManualProcessMode() == TRUE) |
| | | { |
| | | return TRUE; |
| | | } |
| | | |
| | | return FALSE; |
| | | } |
| | | |
| | | int CReviewInterface::IDP2P_GetSelectedModuleIndex() |
| | |
| | | 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 IDP2P_MotorGo(int nModuleIdx, double dPosX, double dPosY, BOOL bWaitReturn = FALSE); |
| | | virtual BOOL IDP2P_GetMotionEnd(int nModuleIdx, int nTimeOut = -1); |
| | | virtual BOOL IDP2P_IsGantryMotionEnd(int nModuleIdx); |
| | | virtual BOOL IDP2P_CheckManualMode(); |
| | | // Squareness |
| | | virtual int IDP2P_GetSelectedModuleIndex(); |
| | | virtual int IDP2P_GetOrigionMotorDir(); |
| | |
| | | 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) |
| | |
| | | BEGIN |
| | | GROUPBOX "File History",IDC_STATIC,7,286,421,86 |
| | | LISTBOX IDC_LIST,14,297,409,69,LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP |
| | | GROUPBOX "Data History",IDC_STATIC,292,7,136,278 |
| | | CONTROL "",IDC_GRID_GANTRY_DATA_HISTORY,"MFCGridCtrl",WS_TABSTOP,297,19,126,260 |
| | | LTEXT "Module Index :",IDC_STATIC,21,29,48,8 |
| | | COMBOBOX IDC_COMBO_MODULE_INDEX,71,28,48,34,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP |
| | | GROUPBOX "Measure Data",IDC_STATIC,7,7,280,278 |
| | | CONTROL IDB_BITMAP_MARK,IDC_STATIC,"Static",SS_BITMAP,98,67,37,37 |
| | | CONTROL IDB_BITMAP_MARK,IDC_STATIC,"Static",SS_BITMAP,98,205,37,37 |
| | | CONTROL IDB_BITMAP_GANTRY,IDC_STATIC,"Static",SS_BITMAP,40,70,39,168 |
| | | LTEXT "Theta(θ) :",IDC_STATIC,40,242,38,8 |
| | | EDITTEXT IDC_EDIT_GANTRY_THETA,40,253,40,14,ES_AUTOHSCROLL |
| | | RTEXT "[°]",IDC_STATIC,80,255,10,8 |
| | | LTEXT ": Motor",IDC_STATIC,155,174,24,8 |
| | | EDITTEXT IDC_EDIT_GANTRY_MOTOR_X,82,116,35,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_GANTRY_MOTOR_Y,118,116,35,14,ES_AUTOHSCROLL |
| | | LTEXT ": Pixel",IDC_STATIC,155,190,24,8 |
| | | EDITTEXT IDC_EDIT_GANTRY_PIXEL_X,82,132,35,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_GANTRY_PIXEL_Y,118,132,35,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_GANTRY_MOTOR_X2,82,172,35,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_GANTRY_MOTOR_Y2,118,172,35,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_GANTRY_PIXEL_X2,82,188,35,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_GANTRY_PIXEL_Y2,118,188,35,14,ES_AUTOHSCROLL |
| | | GROUPBOX "Measure Data",IDC_STATIC,7,7,280,278 |
| | | CTEXT "X",IDC_STATIC,95,106,8,8 |
| | | CTEXT "Y",IDC_STATIC,130,106,8,8 |
| | | CTEXT "X",IDC_STATIC,96,162,8,8 |
| | | CTEXT "Y",IDC_STATIC,131,162,8,8 |
| | | PUSHBUTTON "Simulation",IDC_BUTTON_SIMULATION2,224,253,50,14 |
| | | LTEXT ": Motor",IDC_STATIC,245,119,24,8 |
| | | LTEXT ": Pixel",IDC_STATIC,245,135,24,8 |
| | | CONTROL IDB_BITMAP_MARK,IDC_STATIC,"Static",SS_BITMAP,189,67,37,37 |
| | | EDITTEXT IDC_EDIT_GANTRY_MOTOR_X3,172,116,35,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_GANTRY_MOTOR_Y3,208,116,35,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_GANTRY_PIXEL_X3,172,132,35,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_GANTRY_PIXEL_Y3,208,132,35,14,ES_AUTOHSCROLL |
| | | CTEXT "X",IDC_STATIC,187,106,8,8 |
| | | CTEXT "Y",IDC_STATIC,221,106,8,8 |
| | | GROUPBOX "Data History",IDC_STATIC,337,7,91,278 |
| | | CONTROL "",IDC_GRID_GANTRY_DATA_HISTORY,"MFCGridCtrl",WS_TABSTOP,342,19,81,260 |
| | | COMBOBOX IDC_COMBO_MODULE_INDEX,123,18,48,34,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP |
| | | GROUPBOX "Measure Data",IDC_STATIC,7,7,326,278 |
| | | CONTROL IDB_BITMAP_MARK,IDC_STATIC,"Static",SS_BITMAP,25,59,37,37 |
| | | CONTROL IDB_BITMAP_MARK,IDC_STATIC,"Static",SS_BITMAP,25,197,37,37 |
| | | LTEXT "Left Module Theta(θ) :",IDC_STATIC,17,264,74,8 |
| | | EDITTEXT IDC_EDIT_GANTRY_THETA,92,262,40,14,ES_AUTOHSCROLL |
| | | RTEXT "[°]",IDC_STATIC,135,264,10,8 |
| | | LTEXT ": Motor",IDC_STATIC,82,166,24,8 |
| | | EDITTEXT IDC_EDIT_GANTRY_MOTOR_X,9,108,35,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_GANTRY_MOTOR_Y,45,108,35,14,ES_AUTOHSCROLL |
| | | LTEXT ": Pixel",IDC_STATIC,82,182,24,8 |
| | | EDITTEXT IDC_EDIT_GANTRY_PIXEL_X,9,124,35,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_GANTRY_PIXEL_Y,45,124,35,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_GANTRY_MOTOR_X2,9,164,35,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_GANTRY_MOTOR_Y2,45,164,35,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_GANTRY_PIXEL_X2,9,180,35,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_GANTRY_PIXEL_Y2,45,180,35,14,ES_AUTOHSCROLL |
| | | GROUPBOX "Measure Data",IDC_STATIC,7,7,327,278 |
| | | CTEXT "X",IDC_STATIC,22,98,8,8 |
| | | CTEXT "Y",IDC_STATIC,57,98,8,8 |
| | | CTEXT "X",IDC_STATIC,23,154,8,8 |
| | | CTEXT "Y",IDC_STATIC,58,154,8,8 |
| | | PUSHBUTTON "Simulation",IDC_BUTTON_SIMULATION2,11,18,50,14 |
| | | LTEXT ": Motor",IDC_STATIC,156,111,24,8 |
| | | LTEXT ": Pixel",IDC_STATIC,156,127,24,8 |
| | | CONTROL IDB_BITMAP_MARK,IDC_STATIC,"Static",SS_BITMAP,100,59,37,37 |
| | | EDITTEXT IDC_EDIT_GANTRY_MOTOR_X3,83,108,35,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_GANTRY_MOTOR_Y3,119,108,35,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_GANTRY_PIXEL_X3,83,124,35,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_GANTRY_PIXEL_Y3,119,124,35,14,ES_AUTOHSCROLL |
| | | CTEXT "X",IDC_STATIC,98,98,8,8 |
| | | CTEXT "Y",IDC_STATIC,132,98,8,8 |
| | | CONTROL IDB_BITMAP_MARK,IDC_STATIC,"Static",SS_BITMAP,199,58,37,37 |
| | | CONTROL IDB_BITMAP_MARK,IDC_STATIC,"Static",SS_BITMAP,199,196,37,37 |
| | | EDITTEXT IDC_EDIT_GANTRY_MOTOR_X4,183,107,35,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_GANTRY_MOTOR_Y4,219,107,35,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_GANTRY_PIXEL_X4,183,123,35,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_GANTRY_PIXEL_Y4,219,123,35,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_GANTRY_MOTOR_X5,183,163,35,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_GANTRY_MOTOR_Y5,219,163,35,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_GANTRY_PIXEL_X5,183,179,35,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_GANTRY_PIXEL_Y5,219,179,35,14,ES_AUTOHSCROLL |
| | | CTEXT "X",IDC_STATIC,196,97,8,8 |
| | | CTEXT "Y",IDC_STATIC,231,97,8,8 |
| | | CTEXT "X",IDC_STATIC,197,153,8,8 |
| | | CTEXT "Y",IDC_STATIC,232,153,8,8 |
| | | CONTROL IDB_BITMAP_MARK,IDC_STATIC,"Static",SS_BITMAP,274,58,37,37 |
| | | EDITTEXT IDC_EDIT_GANTRY_MOTOR_X6,257,107,35,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_GANTRY_MOTOR_Y6,293,107,35,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_GANTRY_PIXEL_X6,257,123,35,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_GANTRY_PIXEL_Y6,293,123,35,14,ES_AUTOHSCROLL |
| | | CTEXT "X",IDC_STATIC,272,97,8,8 |
| | | CTEXT "Y",IDC_STATIC,306,97,8,8 |
| | | GROUPBOX "Right Module",IDC_STATIC,180,36,153,202 |
| | | GROUPBOX "Left Module",IDC_STATIC,7,36,173,203 |
| | | LTEXT "Right Module Theta(θ) :",IDC_STATIC,186,264,78,8 |
| | | EDITTEXT IDC_EDIT_GANTRY_THETA2,264,262,40,14,ES_AUTOHSCROLL |
| | | RTEXT "[°]",IDC_STATIC,307,264,10,8 |
| | | LTEXT "First Setting Standard(θ) :",IDC_STATIC,18,247,83,8 |
| | | EDITTEXT IDC_EDIT_SQUARENESS_FIRSTSETTING,103,245,39,13,ES_AUTOHSCROLL |
| | | RTEXT "[°]",IDC_STATIC,145,247,10,8 |
| | | LTEXT "First Setting Standard(θ) :",IDC_STATIC,185,247,83,8 |
| | | EDITTEXT IDC_EDIT_SQUARENESS_FIRSTSETTING2,271,245,39,13,ES_AUTOHSCROLL |
| | | RTEXT "[°]",IDC_STATIC,313,247,10,8 |
| | | END |
| | | |
| | | IDD_DLG_SELF_DIAGNOSIS_FLATNESS DIALOGEX 0, 0, 435, 379 |
| | |
| | | GROUPBOX "ë©ë´ì¼ ì¡°ì",IDC_STATIC,18,21,80,40 |
| | | GROUPBOX "File History",IDC_STATIC,5,245,421,86 |
| | | LISTBOX IDC_LIST,10,257,413,69,LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP |
| | | GROUPBOX "Data",IDC_STATIC,11,127,409,116 |
| | | CONTROL "ã±",IDC_GRID_WSI_RESULT_DATA,"MFCGridCtrl",WS_TABSTOP,17,137,400,100 |
| | | GROUPBOX "Data",IDC_STATIC,172,16,248,227 |
| | | CONTROL "ã±",IDC_GRID_WSI_RESULT_DATA,"MFCGridCtrl",WS_TABSTOP,409,231,6,6 |
| | | LTEXT "Module 0",IDC_STATIC,37,80,30,8 |
| | | LTEXT "Module 1",IDC_STATIC,37,95,30,8 |
| | | LTEXT "ACC",IDC_STATIC,91,66,14,8 |
| | |
| | | EDITTEXT IDC_EDIT_WSI_RTB_00,122,77,40,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_WSI_ACC_01,76,95,40,14,ES_AUTOHSCROLL |
| | | 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,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 |
| | |
| | | LTEXT "íì¼ ìì¹ :",IDC_STATIC,18,36,31,8 |
| | | PUSHBUTTON "Save",IDC_BUTTON_SAVE,371,351,50,14 |
| | | PUSHBUTTON "Load",IDC_BUTTON_LOAD,320,351,50,14 |
| | | EDITTEXT IDC_EDIT_PANEL_COUNT_SQUARENESS,67,94,40,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_CAMERA_RESOLUTION,183,94,40,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_JUDGE_DATA_DEGREE,67,111,40,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_MODULE_COUNT,67,127,40,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_CAMERA_FRAME_WIDTH,183,111,40,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_CAMERA_FRAME_HEIGHT,183,127,40,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_PANEL_COUNT_SQUARENESS,67,81,40,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_CAMERA_RESOLUTION,183,81,40,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_JUDGE_DATA_DEGREE,67,97,40,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_MODULE_COUNT,67,113,40,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_CAMERA_FRAME_WIDTH,183,96,40,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_CAMERA_FRAME_HEIGHT,183,112,40,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_REVIEW_PANEL_POS_X,43,184,40,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_REVIEW_PANEL_POS_Y,85,184,40,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_REVIEW_PANEL_POS_X3,43,200,40,14,ES_AUTOHSCROLL |
| | |
| | | EDITTEXT IDC_EDIT_REVIEW_PANEL_POS_X6,151,216,40,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_REVIEW_PANEL_POS_Y6,193,216,40,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_PANEL_COUNT_WSI,330,94,40,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_JUDGE_DATA_3SIGMA,330,111,40,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_JUDGE_DATA_3SIGMA,330,113,40,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_WSI_PANEL_POS_X,294,181,40,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_WSI_PANEL_POS_Y,336,181,40,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_WSI_PANEL_POS_X2,294,197,40,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_WSI_PANEL_POS_Y2,336,197,40,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_AF_DELAY,67,268,40,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_JUDGE_DATA_Z_RANGE,67,284,40,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_GLASS_SIZE_X,183,268,40,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_GLASS_SIZE_Y,183,284,40,14,ES_AUTOHSCROLL |
| | | COMBOBOX IDC_COMBO_FLANTESS_MODE,67,308,48,62,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP |
| | | GROUPBOX "Setting",IDC_STATIC,7,60,414,282 |
| | | RTEXT "Resolution :",IDC_STATIC,143,96,39,8 |
| | | RTEXT "Panel Count :",IDC_STATIC,23,96,43,8 |
| | | RTEXT "Judge Data :",IDC_STATIC,26,114,40,10 |
| | | RTEXT "AF Delay :",IDC_STATIC,34,273,32,8 |
| | | RTEXT "Judge Data :\n(Z Range)",IDC_STATIC,24,287,42,21 |
| | | RTEXT "Mode :",IDC_STATIC,43,309,23,8 |
| | | RTEXT "Range Count :",IDC_STATIC,136,309,46,8 |
| | | RTEXT "GlassSizeX :",IDC_STATIC,146,273,36,8 |
| | | RTEXT "GlassSizeY :",IDC_STATIC,145,287,37,8 |
| | | EDITTEXT IDC_EDIT_AF_DELAY,67,275,40,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_JUDGE_DATA_Z_RANGE,67,291,40,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_GLASS_SIZE_X,183,275,40,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_GLASS_SIZE_Y,183,291,40,14,ES_AUTOHSCROLL |
| | | COMBOBOX IDC_COMBO_FLANTESS_MODE,67,315,48,62,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP |
| | | GROUPBOX "Setting",IDC_STATIC,7,67,414,282 |
| | | RTEXT "Resolution :",IDC_STATIC,143,84,39,8 |
| | | RTEXT "Panel Count :",IDC_STATIC,23,83,43,8 |
| | | RTEXT "Judge Data :",IDC_STATIC,26,101,40,10 |
| | | RTEXT "AF Delay :",IDC_STATIC,34,280,32,8 |
| | | RTEXT "Judge Data :\n(Z Range)",IDC_STATIC,24,294,42,21 |
| | | RTEXT "Mode :",IDC_STATIC,43,316,23,8 |
| | | RTEXT "Range Count :",IDC_STATIC,136,316,46,8 |
| | | RTEXT "GlassSizeX :",IDC_STATIC,146,280,36,8 |
| | | RTEXT "GlassSizeY :",IDC_STATIC,145,294,37,8 |
| | | RTEXT "Panel Count : ",IDC_STATIC,286,96,43,8 |
| | | RTEXT "Judge Data :\n(3sigma) ",IDC_STATIC,287,114,42,17 |
| | | GROUPBOX "ì§ê°ë",IDC_STATIC,15,83,233,166 |
| | | GROUPBOX "ííë",IDC_STATIC,15,253,233,80 |
| | | EDITTEXT IDC_EDIT_RANGE_COUNT_FLATNESS,183,308,40,14,ES_AUTOHSCROLL | WS_DISABLED |
| | | GROUPBOX "ì§ê°ë",IDC_STATIC,15,75,233,176 |
| | | GROUPBOX "ííë",IDC_STATIC,15,252,233,80 |
| | | EDITTEXT IDC_EDIT_RANGE_COUNT_FLATNESS,183,315,40,14,ES_AUTOHSCROLL | WS_DISABLED |
| | | GROUPBOX "WSI",IDC_STATIC,254,83,164,146 |
| | | RTEXT "Frame Width :",IDC_STATIC,135,114,47,8 |
| | | RTEXT "Frame Height :",IDC_STATIC,127,131,55,8 |
| | | RTEXT "Frame Width :",IDC_STATIC,135,99,47,8 |
| | | RTEXT "Frame Height :",IDC_STATIC,127,115,55,8 |
| | | RTEXT "[nm]",IDC_STATIC,372,114,16,8 |
| | | RTEXT "[um]",IDC_STATIC,226,97,16,8 |
| | | RTEXT "[um]",IDC_STATIC,226,81,16,8 |
| | | RTEXT "[px]",IDC_STATIC,226,99,14,8 |
| | | RTEXT "[px]",IDC_STATIC,226,114,14,8 |
| | | RTEXT "[px]",IDC_STATIC,226,129,14,8 |
| | | RTEXT "[°]",IDC_STATIC,109,114,10,8 |
| | | LTEXT "[ms]",IDC_STATIC,109,273,15,8 |
| | | LTEXT "[um]",IDC_STATIC,109,287,16,8 |
| | | LTEXT "[ea]",IDC_STATIC,226,311,14,8 |
| | | LTEXT "[mm]",IDC_STATIC,226,273,18,8 |
| | | LTEXT "[mm]",IDC_STATIC,226,287,18,8 |
| | | LTEXT "[ea]",IDC_STATIC,109,97,14,8 |
| | | RTEXT "[°]",IDC_STATIC,109,99,10,8 |
| | | LTEXT "[ms]",IDC_STATIC,109,280,15,8 |
| | | LTEXT "[um]",IDC_STATIC,109,294,16,8 |
| | | LTEXT "[ea]",IDC_STATIC,226,318,14,8 |
| | | LTEXT "[mm]",IDC_STATIC,226,280,18,8 |
| | | LTEXT "[mm]",IDC_STATIC,226,294,18,8 |
| | | LTEXT "[ea]",IDC_STATIC,109,84,14,8 |
| | | LTEXT "[ea]",IDC_STATIC,373,97,14,8 |
| | | RTEXT "ModuleCount :",IDC_STATIC,20,131,46,8 |
| | | RTEXT "ModuleCount :",IDC_STATIC,20,117,46,8 |
| | | CTEXT "Module1 Panel",IDC_STATIC,62,163,46,8 |
| | | GROUPBOX "Panel Motor Position",IDC_STATIC,22,148,218,94 |
| | | CTEXT "1",IDC_STATIC,34,186,8,8 |
| | |
| | | CTEXT "2",IDC_STATIC,284,200,8,8 |
| | | CTEXT "3",IDC_STATIC,34,219,8,8 |
| | | CTEXT "3",IDC_STATIC,141,219,8,8 |
| | | CONTROL "Use Skip Mode",IDC_CHECK_SELF_DIAGNOSIS_FLATNESS_SKIP, |
| | | "Button",BS_AUTOCHECKBOX | WS_TABSTOP,66,260,62,10 |
| | | LTEXT "Left Standard :",IDC_STATIC,17,133,49,9 |
| | | LTEXT "Standard :",IDC_STATIC,296,135,33,9 |
| | | EDITTEXT IDC_EDIT_SQUARENESS_STANDARD,67,130,40,14,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_WSI_STANDARD,330,132,40,14,ES_AUTOHSCROLL |
| | | RTEXT "[nm]",IDC_STATIC,372,134,16,8 |
| | | RTEXT "[°]",IDC_STATIC,108,133,10,8 |
| | | LTEXT "Right Standard :",IDC_STATIC,131,132,53,9 |
| | | EDITTEXT IDC_EDIT_SQUARENESS_STANDARD2,183,130,40,14,ES_AUTOHSCROLL |
| | | RTEXT "[°]",IDC_STATIC,226,132,10,8 |
| | | END |
| | | |
| | | IDD_DLG_TAB_DEFECT_INFO DIALOGEX 0, 0, 539, 282 |
| | |
| | | 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!")); |
| | |
| | | break; |
| | | case PCControlRecv_Autodiagnosis: |
| | | { |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[PCControl_Signal] Diagno start => %d"), bSignalOn); |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _START |
| | | CSignalControl* pSignalControl = m_pSP2P->ISP2P_GetSignalControl(); |
| | | CString strDiagnosisMode; |
| | | pSignalControl->ReadData(_T("11160"), 2, strDiagnosisMode); |
| | | int nDiagnosisMode = atoi(strDiagnosisMode); |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _END |
| | | |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[PCControl_Signal] Diagno start => %d, DiagnosisMode => %d"), bSignalOn, nDiagnosisMode); |
| | | if (bSignalOn) { |
| | | bResult = SendSignalToSignalControl(PCControlSendSignalIndex_DiagnoAck, 0); |
| | | |
| | | m_pSP2P->ISP2P_GetDlgDiagnosis()->ShowWindow(SW_SHOW); |
| | | |
| | | m_pSP2P->ISP2P_GetDiagnosisManager()->RecvSignalToSignalControl(0, 0); |
| | | m_pSP2P->ISP2P_GetDiagnosisManager()->RecvSignalToSignalControl(0, nDiagnosisMode); |
| | | } |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _END |
| | | else |
| | | bResult = SendSignalOffToSignalControl(PCControlSendSignalIndex_DiagnoAck, 0); |
| | | |
| | |
| | | #define IDC_BUTTON_UI_LEFT 1004 |
| | | #define IDC_CHECK_OFFSET_MODE 1004 |
| | | #define IDC_IMAGE_ROTATION 1004 |
| | | #define IDC_CHECK_SELF_DIAGNOSIS_FLATNESS_SKIP 1004 |
| | | #define IDC_SLIDER1 1005 |
| | | #define IDC_SLIDER_LIGHT_LEVEL 1005 |
| | | #define IDC_RADIO_MAP_TYPE_0 1005 |
| | |
| | | #define IDC_EDIT4 1088 |
| | | #define IDC_EDIT_PANEL_COUNT_SQUARENESS 1089 |
| | | #define IDC_EDIT_SCAN_COUNT 1089 |
| | | #define IDC_EDIT_WSI_HEIGHT4 1089 |
| | | #define IDC_BUTTON_GLASS_GO_XY 1090 |
| | | #define IDC_EDIT_REVIEW_CAMCOUNT 1090 |
| | | #define IDC_EDIT_WSI_HEIGHT5 1090 |
| | | #define IDC_BUTTON_TEST1 1091 |
| | | #define IDC_KEY_JOD_MOVE 1091 |
| | | #define IDC_EDIT_JUDGE_DATA_Z_RANGE 1091 |
| | | #define IDC_EDIT16 1091 |
| | | #define IDC_EDIT_SETTINGFILE_PATH 1091 |
| | | #define IDC_EDIT_WSI_HEIGHT6 1091 |
| | | #define IDC_BUTTON_GLASS_GO_XY3 1092 |
| | | #define IDC_BUTTON_TEST2 1092 |
| | | #define IDC_EDIT_XPOS_COUNT 1092 |
| | | #define IDC_EDIT_WSI_HEIGHT7 1092 |
| | | #define IDC_CHECK_AFM_TRACK 1093 |
| | | #define IDC_EDIT_RANGE_COUNT_FLATNESS 1093 |
| | | #define IDC_EDIT_WSI_HEIGHT8 1093 |
| | | #define IDC_BUTTON_GLASS_GO_XY2 1094 |
| | | #define IDC_BUTTON_GLASSCENTER_GO_XY 1094 |
| | | #define IDC_EDIT_GLASS_SIZE_X 1094 |
| | | #define IDC_EDIT_WSI_HEIGHT9 1094 |
| | | #define IDC_EDIT_GLASS_SIZE_Y 1095 |
| | | #define IDC_EDIT_WSI_HEIGHT10 1095 |
| | | #define IDC_EDIT_PANEL_COUNT_WSI 1096 |
| | | #define IDC_EDIT_WSI_HEIGHT14 1096 |
| | | #define IDC_EDIT_JUDGE_DATA_3SIGMA 1097 |
| | | #define IDC_EDIT_WSI_HEIGHT15 1097 |
| | | #define IDC_EDIT_WSI_PANEL_POS_X 1098 |
| | | #define IDC_EDIT_WSI_HEIGHT16 1098 |
| | | #define IDC_EDIT_WSI_PANEL_POS_Y 1099 |
| | | #define IDC_EDIT_WSI_HEIGHT17 1099 |
| | | #define IDC_STATIC_JOG_SPEED 1100 |
| | | #define IDC_EDIT_WSI_PANEL_POS_X2 1100 |
| | | #define IDC_EDIT_WSI_HEIGHT18 1100 |
| | | #define IDC_STATIC_LIGHT_LEVEL 1101 |
| | | #define IDC_EDIT_WSI_PANEL_POS_Y2 1101 |
| | | #define IDC_EDIT_WSI_HEIGHT19 1101 |
| | | #define IDC_EDIT_REVIEW_PANEL_POS_X 1102 |
| | | #define IDC_EDIT_WSI_HEIGHT20 1102 |
| | | #define IDC_EDIT_REVIEW_PANEL_POS_Y 1103 |
| | | #define IDC_RADIO_ZOOM_LEVEL_4 1104 |
| | | #define IDC_EDIT_REVIEW_PANEL_POS_X2 1104 |
| | |
| | | #define IDC_EDIT_GANTRY_THETA 1142 |
| | | #define IDC_GRID_GANTRY_DATA_HISTORY 1143 |
| | | #define IDC_EDIT_MODULE_COUNT 1144 |
| | | #define IDC_EDIT_GANTRY_THETA2 1144 |
| | | #define IDC_EDIT_GANTRY_MOTOR_X 1145 |
| | | #define IDC_GRID_WSI_RESULT_DATA 1145 |
| | | #define IDC_EDIT_GANTRY_MOTOR_Y 1146 |
| | |
| | | #define IDC_EDIT_GANTRY_PIXEL_Y3 1156 |
| | | #define IDC_EDIT_CHANGE_TARGET_XPOS 1156 |
| | | #define IDC_EDIT_CHANGE_TARGET_YPOS 1157 |
| | | #define IDC_EDIT_GANTRY_MOTOR_X4 1157 |
| | | #define IDC_BUTTON5 1158 |
| | | #define IDC_EDIT_GANTRY_MOTOR_Y4 1158 |
| | | #define IDC_EDIT_OFFSET_Y_VALUE 1159 |
| | | #define IDC_EDIT_GANTRY_PIXEL_X4 1159 |
| | | #define IDC_EDIT_CAMERA_COUNT 1160 |
| | | #define IDC_EDIT_GANTRY_PIXEL_Y4 1160 |
| | | #define IDC_PROGRESS_PROCESS 1161 |
| | | #define IDC_EDIT_GANTRY_MOTOR_X5 1161 |
| | | #define IDC_EDIT_MOTOR_XPOS 1162 |
| | | #define IDC_EDIT_GANTRY_MOTOR_Y5 1162 |
| | | #define IDC_EDIT_MOTOR_YPOS 1163 |
| | | #define IDC_EDIT_GANTRY_PIXEL_X5 1163 |
| | | #define IDC_BUTTON6 1164 |
| | | #define IDC_EDIT_GANTRY_PIXEL_Y5 1164 |
| | | #define IDC_TAB_HISTORY_CONTROL 1165 |
| | | #define IDC_EDIT_GANTRY_MOTOR_X6 1165 |
| | | #define IDC_LIST_HISTORY_DEFECT 1166 |
| | | #define IDC_EDIT_GANTRY_MOTOR_Y6 1166 |
| | | #define IDC_EDIT_GANTRY_PIXEL_X6 1167 |
| | | #define IDC_STATIC_MAP 1168 |
| | | #define IDC_EDIT_GANTRY_PIXEL_Y6 1168 |
| | | #define IDC_GRID_ALIGN_ORIGIN_INFO 1170 |
| | | #define IDC_GRID_ALIGN_HISTORY_INFO 1171 |
| | | #define IDC_ALIGN_GRID_ORIGIN_INFO 1173 |
| | | #define IDC_ALIGN_GRID_ALIGN_INFO 1174 |
| | | #define IDC_EDIT_SQUARENESS_STANDARD 1175 |
| | | #define IDC_EDIT_WSI_STANDARD 1176 |
| | | #define IDC_EDIT_SQUARENESS_FIRSTSETTING 1176 |
| | | #define IDC_EDIT_WSI_FIRST_STANDARD 1177 |
| | | #define IDC_EDIT_SQUARENESS_STANDARD2 1177 |
| | | #define IDC_EDIT_SQUARENESS_FIRSTSETTING2 1177 |
| | | #define IDC_EDIT_WSI_HEIGHT1 1178 |
| | | #define IDC_EDIT_WSI_HEIGHT2 1179 |
| | | #define IDC_EDIT_WSI_HEIGHT3 1180 |
| | | #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 1175 |
| | | #define _APS_NEXT_CONTROL_VALUE 1185 |
| | | #define _APS_NEXT_SYMED_VALUE 346 |
| | | #endif |
| | | #endif |
| | |
| | | |
| | | enum DiagnosisMode { |
| | | DiagnosisMode_All = 0, |
| | | DiagnosisMode_Squareness, |
| | | DiagnosisMode_Review, |
| | | DiagnosisMode_Wsi, |
| | | DiagnosisMode_Squareness, |
| | | DiagnosisMode_Flatness, |
| | | DiagnosisMode_Flatness_Manual, |
| | | DiagnosisMode_Simulation |
| | |
| | | virtual BOOL IDP2P_SetDlgFlatness(int nIndex) = 0; |
| | | virtual BOOL IDP2P_SetDialogTap(int nIndex) = 0; |
| | | virtual void IDP2P_UpdateDialog(int nIndex = -1) = 0; |
| | | |
| | | virtual BOOL IDP2P_CheckManualMode() = 0; |
| | | }; |
| | | |
| | | struct SPositionData |
| | |
| | | void SetHeight3Sigma(double dData) { m_dHeight3Sigma = dData; } |
| | | void SetACC(double dData) { m_dACC = dData; } |
| | | void SetRTB(double dData) { m_dRTB = dData; } |
| | | void SetDiagnosisHeight(double dData, int idx) { m_dDiagnosisHeight[idx] = dData; } |
| | | |
| | | // getter |
| | | int GetModuleIndex() const { return m_nModuleIndex; } |
| | |
| | | double GetHeight3Sigma() const { return m_dHeight3Sigma; } |
| | | double getWSI_ACC() const {return m_dACC;} |
| | | double getWSI_RTB() const { return m_dRTB; } |
| | | double GetDiagnosisHeight(int idx) const { return m_dDiagnosisHeight[idx]; } |
| | | |
| | | protected: |
| | | int m_nModuleIndex; |
| | | |
| | |
| | | double m_dHeight3Sigma; |
| | | double m_dACC; |
| | | double m_dRTB; |
| | | double m_dDiagnosisHeight[10]; |
| | | }; |
| | | typedef std::vector<CDiagnosisResult> VectorDiagnosisResult; |
| | | typedef std::vector<CDiagnosisResult>::iterator VectorDiagnosisResultIt; |
| | |
| | | m_dCameraResolution = 0.; |
| | | m_nPanelCount_Squareness = 0; |
| | | m_dJudgeData_Degree = 0.; |
| | | m_dSquarenessStandard = 0.; |
| | | |
| | | m_dataSettingResult_Flatness.Reset(); |
| | | m_nAFDelay = 0; |
| | |
| | | m_vecSettingResult_Wsi.clear(); |
| | | m_nPanelCount_Wsi = 0; |
| | | m_dJudgeData_3Sigma = 0.; |
| | | m_dWSIStandard = 0.; |
| | | |
| | | m_dPanelPosX = 0; |
| | | m_dPanelPosY = 0; |
| | |
| | | m_dReviewPanelPosY2 = 0; |
| | | m_dReviewPanelPosX4 = 0; |
| | | m_dReviewPanelPosY4 = 0; |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _START |
| | | m_nFlatnessSkipMode = 0; |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _END |
| | | |
| | | } |
| | | |
| | |
| | | void SetPanelCount_Wsi(int nCount) { m_nPanelCount_Wsi = nCount; } |
| | | void SetJudgeData_3Sigma(double dData) { m_dJudgeData_3Sigma = dData; } |
| | | |
| | | void GetPanelPosX_Wsi(double dData) { m_dPanelPosX = dData; } |
| | | void GetPanelPosY_Wsi(double dData) { m_dPanelPosY = dData; } |
| | | void GetPanelPosX2_Wsi(double dData) { m_dPanelPosX2 = dData; } |
| | | void GetPanelPosY2_Wsi(double dData) { m_dPanelPosY2 = dData; } |
| | | void SetPanelPosX_Wsi(double dData) { m_dPanelPosX = dData; } |
| | | void SetPanelPosY_Wsi(double dData) { m_dPanelPosY = dData; } |
| | | void SetPanelPosX2_Wsi(double dData) { m_dPanelPosX2 = dData; } |
| | | void SetPanelPosY2_Wsi(double dData) { m_dPanelPosY2 = dData; } |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _START |
| | | void SetFlastnessSkipMode(double dData) { m_nFlatnessSkipMode = dData; } |
| | | void SetSquarenessStandard(double dData) { m_dSquarenessStandard = dData; } |
| | | void SetSquarenessStandard2(double dData) { m_dSquarenessStandard2 = dData; } |
| | | void SetWSIStandard(double dData) { m_dWSIStandard = dData; } |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _END |
| | | |
| | | |
| | | // getter |
| | |
| | | double GetPanelPosY_Wsi() const { return m_dPanelPosY; } |
| | | double GetPanelPosX2_Wsi() const { return m_dPanelPosX2; } |
| | | double GetPanelPosY2_Wsi() const { return m_dPanelPosY2; } |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _START |
| | | int GetFlastnessSkipMode() const { return m_nFlatnessSkipMode; } |
| | | double GetSquarenessStandard() const { return m_dSquarenessStandard; } |
| | | double GetSquarenessStandard2() const { return m_dSquarenessStandard2; } |
| | | double GetWSIStandard() const { return m_dWSIStandard; } |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _END |
| | | //Review |
| | | public: |
| | | double GetReviewPanelPosX() const { return m_dReviewPanelPosX; } |
| | |
| | | int m_nCameraFrameHeight; |
| | | double m_dCameraResolution; |
| | | double m_dJudgeData_Degree; |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _START |
| | | double m_dSquarenessStandard; |
| | | double m_dSquarenessStandard2; |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _END |
| | | |
| | | // Flatness |
| | | CDiagnosisResult m_dataSettingResult_Flatness; // single data |
| | |
| | | int m_nRangeCount_Flatness; |
| | | int m_nGlassSizeX; |
| | | int m_nGlassSizeY; |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _START |
| | | int m_nFlatnessSkipMode; |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _END |
| | | |
| | | // wsi |
| | | VectorDiagnosisResult m_vecSettingResult_Wsi; // add module count |
| | | int m_nPanelCount_Wsi; |
| | | double m_dJudgeData_3Sigma; |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _START |
| | | double m_dWSIStandard; |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _END |
| | | |
| | | double m_dPanelPosX; |
| | | double m_dPanelPosY; |
| | |
| | | |
| | | BOOL MakeDirectory(CString strPath); |
| | | |
| | | BOOL CheckManualMode(); |
| | | |
| | | // setter |
| | | void SetExistStandardData(BOOL bExist = TRUE) { m_bExistStandardData = bExist; } |
| | | int SetDiagnosisResultCount_Squareness(int nCount); |
| | |
| | | int ProcessFlatness(); |
| | | int ProcessFlatness_Manual(); |
| | | int ProcessSimulation(); |
| | | int ProcessDiagnosisJudge(int nMode); |
| | | |
| | | BOOL CalculateSquareness(int nIndex); |
| | | protected: |