| | |
| | | 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; |
| | | |
| | |
| | | <ClCompile> |
| | | <Optimization>MaxSpeed</Optimization> |
| | | <IntrinsicFunctions>true</IntrinsicFunctions> |
| | | <AdditionalIncludeDirectories>$(MSBuildStartupDirectory)\Include;C:\Program Files\Basler\pylon 5\Development\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> |
| | | <AdditionalIncludeDirectories>$(MSBuildStartupDirectory)\Include;C:\Program Files\Basler\pylon 5\Development\include;C:\Program Files\Basler\pylon 4\pylon\include;C:\Program Files\Basler\pylon 4\genicam\library\cpp\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> |
| | | <PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;_AFXEXT;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
| | | <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> |
| | | <FunctionLevelLinking>true</FunctionLevelLinking> |
| | |
| | | <AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> |
| | | </ResourceCompile> |
| | | <Link> |
| | | <AdditionalLibraryDirectories>C:\Program Files\Basler\pylon 5\Development\lib\x64;$(MSBuildStartupDirectory)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> |
| | | <AdditionalLibraryDirectories>C:\Program Files\Basler\pylon 5\Development\lib\x64;$(MSBuildStartupDirectory)\lib;C:\Program Files\Basler\pylon 4\genicam\library\cpp\lib\win64_x64;C:\Program Files\Basler\pylon 4\pylon\lib\x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> |
| | | <ModuleDefinitionFile> |
| | | </ModuleDefinitionFile> |
| | | <GenerateDebugInformation>true</GenerateDebugInformation> |
| | |
| | | //SetHeartbeatTimeout(10000); // set heartbeat |
| | | //if (controlInfo.GetCameraReverseX() == TRUE)//210614���Ϸи� ������ ��� ���� |
| | | //{ |
| | | // m_pCamera->ReverseX = TRUE; |
| | | // //m_pCamera->ReverseX = TRUE; |
| | | // m_pCamera->ReverseX.SetValue(TRUE); |
| | | //} |
| | | //else |
| | | //{ |
| | | // m_pCamera->ReverseX = FALSE; |
| | | // //m_pCamera->ReverseX = FALSE; |
| | | // m_pCamera->ReverseX.SetValue(FALSE); |
| | | //} |
| | | |
| | | |
| | | m_pCamera->SetCameraContext(m_nTotalIndex);///m_nCameraIndex); // set context |
| | | |
| | | m_pCamera->MaxNumBuffer = m_nGrabCount; |
| | |
| | | if (!m_bGrabbing) return 1; |
| | | |
| | | nReturn = m_pXfer->Freeze(); |
| | | //#3477_210729_LYW_FrameLost_íì ì´ì¹_ADD_START |
| | | if (m_pXfer->Wait(1000) == TRUE) |
| | | { |
| | | |
| | | } |
| | | else |
| | | { |
| | | m_pXfer->Abort(); |
| | | } |
| | | //#3477_210729_LYW_FrameLost_íì ì´ì¹_ADD_END |
| | | |
| | | m_bGrabbing = m_pXfer->IsGrabbing(); |
| | | } |
| | |
| | | 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\ |
| | |
| | | CCHImageData tempImage; |
| | | CCHImageProcess::ImageNormalize(&resultImage, &m_BlobImage, 0, 255); |
| | | |
| | | //í
ì¤í¸ íì |
| | | if (findResult.dMatchValue<m_findParam.dMatchRate) |
| | | { |
| | | findResult.nResultCode = AlignMatch_LowScore; |
| | |
| | | |
| | | SReviewResult dataResult = vecSorterResult->at(nIndx); |
| | | |
| | | if(dataResult.nLocation != DefectLoc_ASG && dataResult.nLocation != DefectLoc_PAD && dataResult.nLocation != DefectLoc_C2C) continue; |
| | | //LYW 210810 DeleteStart |
| | | //if(dataResult.nLocation != DefectLoc_ASG && dataResult.nLocation != DefectLoc_PAD && dataResult.nLocation != DefectLoc_C2C) continue; |
| | | //LYW 210810 DeleteEnd |
| | | |
| | | dataResult.nResultIdx = index; |
| | | dataResult.nSequenceNo = index++; |
| | |
| | | |
| | | SReviewResult dataResult = vecSorterResult->at(nIndx); |
| | | |
| | | if(dataResult.nLocation == DefectLoc_ASG || dataResult.nLocation == DefectLoc_PAD || dataResult.nLocation == DefectLoc_C2C) continue; |
| | | //LYW 210810 DeleteStart |
| | | //if(dataResult.nLocation == DefectLoc_ASG || dataResult.nLocation == DefectLoc_PAD || dataResult.nLocation == DefectLoc_C2C) continue; |
| | | //LYW 210810 DeleteEnd |
| | | |
| | | dataResult.nResultIdx = index; |
| | | dataResult.nSequenceNo = index++; |
| | |
| | | m_vecWsiMultiShotScheduleResult.clear(); |
| | | |
| | | //FDCë³´ê³ ì© Review Contrast |
| | | nReview00ImageContrast = 0; |
| | | nReview01ImageContrast = 0; |
| | | //#3524_210723_LYW_CF AOI Review ëí¬ì»¤ì¤ ìë ì¶ê° ë° FDC ë³´ê³ ë°©ì ê°ì MOD Start |
| | | nReview00ImageContrast = 50; |
| | | nReview01ImageContrast = 50; |
| | | //#3524_210723_LYW_CF AOI Review ëí¬ì»¤ì¤ ìë ì¶ê° ë° FDC ë³´ê³ ë°©ì ê°ì MOD End |
| | | |
| | | // defect result |
| | | for (MapDefectResultIt it = m_mapDefectResult.begin(); it != m_mapDefectResult.end(); it++) |
| | |
| | | m_vecWsiMultiShotScheduleResult.clear(); |
| | | |
| | | //FDCë³´ê³ ì© Review Contrast |
| | | nReview00ImageContrast = -1; |
| | | nReview01ImageContrast = -1; |
| | | //#3524_210723_LYW_CF AOI Review ëí¬ì»¤ì¤ ìë ì¶ê° ë° FDC ë³´ê³ ë°©ì ê°ì MOD Start |
| | | nReview00ImageContrast = 50; |
| | | nReview01ImageContrast = 50; |
| | | //#3524_210723_LYW_CF AOI Review ëí¬ì»¤ì¤ ìë ì¶ê° ë° FDC ë³´ê³ ë°©ì ê°ì MOD End |
| | | //// defect result |
| | | //for (MapDefectResultIt it = m_mapDefectResult.begin(); it != m_mapDefectResult.end(); it++) |
| | | //{ |
| | |
| | | strItem.Format(_T("SYS_SIGNAL_PERIOD_TIME")); |
| | | macroFile.SetItem(strItem, m_SignalInfo.GetMSPeriod()); |
| | | |
| | | strItem.Format(_T("SYS_SIGNAL_DEFOCUS_VALUE_MIN")); |
| | | macroFile.SetItem(strItem, m_SignalInfo.GetDefocusValueMin()); |
| | | |
| | | strItem.Format(_T("SYS_SIGNAL_DEFOCUS_VALUE_MAX")); |
| | | macroFile.SetItem(strItem, m_SignalInfo.GetDefocusValueMax()); |
| | | |
| | | strItem.Format(_T("SYS_SIGNAL_LOADING_SIGNAL_DELAY")); |
| | | macroFile.SetItem(strItem, m_SignalInfo.GetMSLoadingSignalDelay()); |
| | | |
| | |
| | | macroFile.GetItem(strItem, nData); |
| | | m_SignalInfo.SetMSPeriod(nData); |
| | | |
| | | strItem.Format(_T("SYS_SIGNAL_DEFOCUS_VALUE_MIN")); |
| | | macroFile.GetItem(strItem, nData); |
| | | m_SignalInfo.SetDefocusValueMin(nData); |
| | | |
| | | strItem.Format(_T("SYS_SIGNAL_DEFOCUS_VALUE_MAX")); |
| | | macroFile.GetItem(strItem, nData); |
| | | m_SignalInfo.SetDefocusValueMax(nData); |
| | | |
| | | strItem.Format(_T("SYS_SIGNAL_LOADING_SIGNAL_DELAY")); |
| | | macroFile.GetItem(strItem, nData); |
| | | m_SignalInfo.SetMSLodingSignalDelay(nData); |
| | |
| | | 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 (1500 <= GetTickCount() - stTime) |
| | | { |
| | | break; |
| | | } |
| | |
| | | |
| | | } |
| | | m_pDP2P->IDP2P_SetAFMTracking(nSelModuleIndex, TRUE); |
| | | //#3514_LYW_CF AOI Review ìê°ì§ë¨ ê¸°ë¥ ê°ì _START |
| | | //Sleep(1000); |
| | | Sleep(1000); |
| | | //#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; |
| | |
| | | |
| | | for (int nIdx = 0; nIdx < nPanelCount; nIdx++) |
| | | { |
| | | const SPositionData* pSettingPos = pSettingResult->GetPositionData_Squareness(nIdx); |
| | | const SPositionData* pDataPos = pProcessResult->GetPositionData_Squareness(nIdx); |
| | | //LYW 210811 |
| | | const SPositionData* pSettingPos; |
| | | const SPositionData* pDataPos; |
| | | |
| | | if (nSelModuleIndex == 1) |
| | | { |
| | | pSettingPos = pSettingResult->GetPositionData_Squareness(nIdx); |
| | | pDataPos = pProcessResult->GetPositionData_Squareness(nIdx + 3); |
| | | } |
| | | else |
| | | { |
| | | pSettingPos = pSettingResult->GetPositionData_Squareness(nIdx); |
| | | pDataPos = pProcessResult->GetPositionData_Squareness(nIdx); |
| | | } |
| | | //LYW 210811 |
| | | if (pSettingPos == NULL || pDataPos == NULL) continue; |
| | | |
| | | dMotorPosX[nIdx] = pSettingPos->dPosX; |
| | |
| | | </ModuleDefinitionFile> |
| | | <AdditionalLibraryDirectories>../lib;../../Internal_Library/lib;</AdditionalLibraryDirectories> |
| | | <AdditionalDependencies>CHThreadPools_x64_vc15.lib</AdditionalDependencies> |
| | | <ImportLibrary>$(SolutionDir)\lib\$(TargetName).lib</ImportLibrary> |
| | | </Link> |
| | | <Midl> |
| | | <MkTypLibCompatible>false</MkTypLibCompatible> |
| | |
| | | |
| | | if(strArrayOption.GetSize() > 0) |
| | | { |
| | | strItemText = strArrayOption.GetAt(pRcpPriorityInfo->GetPriorityStackData()); |
| | | //LYW ERRìì |
| | | strItemText = strArrayOption.GetAt(pRcpPriorityInfo->GetPriorityGrayData()); |
| | | m_ctrlGridFilterinfo.SetItemText(nRowIdx, nColIdx++, strItemText); |
| | | } |
| | | } |
| | |
| | | |
| | | // ReviewRecipeEditorDlg.cpp : 구í íì¼ |
| | | // ReviewRecipeEditorDlg.cpp : ���� ���� |
| | | // |
| | | |
| | | #include "stdafx.h" |
| | |
| | | #endif |
| | | |
| | | |
| | | // CReviewRecipeEditorDlg ëí ìì |
| | | // CReviewRecipeEditorDlg ï¿½ï¿½È ï¿½ï¿½ï¿½ï¿½ |
| | | |
| | | CReviewRecipeEditorDlg::CReviewRecipeEditorDlg(CWnd* pParent /*=NULL*/) |
| | | : CDialog(CReviewRecipeEditorDlg::IDD, pParent) |
| | |
| | | END_MESSAGE_MAP() |
| | | |
| | | |
| | | // CReviewRecipeEditorDlg ë©ìì§ ì²ë¦¬ê¸° |
| | | // CReviewRecipeEditorDlg �޽��� ó���� |
| | | |
| | | BOOL CReviewRecipeEditorDlg::OnInitDialog() |
| | | { |
| | | CDialog::OnInitDialog(); |
| | | |
| | | // ì´ ëí ììì ìì´ì½ì ì¤ì í©ëë¤. ìì© íë¡ê·¸ë¨ì 주 ì°½ì´ ëí ììê° ìë ê²½ì°ìë |
| | | // íë ììí¬ê° ì´ ìì
ì ìëì¼ë¡ ìíí©ëë¤. |
| | | SetIcon(m_hIcon, TRUE); // í° ìì´ì½ì ì¤ì í©ëë¤. |
| | | SetIcon(m_hIcon, FALSE); // ìì ìì´ì½ì ì¤ì í©ëë¤. |
| | | // �� ï¿½ï¿½È ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ �������� �����մϴ�. ���� ���α׷��� �� � ï¿½ï¿½È ï¿½ï¿½ï¿½Ú°ï¿½ �ƴ� ��쿡�� |
| | | // �����ӿ�ũ�� �� �۾��� �ڵ����� �����մϴ�. |
| | | SetIcon(m_hIcon, TRUE); // ū �������� �����մϴ�. |
| | | SetIcon(m_hIcon, FALSE); // ���� �������� �����մϴ�. |
| | | |
| | | // TODO: ì¬ê¸°ì ì¶ê° ì´ê¸°í ìì
ì ì¶ê°í©ëë¤. |
| | | // TODO: ���⿡ �߰� ï¿½Ê±ï¿½È ï¿½Û¾ï¿½ï¿½ï¿½ �߰��մϴ�. |
| | | //m_bReviewSystemPC = IsReviewSystemPC(); |
| | | m_bReviewSystemPC = TRUE; |
| | | pReviewRecipeEditor = this; |
| | |
| | | InitRecipeListGridControl(); |
| | | RefreshRecipeList(); |
| | | |
| | | return TRUE; // í¬ì»¤ì¤ë¥¼ 컨í¸ë¡¤ì ì¤ì íì§ ìì¼ë©´ TRUE를 ë°íí©ëë¤. |
| | | return TRUE; // ��Ŀ���� ��Ʈ�ѿ� �������� ������ TRUE�� ��ȯ�մϴ�. |
| | | } |
| | | |
| | | // ëí ììì ìµìí ë¨ì¶ë¥¼ ì¶ê°í ê²½ì° ìì´ì½ì ê·¸ë¦¬ë ¤ë©´ |
| | | // ìë ì½ëê° íìí©ëë¤. 문ì/ë·° 모ë¸ì ì¬ì©íë MFC ìì© íë¡ê·¸ë¨ì ê²½ì°ìë |
| | | // íë ììí¬ìì ì´ ìì
ì ìëì¼ë¡ ìíí©ëë¤. |
| | | // ï¿½ï¿½È ï¿½ï¿½ï¿½Ú¿ï¿½ ï¿½Ö¼ï¿½È ï¿½ï¿½ï¿½ß¸ï¿½ �߰��� ��� �������� �׸����� |
| | | // �Ʒ� �ڵ尡 �ʿ��մϴ�. ����/�� ���� ����ϴ� MFC ���� ���α׷��� ��쿡�� |
| | | // �����ӿ�ũ���� �� �۾��� �ڵ����� �����մϴ�. |
| | | |
| | | void CReviewRecipeEditorDlg::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; |
| | | GetClientRect(&rect); |
| | | int x = (rect.Width() - cxIcon + 1) / 2; |
| | | int y = (rect.Height() - cyIcon + 1) / 2; |
| | | // ìì´ì½ì 그립ëë¤. |
| | | // �������� �׸��ϴ�. |
| | | dc.DrawIcon(x, y, m_hIcon); |
| | | } |
| | | else |
| | |
| | | } |
| | | } |
| | | |
| | | // ì¬ì©ìê° ìµìíë ì°½ì ëë ëìì 커ìê° íìëëë¡ ìì¤í
ìì |
| | | // ì´ í¨ì를 í¸ì¶í©ëë¤. |
| | | // ����ڰ� �ּ�È�� � ��� ���ȿ� Ŀ���� ǥ�õǵ��� �ý��ۿ��� |
| | | // �� �Լ��� ȣ���մϴ�. |
| | | HCURSOR CReviewRecipeEditorDlg::OnQueryDragIcon() |
| | | { |
| | | return static_cast<HCURSOR>(m_hIcon); |
| | |
| | | |
| | | void CReviewRecipeEditorDlg::OnBnClickedButtonReviewRcpEditorCreate() |
| | | { |
| | | // TODO: ì¬ê¸°ì 컨í¸ë¡¤ ì림 ì²ë¦¬ê¸° ì½ë를 ì¶ê°í©ëë¤. |
| | | // TODO: ���⿡ ��Ʈ�� �˸� ó���� �ڵ带 �߰��մϴ�. |
| | | BOOL bUseRecipeInfo = FALSE; |
| | | int nIdx; |
| | | CString strRecipeName, strNewRecipeName, strMessage; |
| | |
| | | if(cellID.row > 0 && cellID.col > 0) |
| | | { |
| | | strRecipeName = m_ctrlGridRecipeList.GetItemText(cellID.row, 1); |
| | | strMessage.Format(_T("Do you want to create new recipe using %s recipe information?"), strRecipeName);//_T("%s ë ìí¼ ì 보를 ì´ì©íì¬ ìì±íìê² ìµëê¹?"), strRecipeName); |
| | | strMessage.Format(_T("Do you want to create new recipe using %s recipe information?"), strRecipeName);//_T("%s ������ ������ �̿��Ͽ� �����Ͻðڽ��ϱ�?"), strRecipeName); |
| | | |
| | | //if (IDYES == AfxMessageBox(strMessage, MB_YESNO | MB_ICONQUESTION)) |
| | | //{ |
| | |
| | | if(nIdx != -1) |
| | | { |
| | | strTemp = strTemp.Mid(nIdx + 1); |
| | | strNewPath.Format(_T("\\\\%s\\C\\%s"), NETIP_A2E_REVIEW_SYSTEM, strTemp); |
| | | strNewPath.Format(_T("\\\\%s\\D\\%s"), NETIP_A2E_REVIEW_SYSTEM, strTemp); //210805 |
| | | } |
| | | else |
| | | { |
| | | strNewPath.Format(_T("\\\\%s\\C\\DIT_Review\\Recipe\\%s.rcp"), NETIP_A2E_REVIEW_SYSTEM, strNewRecipeName); |
| | | strNewPath.Format(_T("\\\\%s\\D\\DIT_Review\\Recipe\\%s.rcp"), NETIP_A2E_REVIEW_SYSTEM, strNewRecipeName); //210805 |
| | | } |
| | | } |
| | | |
| | |
| | | if(nIdx != -1) |
| | | { |
| | | strTemp = strTemp.Mid(nIdx + 1); |
| | | strSrcPath.Format(_T("\\\\%s\\C\\%s"), NETIP_A2E_REVIEW_SYSTEM, strTemp); |
| | | strSrcPath.Format(_T("\\\\%s\\D\\%s"), NETIP_A2E_REVIEW_SYSTEM, strTemp); //210805 |
| | | } |
| | | else |
| | | { |
| | | strSrcPath.Format(_T("\\\\%s\\C\\DIT_Review\\Recipe\\%s.rcp"), NETIP_A2E_REVIEW_SYSTEM, strRecipeName); |
| | | strSrcPath.Format(_T("\\\\%s\\D\\DIT_Review\\Recipe\\%s.rcp"), NETIP_A2E_REVIEW_SYSTEM, strRecipeName); //210805 |
| | | } |
| | | } |
| | | |
| | | if(CopyFile(strSrcPath, strNewPath, FALSE) == FALSE) |
| | | { |
| | | strMessage.Format(_T("Fail to create %s recipe"));//_T("%s ë ìí¼ ìì± ì¤í¨!")); |
| | | strMessage.Format(_T("Fail to create %s recipe"));//_T("%s ������ ���� ����!")); |
| | | AfxMessageBox(strMessage); |
| | | } |
| | | else |
| | | { |
| | | //LYW_#3344_CF AOI Review Config File ë°±ì
ê¸°ë¥ ê°ì ADD START |
| | | //LYW_#3344_CF AOI Review Config File ��� ��� ���� ADD START |
| | | CString strBackupPath = _REVIEW_RECIPE_BACKUP_PATH_CPJT; |
| | | CreateDirectory(strBackupPath, NULL); |
| | | |
| | |
| | | strSource.Format(_T("%s\\%s.rcp"), _REVIEW_RECIPE_PATH_, strNewRecipeName); |
| | | strDest.Format(_T("%s\\%s.rcp"), strBackupPath, strNewRecipeName); |
| | | CopyFile(strSource, strDest, TRUE); |
| | | //LYW_#3344_CF AOI Review Config File ë°±ì
ê¸°ë¥ ê°ì ADD END |
| | | //LYW_#3344_CF AOI Review Config File ��� ��� ���� ADD END |
| | | |
| | | // [2017:4:17]-[WEZASW] : CIM(Recipe) ë³´ê³ í목 ì¶ê°. |
| | | // [2017:4:17]-[WEZASW] : CIM(Recipe) ���� �׸� �߰�. |
| | | COPYDATA_RECIPE2REV copyData; |
| | | copyData.Message = MsgRecipe2Rev_RecipeCreate; |
| | | copyData.nPPID = _ttoi(strNewRecipeName); |
| | |
| | | |
| | | if(file.Open(strNewPath, CFile::modeCreate | CFile::modeWrite) == FALSE) |
| | | { |
| | | strMessage.Format(_T("Fail to create %s recipe"));//_T("%s ë ìí¼ ìì± ì¤í¨!")); |
| | | strMessage.Format(_T("Fail to create %s recipe"));//_T("%s ������ ���� ����!")); |
| | | AfxMessageBox(strMessage); |
| | | } |
| | | else |
| | | { |
| | | strMessage.Format(_T("Please select the default file!"));//_T("먼ì 기본 íì¼ì ì íí´ì£¼ì¸ì!")); |
| | | strMessage.Format(_T("Please select the default file!"));//_T("���� �⺻ ������ �������ּ���!")); |
| | | AfxMessageBox(strMessage); |
| | | } |
| | | |
| | |
| | | |
| | | void CReviewRecipeEditorDlg::OnBnClickedButtonReviewRcpEditorDelete() |
| | | { |
| | | // TODO: ì¬ê¸°ì 컨í¸ë¡¤ ì림 ì²ë¦¬ê¸° ì½ë를 ì¶ê°í©ëë¤. |
| | | // TODO: ���⿡ ��Ʈ�� �˸� ó���� �ڵ带 �߰��մϴ�. |
| | | int nIdx; |
| | | CString strRecipeName, strPath, strMessage, strTemp; |
| | | CCellID cellID = m_ctrlGridRecipeList.GetFocusCell(); |
| | |
| | | if (nIdx != -1) |
| | | { |
| | | strTemp = strTemp.Mid(nIdx + 1); |
| | | strPath.Format(_T("\\\\%s\\C\\%s"), NETIP_A2E_REVIEW_SYSTEM, strTemp); |
| | | strPath.Format(_T("\\\\%s\\D\\%s"), NETIP_A2E_REVIEW_SYSTEM, strTemp); //210805 |
| | | } |
| | | else |
| | | { |
| | | strPath.Format(_T("\\\\%s\\C\\DIT_Review\\Recipe\\%s.rcp"), NETIP_A2E_REVIEW_SYSTEM, strRecipeName); |
| | | strPath.Format(_T("\\\\%s\\D\\DIT_Review\\Recipe\\%s.rcp"), NETIP_A2E_REVIEW_SYSTEM, strRecipeName); //210805 |
| | | } |
| | | } |
| | | |
| | | //_T("%s ë ìí¼ë¥¼ ìì íìê² ìµëê¹?"), strRecipeName); |
| | | //_T("%s �����Ǹ� �����Ͻðڽ��ϱ�?"), strRecipeName); |
| | | strMessage.Format(_T("Do you want to delete %s recipe?"), strRecipeName); |
| | | |
| | | if (IDYES == AfxMessageBox(strMessage, MB_YESNO | MB_ICONQUESTION)) |
| | | { |
| | | // [2017:5:20]-[WEZASW] : íì¬ ì ì©ë Recipe(PPID)ë ìì ê¸ì§ ìì². |
| | | // [2017:5:20]-[WEZASW] : ���� ����� Recipe(PPID)�� ���� ���� ��û. |
| | | if (strRecipeName.Compare(m_strCurrentRecipeName) == 0) |
| | | { |
| | | strMessage.Format(_T("Currently applied Recipe(%s) can not be deleted!"), strRecipeName); |
| | |
| | | } |
| | | |
| | | DeleteFile(strPath); |
| | | //LYW_#3344_CF AOI Review Config File ë°±ì
ê¸°ë¥ ê°ì ADD START |
| | | //LYW_#3344_CF AOI Review Config File ��� ��� ���� ADD START |
| | | CString strBackupPath = _REVIEW_RECIPE_BACKUP_PATH_CPJT; |
| | | CString strDest; |
| | | |
| | | strDest.Format(_T("%s\\%s.rcp"), strBackupPath, strRecipeName); |
| | | DeleteFile(strDest); |
| | | //LYW_#3344_CF AOI Review Config File ë°±ì
ê¸°ë¥ ê°ì ADD END |
| | | //LYW_#3344_CF AOI Review Config File ��� ��� ���� ADD END |
| | | |
| | | |
| | | // [2017:4:17]-[WEZASW] : CIM(Recipe) ë³´ê³ í목 ì¶ê°. |
| | | // [2017:4:17]-[WEZASW] : CIM(Recipe) ���� �׸� �߰�. |
| | | COPYDATA_RECIPE2REV copyData; |
| | | copyData.Message = MsgRecipe2Rev_RecipeDelete; |
| | | copyData.nPPID = _ttoi(strRecipeName); |
| | |
| | | } |
| | | else |
| | | { |
| | | AfxMessageBox(_T("Please select recipe."));//_T("ë ìí¼ë¥¼ ì ííì¸ì.")); |
| | | AfxMessageBox(_T("Please select recipe."));//_T("�����Ǹ� �����ϼ���.")); |
| | | } |
| | | |
| | | RefreshRecipeList(); |
| | |
| | | |
| | | void CReviewRecipeEditorDlg::OnBnClickedButtonReviewRcpEditorLoad() |
| | | { |
| | | // TODO: ì¬ê¸°ì 컨í¸ë¡¤ ì림 ì²ë¦¬ê¸° ì½ë를 ì¶ê°í©ëë¤. |
| | | // TODO: ���⿡ ��Ʈ�� �˸� ó���� �ڵ带 �߰��մϴ�. |
| | | BOOL bReturn; |
| | | CString strRecipeName; |
| | | CCellID cellID = m_ctrlGridRecipeList.GetFocusCell(); |
| | |
| | | { |
| | | m_strCurrentRecipeName = strRecipeName; |
| | | |
| | | // [2017:4:17]-[WEZASW] : CIM(Recipe) ë³´ê³ í목 ì¶ê°. |
| | | // [2017:4:17]-[WEZASW] : CIM(Recipe) ���� �׸� �߰�. |
| | | COPYDATA_RECIPE2REV copyData; |
| | | copyData.Message = MsgRecipe2Rev_RecipeChange; |
| | | copyData.nPPID = _ttoi(m_strCurrentRecipeName); |
| | |
| | | } |
| | | else |
| | | { |
| | | AfxMessageBox(_T("Please select recipe."));//_T("ë ìí¼ë¥¼ ì ííì¸ì.")); |
| | | AfxMessageBox(_T("Please select recipe."));//_T("�����Ǹ� �����ϼ���.")); |
| | | } |
| | | } |
| | | |
| | |
| | | |
| | | if (bRet) |
| | | { |
| | | // [2017:4:17]-[WEZASW] : CIM(Recipe) ë³´ê³ í목 ì¶ê°. |
| | | // [2017:4:17]-[WEZASW] : CIM(Recipe) ���� �׸� �߰�. |
| | | COPYDATA_RECIPE2REV copyData; |
| | | copyData.Message = MsgRecipe2Rev_RecipeModify; |
| | | copyData.nPPID = _ttoi(RecipeName); |
| | |
| | | strDest.Format(_T("%s\\%s_%s.rcp"), strBackupPath, RecipeName, strBackupFile); |
| | | CopyFile(strSource, strDest, TRUE); |
| | | |
| | | //LYW_#3344_CF AOI Review Config File ë°±ì
ê¸°ë¥ ê°ì ADD START |
| | | //LYW_#3344_CF AOI Review Config File ��� ��� ���� ADD START |
| | | strBackupPath = _REVIEW_RECIPE_BACKUP_PATH_CPJT; |
| | | CreateDirectory(strBackupPath, NULL); |
| | | |
| | | strSource.Format(_T("%s\\%s.rcp"), _REVIEW_RECIPE_PATH_, RecipeName); |
| | | strDest.Format(_T("%s\\%s.rcp"), strBackupPath, RecipeName); |
| | | CopyFile(strSource, strDest, TRUE); |
| | | //LYW_#3344_CF AOI Review Config File ë°±ì
ê¸°ë¥ ê°ì ADD END |
| | | //LYW_#3344_CF AOI Review Config File ��� ��� ���� ADD END |
| | | |
| | | strMessage.Format(_T("Complete to save %s recipe!"), RecipeName); |
| | | //AfxMessageBox(strMessage); |
| | |
| | | |
| | | void CReviewRecipeEditorDlg::OnBnClickedButtonReviewRcpEditorSave() |
| | | { |
| | | // TODO: ì¬ê¸°ì 컨í¸ë¡¤ ì림 ì²ë¦¬ê¸° ì½ë를 ì¶ê°í©ëë¤. |
| | | // TODO: ���⿡ ��Ʈ�� �˸� ó���� �ڵ带 �߰��մϴ�. |
| | | CString strMessage; |
| | | |
| | | if (m_strCurrentRecipeName.IsEmpty()) |
| | |
| | | |
| | | if (bRet) |
| | | { |
| | | // [2017:4:17]-[WEZASW] : CIM(Recipe) ë³´ê³ í목 ì¶ê°. |
| | | // [2017:4:17]-[WEZASW] : CIM(Recipe) ���� �׸� �߰�. |
| | | COPYDATA_RECIPE2REV copyData; |
| | | copyData.Message = MsgRecipe2Rev_RecipeModify; |
| | | copyData.nPPID = _ttoi(m_strCurrentRecipeName); |
| | |
| | | strDest.Format(_T("%s\\%s_%s.rcp"), strBackupPath, m_strCurrentRecipeName, strBackupFile); |
| | | CopyFile(strSource, strDest, TRUE); |
| | | |
| | | //LYW_#3344_CF AOI Review Config File ë°±ì
ê¸°ë¥ ê°ì ADD START |
| | | //LYW_#3344_CF AOI Review Config File ��� ��� ���� ADD START |
| | | strBackupPath = _REVIEW_RECIPE_BACKUP_PATH_CPJT; |
| | | CreateDirectory(strBackupPath, NULL); |
| | | |
| | | strSource.Format(_T("%s\\%s.rcp"), _REVIEW_RECIPE_PATH_, m_strCurrentRecipeName); |
| | | strDest.Format(_T("%s\\%s.rcp"), strBackupPath, m_strCurrentRecipeName); |
| | | CopyFile(strSource, strDest, FALSE); |
| | | //LYW_#3344_CF AOI Review Config File ë°±ì
ê¸°ë¥ ê°ì ADD END |
| | | //LYW_#3344_CF AOI Review Config File ��� ��� ���� ADD END |
| | | |
| | | strMessage.Format(_T("Complete to save %s recipe!"), m_strCurrentRecipeName); |
| | | AfxMessageBox(strMessage); |
| | |
| | | |
| | | void CReviewRecipeEditorDlg::OnBnClickedButtonReviewrcpEditorExit() |
| | | { |
| | | // TODO: ì¬ê¸°ì 컨í¸ë¡¤ ì림 ì²ë¦¬ê¸° ì½ë를 ì¶ê°í©ëë¤. |
| | | // TODO: ���⿡ ��Ʈ�� �˸� ó���� �ڵ带 �߰��մϴ�. |
| | | DestroyWindow(); |
| | | } |
| | | |
| | |
| | | void CReviewRecipeEditorDlg::InitTabControl() |
| | | { |
| | | int nIdx = 0; |
| | | m_ctrlTabMain.InsertItem(nIdx++, _T("Common")); //_T(" ê³µíµ ")); |
| | | m_ctrlTabMain.InsertItem(nIdx++, _T("Review")); //_T(" 리뷰 ")); |
| | | m_ctrlTabMain.InsertItem(nIdx++, _T("Common")); //_T(" ���� ")); |
| | | m_ctrlTabMain.InsertItem(nIdx++, _T("Review")); //_T(" ���� ")); |
| | | m_ctrlTabMain.InsertItem(nIdx++, _T("WSI")); //_T(" WSI ")); |
| | | m_ctrlTabMain.InsertItem(nIdx++, _T("Align")); //_T(" ì¼ë¼ì¸ ")); |
| | | m_ctrlTabMain.InsertItem(nIdx++, _T("Judgement")); //_T(" íì ")); |
| | | m_ctrlTabMain.InsertItem(nIdx++, _T("Align")); //_T(" ����� ")); |
| | | m_ctrlTabMain.InsertItem(nIdx++, _T("Judgement")); //_T(" ���� ")); |
| | | |
| | | // 미ì¬ì©ì¼ë¡ ì ì¸ |
| | | // m_ctrlTabMain.InsertItem(nIdx++, _T("Measure")); //_T(" 측ì ")); |
| | | // m_ctrlTabMain.InsertItem(nIdx++, _T("Finding Defect")); //_T(" ê²°í¨ì°¾ê¸° ")); |
| | | // �̻������ ���� |
| | | // m_ctrlTabMain.InsertItem(nIdx++, _T("Measure")); //_T(" ���� ")); |
| | | // m_ctrlTabMain.InsertItem(nIdx++, _T("Finding Defect")); //_T(" ����� ")); |
| | | |
| | | //m_ctrlTabMain.InsertItem(nIdx++, _T("Glass")); //_T(" Glass Info ")); |
| | | } |
| | |
| | | Item.mask = GVIF_TEXT; |
| | | Item.row = nRowIdx; |
| | | Item.col = nColIdx++; |
| | | strTemp.Format(_T("Index"));//_T("ì¸ë±ì¤")); |
| | | strTemp.Format(_T("Index"));//_T("���")); |
| | | Item.strText = strTemp; |
| | | m_ctrlGridRecipeList.SetItem(&Item); |
| | | |
| | | Item.row = nRowIdx; |
| | | Item.col = nColIdx++; |
| | | strTemp.Format(_T("Recipe Name"));//_T("ë ìí¼ ì´ë¦")); |
| | | strTemp.Format(_T("Recipe Name"));//_T("������ �̸�")); |
| | | Item.strText = strTemp; |
| | | m_ctrlGridRecipeList.SetItem(&Item); |
| | | |
| | | Item.row = nRowIdx; |
| | | Item.col = nColIdx++; |
| | | strTemp.Format(_T("Last Modified Date"));//_T("ìµì¢
ìì ë ì§")); |
| | | strTemp.Format(_T("Last Modified Date"));//_T("���� ���� ��¥")); |
| | | Item.strText = strTemp; |
| | | m_ctrlGridRecipeList.SetItem(&Item); |
| | | } |
| | |
| | | |
| | | for(i = 0; i < nRecipeCount; i++) |
| | | { |
| | | //ë ìí¼ ì¸ë±ì¤ |
| | | //������ ��� |
| | | nColIdx = 0; |
| | | Item.mask = GVIF_TEXT; |
| | | Item.row = nRowIdx; |
| | |
| | | Item.strText = strTemp; |
| | | m_ctrlGridRecipeList.SetItem(&Item); |
| | | |
| | | //ë ìí¼ ì´ë¦ |
| | | //������ �̸� |
| | | nColIdx++; |
| | | strTemp = strArrayRecipeName.GetAt(i); |
| | | m_ctrlGridRecipeList.SetItemText(nRowIdx, nColIdx, strTemp); |
| | | m_ctrlGridRecipeList.SetItemState(nRowIdx, nColIdx, GVIS_READONLY); |
| | | |
| | | //ìµì¢
ìì ë ì§ |
| | | //���� ���� ��¥ |
| | | nColIdx++; |
| | | strTemp = strArrayLastWriteTime.GetAt(i); |
| | | m_ctrlGridRecipeList.SetItemText(nRowIdx, nColIdx, strTemp); |
| | |
| | | if(nIdx != -1) |
| | | { |
| | | strTemp = strTemp.Mid(nIdx + 1); |
| | | strSearchPath.Format(_T("\\\\%s\\C\\%s"), NETIP_A2E_REVIEW_SYSTEM, strTemp); |
| | | strSearchPath.Format(_T("\\\\%s\\D\\%s"), NETIP_A2E_REVIEW_SYSTEM, strTemp); |
| | | } |
| | | else |
| | | { |
| | | strSearchPath.Format(_T("\\\\%s\\C\\DIT_Review\\Recipe\\*.rcp"), NETIP_A2E_REVIEW_SYSTEM); |
| | | strSearchPath.Format(_T("\\\\%s\\D\\DIT_Review\\Recipe\\*.rcp"), NETIP_A2E_REVIEW_SYSTEM); //210805 |
| | | } |
| | | } |
| | | |
| | |
| | | if(nIdx != -1) |
| | | { |
| | | strTemp = strTemp.Mid(nIdx + 1); |
| | | strPath.Format(_T("\\\\%s\\C\\%s"), NETIP_A2E_REVIEW_SYSTEM, strTemp); |
| | | strPath.Format(_T("\\\\%s\\D\\%s"), NETIP_A2E_REVIEW_SYSTEM, strTemp); |
| | | } |
| | | else |
| | | { |
| | | strPath.Format(_T("\\\\%s\\C\\DIT_Review\\Recipe\\%s.rcp"), NETIP_A2E_REVIEW_SYSTEM, strRecipeName); |
| | | } |
| | | strPath.Format(_T("\\\\%s\\D\\DIT_Review\\Recipe\\%s.rcp"), NETIP_A2E_REVIEW_SYSTEM, strRecipeName);//210805 |
| | | } |
| | | } |
| | | |
| | | CMacroFile macroFile; |
| | |
| | | if(nIdx != -1) |
| | | { |
| | | strTemp = strTemp.Mid(nIdx + 1); |
| | | strPath.Format(_T("\\\\%s\\C\\%s"), NETIP_A2E_REVIEW_SYSTEM, strTemp); |
| | | strPath.Format(_T("\\\\%s\\D\\%s"), NETIP_A2E_REVIEW_SYSTEM, strTemp); |
| | | } |
| | | else |
| | | { |
| | | strPath.Format(_T("\\\\%s\\C\\DIT_Review\\Recipe\\%s.rcp"), NETIP_A2E_REVIEW_SYSTEM, strRecipeName); |
| | | strPath.Format(_T("\\\\%s\\D\\DIT_Review\\Recipe\\%s.rcp"), NETIP_A2E_REVIEW_SYSTEM, strRecipeName); //210805 |
| | | } |
| | | } |
| | | |
| | |
| | | if(nIdx != -1) |
| | | { |
| | | strTemp = strTemp.Mid(nIdx + 1); |
| | | strPath.Format(_T("\\\\%s\\C\\%s"), NETIP_A2E_REVIEW_SYSTEM, strTemp); |
| | | strPath.Format(_T("\\\\%s\\D\\%s"), NETIP_A2E_REVIEW_SYSTEM, strTemp); |
| | | } |
| | | else |
| | | { |
| | | strPath.Format(_T("\\\\%s\\C\\DIT_Review\\ReviewServerConfig\\SystemSetting.cfg"), NETIP_A2E_REVIEW_SYSTEM); |
| | | strPath.Format(_T("\\\\%s\\D\\DIT_Review\\ReviewServerConfig\\SystemSetting.cfg"), NETIP_A2E_REVIEW_SYSTEM); //210805 |
| | | } |
| | | } |
| | | |
| | |
| | | |
| | | void CReviewRecipeEditorDlg::OnTcnSelchangeTabReviewRcpEditorMainTab(NMHDR *pNMHDR, LRESULT *pResult) |
| | | { |
| | | // TODO: ì¬ê¸°ì 컨í¸ë¡¤ ì림 ì²ë¦¬ê¸° ì½ë를 ì¶ê°í©ëë¤. |
| | | // TODO: ���⿡ ��Ʈ�� �˸� ó���� �ڵ带 �߰��մϴ�. |
| | | RecipeMainTab nTabIdx; |
| | | |
| | | nTabIdx = (RecipeMainTab)m_ctrlTabMain.GetCurSel(); |
| | | |
| | | // [2017:1:25]-[WEZASW] : SystemMachine_B7E_WSI ì¤ë¹ ë¶ë¦¬(WSI ì /무) |
| | | // [2017:1:25]-[WEZASW] : SystemMachine_B7E_WSI ���� �и�(WSI ��/��) |
| | | switch(GetCurrentTapIndex(nTabIdx)) |
| | | { |
| | | case COMMON_TAB: |
| | |
| | | } |
| | | void CReviewRecipeEditorDlg::OnCancel() |
| | | { |
| | | // TODO: ì¬ê¸°ì í¹ìíë ì½ë를 ì¶ê° ë°/ëë 기본 í´ëì¤ë¥¼ í¸ì¶í©ëë¤. |
| | | //_T("ë ìí¼ ìëí° íë¡ê·¸ë¨ì ì¢
ë£íìê² ìµëê¹?"), MB_YESNO | MB_ICONQUESTION)) |
| | | // TODO: ���⿡ Ư��È�� �ڵ带 �߰� ��/�Ǵ� �⺻ Ŭ������ ȣ���մϴ�. |
| | | //_T("������ ������ ���α׷��� �����Ͻðڽ��ϱ�?"), MB_YESNO | MB_ICONQUESTION)) |
| | | if (IDNO == AfxMessageBox(_T("Do you want to exit recipe editor program?"), MB_YESNO | MB_ICONERROR)) |
| | | { |
| | | return; |
| | |
| | | |
| | | void CReviewRecipeEditorDlg::OnStnClickedStaticSelectRcipe() |
| | | { |
| | | // TODO: ì¬ê¸°ì 컨í¸ë¡¤ ì림 ì²ë¦¬ê¸° ì½ë를 ì¶ê°í©ëë¤. |
| | | // TODO: ���⿡ ��Ʈ�� �˸� ó���� �ڵ带 �߰��մϴ�. |
| | | } |
| | | |
| | | |
| | |
| | | } |
| | | else |
| | | { |
| | | AfxMessageBox(_T("Please select recipe."));//_T("ë ìí¼ë¥¼ ì ííì¸ì.")); |
| | | AfxMessageBox(_T("Please select recipe."));//_T("�����Ǹ� �����ϼ���.")); |
| | | } |
| | | |
| | | return bSuccess; |
| | |
| | | { |
| | | BOOL bSuccess = TRUE; |
| | | |
| | | // ì¤ë³µ Recipe ìì± ê¸ì§. |
| | | // �ߺ� Recipe ���� ����. |
| | | CFileFind finder; |
| | | CString strRecipeFile; |
| | | strRecipeFile.Format(_T("%s\\%s.rcp"), _REVIEW_RECIPE_PATH_, strRecipeName); |
| | |
| | | |
| | | // stdafx.h : ì주 ì¬ì©íì§ë§ ì주 ë³ê²½ëì§ë ìë |
| | | // íì¤ ìì¤í
í¬í¨ íì¼ ë° íë¡ì í¸ ê´ë ¨ í¬í¨ íì¼ì´ |
| | | // ë¤ì´ ìë í¬í¨ íì¼ì
ëë¤. |
| | | // stdafx.h : ���� ��������� ���� ��������� �ʴ� |
| | | // ǥ�� �ý��� ���� ���� �� ������Ʈ ���� ���� ������ |
| | | // ��� �ִ� ���� �����Դϴ�. |
| | | |
| | | #pragma once |
| | | |
| | |
| | | #endif |
| | | |
| | | #ifndef VC_EXTRALEAN |
| | | #define VC_EXTRALEAN // ê±°ì ì¬ì©ëì§ ìë ë´ì©ì Windows í¤ëìì ì ì¸í©ëë¤. |
| | | #define VC_EXTRALEAN // ���� ������ �ʴ� ������ Windows ������� �����մϴ�. |
| | | #endif |
| | | |
| | | #include "targetver.h" |
| | | |
| | | #define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // ì¼ë¶ CString ìì±ìë ëª
ìì ì¼ë¡ ì ì¸ë©ëë¤. |
| | | #define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // �Ϻ� CString �����ڴ� ��������� ����˴ϴ�. |
| | | |
| | | // MFCì ê³µíµ ë¶ë¶ê³¼ 무ì ê°ë¥í ê²½ê³ ë©ìì§ì ëí ì¨ê¸°ê¸°ë¥¼ í´ì í©ëë¤. |
| | | // MFC�� ���� �κа� ���� ������ ��� �޽����� ���� ����⸦ �����մϴ�. |
| | | #define _AFX_ALL_WARNINGS |
| | | |
| | | #include <afxwin.h> // MFC íµì¬ ë° íì¤ êµ¬ì± ììì
ëë¤. |
| | | #include <afxext.h> // MFC íì¥ì
ëë¤. |
| | | #include <afxwin.h> // MFC �ٽ� �� ǥ�� ���� ����Դϴ�. |
| | | #include <afxext.h> // MFC Ȯ���Դϴ�. |
| | | |
| | | #include <afxdisp.h> // MFC ìëí í´ëì¤ì
ëë¤. |
| | | #include <afxdisp.h> // MFC ï¿½Úµï¿½È Å¬ï¿½ï¿½ï¿½ï¿½ï¿½Ô´Ï´ï¿½. |
| | | |
| | | #ifndef _AFX_NO_OLE_SUPPORT |
| | | #include <afxdtctl.h> // Internet Explorer 4 ê³µì© ì»¨í¸ë¡¤ì ëí MFC ì§ìì
ëë¤. |
| | | #include <afxdtctl.h> // Internet Explorer 4 ���� ��Ʈ�ѿ� ���� MFC �����Դϴ�. |
| | | #endif |
| | | #ifndef _AFX_NO_AFXCMN_SUPPORT |
| | | #include <afxcmn.h> // Windows ê³µì© ì»¨í¸ë¡¤ì ëí MFC ì§ìì
ëë¤. |
| | | #include <afxcmn.h> // Windows ���� ��Ʈ�ѿ� ���� MFC �����Դϴ�. |
| | | #endif // _AFX_NO_AFXCMN_SUPPORT |
| | | |
| | | #include <afxcontrolbars.h> // MFCì 리본 ë° ì»¨í¸ë¡¤ ë§ë ì§ì |
| | | #include <afxcontrolbars.h> // MFC�� ���� �� ��Ʈ�� ���� ���� |
| | | #include <afxinet.h> |
| | | #include <afxcontrolbars.h> |
| | | |
| | | #define _REVIEW_BASE_PATH_ _T("C:\\DIT_Review") |
| | | #define _REVIEW_RECIPE_PATH_ _T("C:\\DIT_Review\\Recipe") |
| | | #define _REVIEW_RECIPE_BACKUP_PATH_ _T("C:\\DIT_Review\\Recipe\\Backup") |
| | | #define _REVIEW_RECIPE_LOGIN_LOG_PATH_ _T("C:\\DIT_Review\\Recipe\\LoginLog") |
| | | #define _REVIEW_SERVER_SYSTEM_SETTING_FILE_PATH_ _T("C:\\DIT_Review\\ReviewServerConfig\\SystemSetting.cfg") |
| | | //#define _REVIEW_BASE_PATH_ _T("C:\\DIT_Review") |
| | | //#define _REVIEW_RECIPE_PATH_ _T("C:\\DIT_Review\\Recipe") |
| | | //#define _REVIEW_RECIPE_BACKUP_PATH_ _T("C:\\DIT_Review\\Recipe\\Backup") |
| | | //#define _REVIEW_RECIPE_LOGIN_LOG_PATH_ _T("C:\\DIT_Review\\Recipe\\LoginLog") |
| | | //#define _REVIEW_SERVER_SYSTEM_SETTING_FILE_PATH_ _T("C:\\DIT_Review\\ReviewServerConfig\\SystemSetting.cfg") |
| | | #define _REVIEW_BASE_PATH_ _T("D:\\DIT_Review") //210805 |
| | | #define _REVIEW_RECIPE_PATH_ _T("D:\\DIT_Review\\Recipe") |
| | | #define _REVIEW_RECIPE_BACKUP_PATH_ _T("D:\\DIT_Review\\Recipe\\Backup") |
| | | #define _REVIEW_RECIPE_LOGIN_LOG_PATH_ _T("D:\\DIT_Review\\Recipe\\LoginLog") |
| | | #define _REVIEW_SERVER_SYSTEM_SETTING_FILE_PATH_ _T("D:\\DIT_Review\\ReviewServerConfig\\SystemSetting.cfg") |
| | | #define _REVIEW_RECIPE_BACKUP_PATH_CPJT _T("\\\\126.100.100.5\\d\\DIT Back up\\DIT Review\\Recipe") |
| | | #define _REVIEW_SERVER_SYSTEM_SETTING_BACKUP_PATH_CPJT _T("\\\\126.100.100.5\\d\\DIT Back up\\DIT Review\\ReviewServerConfig") |
| | | |
| | |
| | | |
| | | #define COPYDATA_RECIPEEDITOR2REVIEWSYSTEM 1600 |
| | | |
| | | // [2017:4:17]-[WEZASW] : CIM(Recipe) ë³´ê³ í목 ì¶ê°. |
| | | // [2017:4:17]-[WEZASW] : CIM(Recipe) ���� �׸� �߰�. |
| | | enum MsgRecipe2Rev |
| | | { |
| | | MsgRecipe2Rev_None = -1, |
| | | MsgRecipe2Rev_StandardCameraGlassPos, |
| | | MsgRev2Recipe_StandardCameraGlassPos, |
| | | MsgRecipe2Rev_RecipeCreate, // Recipe(PPID) ì¶ê° |
| | | MsgRecipe2Rev_RecipeCreate, // Recipe(PPID) �߰� |
| | | MsgRev2Recipe_RecipeCreate, |
| | | MsgRecipe2Rev_RecipeChange, // Recipe(PPID) ë³ê²½ |
| | | MsgRecipe2Rev_RecipeChange, // Recipe(PPID) ���� |
| | | MsgRev2Recipe_RecipeChange, |
| | | MsgRecipe2Rev_RecipeDelete, // Recipe(PPID) ìì |
| | | MsgRecipe2Rev_RecipeDelete, // Recipe(PPID) ���� |
| | | MsgRev2Recipe_RecipeDelete, |
| | | MsgRecipe2Rev_RecipeModify, // Recipe(PPID) Parameter ìì |
| | | MsgRecipe2Rev_RecipeModify, // Recipe(PPID) Parameter ���� |
| | | MsgRev2Recipe_RecipeModify |
| | | }; |
| | | |
| | |
| | | #include "CHReviewSetting/SystemInfo.h" |
| | | #include "CHReviewRecipe/RsRcpAlignInfo.h" |
| | | |
| | | #define ALIGN_TEMPLATE_PATH _T("C:\\DIT_Review\\Recipe\\AlignImage\\") |
| | | #define ALIGN_TEMPLATE_PATH _T("D:\\DIT_Review\\Recipe\\AlignImage\\") |
| | | //#define ALIGN_TEMPLATE_PATH _T("C:\\DIT_Review\\Recipe\\AlignImage\\") //210805 |
| | | |
| | | using namespace CHImageControls; |
| | | |
| | |
| | | CString strPath =m_pRCC2P->IRCC2P_GetTotalPitchImageName(); |
| | | |
| | | if(strPath == _T("")){ |
| | | strPath = _T("C:\\DIT_Review\\Recipe\\AlignImage\\ReviewAlign.bmp"); |
| | | strPath = _T("D:\\DIT_Review\\Recipe\\AlignImage\\ReviewAlign.bmp"); |
| | | //strPath = _T("C:\\DIT_Review\\Recipe\\AlignImage\\ReviewAlign.bmp"); //210805 |
| | | } |
| | | else |
| | | { |
| | | strPath = _T("C:\\DIT_Review\\Recipe\\AlignImage\\")+strPath; |
| | | strPath = _T("D:\\DIT_Review\\Recipe\\AlignImage\\") + strPath; |
| | | //strPath = _T("C:\\DIT_Review\\Recipe\\AlignImage\\")+strPath; //210805 |
| | | |
| | | } |
| | | |
| | |
| | | { |
| | | va_list list; |
| | | TCHAR strText[2000] = {0}; |
| | | try |
| | | { |
| | | va_start(list, lpstrFormat); |
| | | _vstprintf_s(strText, lpstrFormat, list); |
| | | va_end(list); |
| | | |
| | | va_start(list, lpstrFormat); |
| | | _vstprintf_s(strText, lpstrFormat, list); |
| | | va_end(list); |
| | | CString* pstrLog = new CString(strText); |
| | | PostThreadMessage(m_ThreadId, WM_DIPLAY_LOG, reinterpret_cast<WPARAM>(pstrLog), 0); |
| | | } |
| | | catch (...) |
| | | { |
| | | return; |
| | | } |
| | | |
| | | CString* pstrLog = new CString(strText); |
| | | PostThreadMessage(m_ThreadId, WM_DIPLAY_LOG, reinterpret_cast<WPARAM>(pstrLog), 0); |
| | | |
| | | // WriteToFile(strText); |
| | | // |
| | |
| | | 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) |
| | | { |
| | | m_pGlassRawInfo->m_nCommandIdxRead++;//���� ������ ��� �ϳ��� �����Ѵ�. [������ 2018/11/12] |
| | | m_pGlassRawInfo->m_nCommandIdxRead++; |
| | | } |
| | | |
| | | 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; |
| | | |
| | | |
| | | 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); |
| | | } |
| | | |
| | |
| | | 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--) |
| | | { |
| | |
| | | _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_nMoveAxis = MoveAxis_Center; |
| | | m_nGlassGridViewIndex = 0; |
| | | pDlgContol = NULL; |
| | | m_bAlignCamGrab = FALSE; |
| | | } |
| | | |
| | | #define ENABLE_RADIO_TIMER |
| | |
| | | ON_BN_CLICKED(IDC_BT_REVIEW_POPUP, &CDlgControl::OnBnClickedBtReviewPopup) |
| | | ON_BN_CLICKED(IDC_CHECK_USE_SIMULATION, &CDlgControl::OnBnClickedCheckUseSimulation) |
| | | ON_STN_DBLCLK(IDC_STATIC_MAGNIFICATION, &CDlgControl::OnDblclkStaticMagnification) |
| | | ON_BN_CLICKED(IDC_BUTTON_ALIGNCAM_GRAB, &CDlgControl::OnBnClickedButtonAligncamGrab) |
| | | END_MESSAGE_MAP() |
| | | |
| | | |
| | |
| | | m_ctrlButtonColorCtrl.addControl(IDC_BT_REVIEW_POPUP, this); |
| | | |
| | | m_ctrlButtonColorCtrl.addControl(IDC_CHECK_USE_SIMULATION, this); |
| | | //#3561 CF AOI Review Align ì¹´ë©ë¼ ëê¹ íì ì¡°ì¹ ADD START |
| | | m_ctrlButtonColorCtrl.addControl(IDC_BUTTON_ALIGNCAM_GRAB, this); |
| | | //#3561 CF AOI Review Align ì¹´ë©ë¼ ëê¹ íì ì¡°ì¹ ADD END |
| | | |
| | | |
| | | |
| | | |
| | |
| | | { |
| | | (GetDlgItem(IDC_CHECK_USE_SIMULATION))->ShowWindow(SW_SHOW); |
| | | } |
| | | } |
| | | } |
| | | |
| | | //#3561 CF AOI Review Align ì¹´ë©ë¼ ëê¹ íì ì¡°ì¹ ADD START |
| | | void CDlgControl::OnBnClickedButtonAligncamGrab() |
| | | { |
| | | CSequenceProcessor* pSequenceProcessor = m_pDC2P->IRP2P_GetSequenceProcessor(); |
| | | if (pSequenceProcessor == NULL) return; |
| | | if (m_bAlignCamGrab == FALSE) |
| | | { |
| | | pSequenceProcessor->AlignCamera_CameraControl(CameraControlLive); |
| | | m_bAlignCamGrab = TRUE; |
| | | } |
| | | else |
| | | { |
| | | pSequenceProcessor->AlignCamera_CameraControl(CameraControlStop); |
| | | m_bAlignCamGrab = FALSE; |
| | | } |
| | | |
| | | // TODO: ì¬ê¸°ì 컨í¸ë¡¤ ì림 ì²ë¦¬ê¸° ì½ë를 ì¶ê°í©ëë¤. |
| | | } |
| | | //#3561 CF AOI Review Align ì¹´ë©ë¼ ëê¹ íì ì¡°ì¹ ADD END |
| | |
| | | |
| | | |
| | | CFontStatic m_ctrlKeyMoveJog; |
| | | BOOL m_bAlignCamGrab; |
| | | |
| | | |
| | | double m_dGoPosX; |
| | |
| | | afx_msg void OnBnClickedBtReviewPopup(); |
| | | afx_msg void OnBnClickedCheckUseSimulation(); |
| | | afx_msg void OnDblclkStaticMagnification(); |
| | | afx_msg void OnBnClickedButtonAligncamGrab(); |
| | | }; |
| | |
| | | |
| | | bReturn = macroFile.Write(strFilePath); |
| | | |
| | | |
| | | // #3563 LYW_ CF AOI Review Offset íë¼ë¯¸í° ì ì¥ì ìë£ íì
ì¶ê° ADD START |
| | | CString strMessage; |
| | | strMessage.Format(_T("Save Offset Success!!")); |
| | | |
| | | if (IDOK == AfxMessageBox(strMessage, MB_OK | MB_ICONINFORMATION)) |
| | | { |
| | | g_pLog->DisplayMessage(_T("Save Offset Success!!")); |
| | | } |
| | | // #3563 LYW_ CF AOI Review Offset íë¼ë¯¸í° ì ì¥ì ìë£ íì
ì¶ê° ADD END |
| | | |
| | | return bReturn; |
| | | } |
| | | |
| | |
| | | //enum MotorOringTYPE { |
| | | // LEFT_Top = 0, RIGHT_TOP,LEFT_BOTTOM, RIGHT_BOTTOM |
| | | //}; |
| | | #define REVIEW_OFFSET_CONFIGFILE_PATH _T("C:\\DIT_Review\\ReviewServerConfig\\") |
| | | #define REVIEW_OFFSET_CONFIGFILE_PATH _T("D:\\DIT_Review\\ReviewServerConfig\\") //210805 |
| | | #define REVIEW_OFFSET_CONFIGFILE_NAME _T("ReviewOffSet.cfg") |
| | | #define REVIEW_OFFSET_CONFIGFILE_FULL_PATHNAME _T("C:\\DIT_Review\\ReviewServerConfig\\ReviewOffSet.cfg") |
| | | #define REVIEW_OFFSET_CONFIGFILE_FULL_PATHNAME _T("D:\\DIT_Review\\ReviewServerConfig\\ReviewOffSet.cfg") |
| | | #define REVIEW_OFFSET_BACKUP_FORDER_NAME _T("OffsetBackup") |
| | | #define REVIEW_OFFSET_BACKUP_FORDER_PATH _T("C:\\DIT_Review\\ReviewServerConfig\\OffsetBackup\\") |
| | | #define REVIEW_OFFSET_BACKUP_FORDER_PATH _T("D:\\DIT_Review\\ReviewServerConfig\\OffsetBackup\\") |
| | | |
| | | // CDlgDefocusList ëí ììì
ëë¤. |
| | | interface IDialogReviewOffSet2Parent |
| | |
| | | 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; |
| | | |
| | | }; |
| | |
| | | // |
| | | // CCommendParam *pParam = NULL; |
| | | // |
| | | // //FTPUpLoadì´ë©´ ë°í |
| | | // //FTPUpLoad�̸� ��ȯ |
| | | // if( bFTPUpload ) |
| | | // return FALSE; |
| | | // |
| | |
| | | if (NULL == hWnd) |
| | | { |
| | | g_pLog->DisplayMessage(_T("Find FTPUploader Program : Fail.")); |
| | | StartFTPUploader(_T("C:\\DIT_Review")); |
| | | |
| | | StartFTPUploader(_T("D:\\DIT_Review")); //210805 |
| | | } |
| | | else |
| | | { |
| | |
| | | else |
| | | { |
| | | g_pLog->DisplayMessage(_T("Send Data to FTPUploader : Fail.")); |
| | | RestartFTPUploader(_T("C:\\DIT_Review")); //A2E FTPUploader |
| | | RestartFTPUploader(_T("D:\\DIT_Review")); //A2E FTPUploader //210805 |
| | | bRet = FALSE; |
| | | } |
| | | } |
| | |
| | | ID_INDICATOR_SCRL, |
| | | }; |
| | | |
| | | // ì ì |
| | | |
| | | // CMainFrame ìì±/ì멸 |
| | | |
| | | CMainFrame::CMainFrame() |
| | |
| | | if (CFrameWndEx::OnCreate(lpCreateStruct) == -1) |
| | | return -1; |
| | | |
| | | SetUnhandledExceptionFilter(TopLevelExceptionFilterCallBack); |
| | | |
| | | ModifyStyle(WS_CAPTION, NULL); |
| | | |
| | | SetMenu(NULL); |
| | |
| | | |
| | | //LYW Align Reconnect |
| | | //ì
ë°ì´í¸ì |
| | | //system("netsh interface set interface name = \"Align #1\" admin = disable&& netsh interface set interface name = \"Align #1\" admin = enable&& netsh interface set interface name = \"Align #2\" admin = disable&& netsh interface set interface name = \"Align #2\" admin = enable"); |
| | | //Sleep(2000); |
| | | system("netsh interface set interface name = \"Align #1\" admin = disable&& netsh interface set interface name = \"Align #1\" admin = enable&& netsh interface set interface name = \"Align #2\" admin = disable&& netsh interface set interface name = \"Align #2\" admin = enable"); |
| | | Sleep(2000); |
| | | |
| | | // SetTimer(ID_TIMER_WSI_LONGRUN_TEST_TIME, 10000, NULL); |
| | | |
| | |
| | | #define strScript "RESTART^AFControl.exe^C:\\AFControl\\program\\AFControl.exe" |
| | | |
| | | CFile file; |
| | | if( FALSE == file.Open(_T("C:\\DIT_Review\\MakeScript.TSF"),CFile::modeCreate | CFile::modeWrite) ) |
| | | if( FALSE == file.Open(_T("D:\\DIT_Review\\MakeScript.TSF"),CFile::modeCreate | CFile::modeWrite) ) //210805 |
| | | { |
| | | g_pLog->DisplayMessage(_T("File[C:\\DIT_Review\\MakeScript.TSF] Create Fail!!")); |
| | | g_pLog->DisplayMessage(_T("File[D:\\DIT_Review\\MakeScript.TSF] Create Fail!!")); //210805 |
| | | return; |
| | | } |
| | | |
| | |
| | | CString strTarget; |
| | | strTarget.Format(_T("\\\\126.100.100.220\\c\\RemoteTaskMgr\\T\\CopyScript.TSF")); |
| | | |
| | | BOOL bRet = CopyFile(_T("C:\\DIT_Review\\MakeScript.TSF"),strTarget,FALSE); |
| | | BOOL bRet = CopyFile(_T("D:\\DIT_Review\\MakeScript.TSF"),strTarget,FALSE); //210805 |
| | | if(bRet == FALSE) |
| | | g_pLog->DisplayMessage(_T("[%s]Send Script Fail!"), strTarget); |
| | | ///////////////////////////////////// |
| | |
| | | return TRUE; |
| | | } |
| | | return FALSE; |
| | | } |
| | | } |
| | | |
| | |
| | | |
| | | #include "stdafx.h" |
| | | |
| | | |
| | | class CMainFrame : public CFrameWndEx, public CReviewInterface |
| | | { |
| | | |
| | |
| | | m_bIsOffSetOn = 0; |
| | | m_bIsSimulation = 0; |
| | | |
| | | m_bFirstReviewLeft = 0; |
| | | m_bFirstReviewRight = 0; |
| | | |
| | | // cs init |
| | | InitializeCriticalSection(&m_csReviewResult); |
| | | InitializeCriticalSection(&m_csReviewSignal); |
| | |
| | | // process status observer |
| | | AddObserverUpdateProcessStatus(static_cast<IUpdateProcessStatus*>(m_pAlignCameraControl)); |
| | | |
| | | m_pAlignCameraControl->Camera_Control(CameraControlLive); |
| | | /*m_pAlignCameraControl->Camera_Control(CameraControlLive);*/ // 210805 Align Camera Sequence ë³ê²½ |
| | | } |
| | | else |
| | | { |
| | |
| | | |
| | | 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_pDoc->System_GetSystemInfo(); |
| | | } |
| | | |
| | | const CSignalControlInfo* CReviewInterface::IRP2P_GetReviewSignalinfo() |
| | | { |
| | | if (m_pDoc == NULL) return NULL; |
| | | return m_pDoc->System_GetSignalInfo(); |
| | | } |
| | | |
| | | CGlassResult* CReviewInterface::IRP2P_GetCurrentGlassResult() |
| | | { |
| | | if (m_pDoc==NULL) return NULL; |
| | |
| | | |
| | | void CReviewInterface::IRP2P_DisplayMessage(const TCHAR* lpstrFormat, ...) |
| | | { |
| | | va_list list; |
| | | TCHAR strText[2000] = {0}; |
| | | try |
| | | { |
| | | va_list list; |
| | | TCHAR strText[2000] = { 0 }; |
| | | |
| | | va_start(list, lpstrFormat); |
| | | _vstprintf_s(strText, lpstrFormat, list); |
| | | va_end(list); |
| | | va_start(list, lpstrFormat); |
| | | _vstprintf_s(strText, lpstrFormat, list); |
| | | va_end(list); |
| | | |
| | | g_pLog->DisplayMessage(strText); |
| | | g_pLog->DisplayMessage(strText); |
| | | } |
| | | |
| | | catch (...) |
| | | { |
| | | return ; |
| | | } |
| | | |
| | | } |
| | | |
| | | CResultServerControl* CReviewInterface::IRP2P_GetResultServerControl() |
| | |
| | | CRecipeManager* CReviewInterface::IRP2P_GetEdgeRecipeManager() |
| | | { |
| | | 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; |
| | | } |
| | | |
| | | |
| | |
| | | |
| | | 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) |
| | |
| | | { |
| | | if (m_pSequenceProcessor==NULL) return; |
| | | |
| | | //#3584 210817 LYW CF AOI Review ì뮬ë ì´ì
ê¸°ë¥ ì ìí ADD START |
| | | m_pSequenceProcessor->SetSimulationMode(TRUE); |
| | | //#3584 210817 LYW CF AOI Review ì뮬ë ì´ì
ê¸°ë¥ ì ìí ADD END |
| | | |
| | | if (nCommand == -1) // DBClick Date |
| | | { |
| | | |
| | |
| | | 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_UpdateCameraControl(int nModuleIdx, const SCameraControl *pCameraControl, const SCameraInfo* pCameraInfo); |
| | | virtual const CRsRcpReviewInfo* IRP2P_Recipe_GetRsRcpReviewInfo(); |
| | | virtual const CSystemInfo* IRP2P_GetReviewSysteminfo(); |
| | | virtual const CSignalControlInfo* IRP2P_GetReviewSignalinfo(); |
| | | virtual CGlassResult* IRP2P_GetCurrentGlassResult(); |
| | | virtual void IRP2P_DisplayMessage(const TCHAR* lpstrFormat, ...); |
| | | virtual CResultServerControl* IRP2P_GetResultServerControl(); |
| | |
| | | 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 const CRsRcpReviewInfo* IRP2P_Recipe_GetRsRcpReviewInfo() = 0; |
| | | virtual const CSystemInfo* IRP2P_GetReviewSysteminfo() = 0; |
| | | virtual const CSignalControlInfo* IRP2P_GetReviewSignalinfo() = 0; |
| | | virtual CGlassResult* IRP2P_GetCurrentGlassResult() = 0; |
| | | virtual void IRP2P_DisplayMessage(const TCHAR* lpstrFormat, ...) = 0; |
| | | virtual CResultServerControl* IRP2P_GetResultServerControl() = 0; |
| | |
| | | |
| | | 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; |
| | |
| | | #include "CameraControlReview.h" |
| | | #include "CHImageControls/CHImageProcess.h" |
| | | #include "CHMotorControls/MotorControl.h" |
| | | #include "CHSignalControls/SignalControl.h" |
| | | |
| | | #include "CHEdgeTriangle/EdgeTriangle.h" |
| | | #include "CHEdgeTriangle/RecipeManager.h" |
| | |
| | | int nEndResultIdx = pReviewResult->GetEndSReviewResultIndex(); |
| | | |
| | | |
| | | // �ε����� ���� ������ �ε��� ���� Ŭ��.. |
| | | if (nCurResultIdx > nEndResultIdx) |
| | | { |
| | | LeaveCriticalSection(&m_csUserCriticalSection); |
| | |
| | | g_pLog->DisplayMessage(_T("[ReviewProcessor]SetWsiResultData module[%d] point[%d] result[%d]"), nModuleIndex, measureResut.nResultIndex, nCurResultIdx); |
| | | } |
| | | |
| | | |
| | | // ���� ��������� ���� |
| | | |
| | | wsiResult.nWsi_ResultIndex = measureResut.nResultIndex; |
| | | wsiResult.nResultCode = measureResut.nResultCode; |
| | |
| | | // g_pLog->DisplayMessage(_T("[ReviewProcessor]JugementR [%d] JugementG [%d] JugementB [%d]"), wsiResult.nJugementR, wsiResult.nJugementG, wsiResult.nJugementB); |
| | | // g_pLog->DisplayMessage(_T("[ReviewProcessor]RZoneHeight [%.03lf] GZoneHeight [%.03lf] BZoneHeight [%.03lf]"), wsiResult.dRZoneHeight, wsiResult.dGZoneHeight, wsiResult.dBZoneHeight); |
| | | |
| | | // wsiResult.�߰� �ϼ���= measureResut.nMultiShot; |
| | | // wsiResult.�߰� �ϼ���= measureResut.nCurrentShotNumber; |
| | | break; |
| | | case 3: //BANK |
| | | wsiResult.dRZoneHeight = measureResut.dRZoneHeight; |
| | |
| | | wsiResult.dBZoneHeight = measureResut.dBZoneHeight; |
| | | wsiResult.dDefectHeight = measureResut.dDefectHeight; |
| | | wsiResult.nWsi_DefectType = measureResut.nDefectType; |
| | | // wsiResult.�߰� �ϼ���= measureResut.nMultiShot; |
| | | // wsiResult.�߰� �ϼ���= measureResut.nCurrentShotNumber; |
| | | |
| | | break; |
| | | case 4: //CS |
| | | wsiResult.dCSHeight = measureResut.dCSHeight; |
| | | wsiResult.dDefectHeight = measureResut.dDefectHeight; |
| | | wsiResult.nWsi_DefectType = measureResut.nDefectType; |
| | | // wsiResult.�߰� �ϼ���= measureResut.nMultiShot; |
| | | |
| | | break; |
| | | } |
| | | |
| | |
| | | |
| | | memcpy(wsiResult.pWsi_ResultData, measureResut.pResultData, sizeof(wsiResult.pWsi_ResultData)); |
| | | |
| | | |
| | | // ��� ������ �߰� |
| | | SReviewResult *pProcessResult = NULL; |
| | | if (pGlassResult->SetWsiResultData(nModuleIndex, nCurResultIdx, wsiResult, nGlassPosX, nGlassPosY, nMotorPosX, nMotorPosY, dTime)) |
| | | { |
| | |
| | | pProcessResult = pReviewResult->GetSReviewResult(nCurResultIdx); |
| | | } |
| | | |
| | | // ���� ������, ���� ������� ������ ���� |
| | | if (pProcessResult) |
| | | { |
| | | // ó�� ������ ���� |
| | | if (AddReviewProcessData(pProcessResult)==1) |
| | | { |
| | | g_pLog->DisplayMessage(_T("[ReviewProcessor]Add Process Data module[%d] result[%d]"), nModuleIndex, nCurResultIdx); |
| | |
| | | |
| | | LeaveCriticalSection(&m_csUserCriticalSection); |
| | | |
| | | // ��� ����. |
| | | m_pRP2P->IRP2P_UpdateReviewResult(nModuleIndex, pGlassResult); |
| | | return; |
| | | |
| | |
| | | int nEndResultIdx = pReviewResult->GetEndSReviewResultIndex(); |
| | | |
| | | |
| | | // �ε����� ���� ������ �ε��� ���� Ŭ��.. |
| | | if (nCurResultIdx > nEndResultIdx) |
| | | { |
| | | LeaveCriticalSection(&m_csUserCriticalSection); |
| | |
| | | g_pLog->DisplayMessage(_T("[ReviewProcessor]SetWsiResultData module[%d] point[%d] result[%d]"), nModuleIndex, measureResut.nResultIndex, nCurResultIdx); |
| | | } |
| | | |
| | | // ���� ��������� ���� |
| | | wsiUserResult.nWsi_ResultCode = measureResut.nResultCode; |
| | | wsiUserResult.nWsi_Type = measureResut.nResultType; |
| | | wsiUserResult.nWsi_SlopeWarn = measureResut.nXSlopeWarn; |
| | | memcpy(wsiUserResult.pWsi_ResultData, measureResut.pResultData, sizeof(wsiUserResult.pWsi_ResultData)); |
| | | |
| | | |
| | | // ��� ������ �߰� |
| | | SReviewResult *pProcessResult = NULL; |
| | | if (pGlassResult->SetUserWsiResultData(nModuleIndex, nCurResultIdx, wsiUserResult, nGlassPosX, nGlassPosY, nMotorPosX, nMotorPosY, dTime)) |
| | | { |
| | |
| | | pProcessResult = pReviewResult->GetSReviewResult(nCurResultIdx); |
| | | } |
| | | |
| | | // ���� ������, ���� ������� ������ ���� |
| | | if (pProcessResult) |
| | | { |
| | | // ó�� ������ ���� |
| | | if (AddReviewProcessData(pProcessResult)==1) |
| | | { |
| | | g_pLog->DisplayMessage(_T("[ReviewProcessor]Add Process Data module[%d] result[%d]"), nModuleIndex, nCurResultIdx); |
| | |
| | | |
| | | LeaveCriticalSection(&m_csUserCriticalSection); |
| | | |
| | | // ��� ����. |
| | | m_pRP2P->IRP2P_UpdateReviewResult(nModuleIndex, pGlassResult); |
| | | return; |
| | | |
| | |
| | | int nEndResultIdx = pReviewResult->GetEndSReviewResultIndex(); |
| | | |
| | | |
| | | // �ε����� ���� ������ �ε��� ���� Ŭ��.. |
| | | if (nCurResultIdx > nEndResultIdx) |
| | | { |
| | | LeaveCriticalSection(&m_csUserCriticalSection); |
| | |
| | | g_pLog->DisplayMessage(_T("[ReviewProcessor]SetWsiMultiShotResultData module[%d] point[%d] result[%d]"), nModuleIndex, measureResut.nResultIndex, nCurResultIdx); |
| | | } |
| | | |
| | | // ���� ��������� ���� |
| | | wsiResult.nWsi_ResultCode = measureResut.nResultCode; |
| | | wsiResult.nWsi_Type = measureResut.nResultType; |
| | | wsiResult.nWsi_SlopeWarn = measureResut.nXSlopeWarn; |
| | |
| | | memcpy(wsiResult.pWsi_ResultData, measureResut.pResultData, sizeof(wsiResult.pWsi_ResultData)); |
| | | |
| | | |
| | | // ��� ������ �߰� |
| | | SReviewResult *pProcessResult = NULL; |
| | | if (pGlassResult->SetWsiResultData(nModuleIndex, nCurResultIdx, wsiResult, nGlassPosX, nGlassPosY, nMotorPosX, nMotorPosY, dTime)) |
| | | { |
| | |
| | | pProcessResult = pReviewResult->GetSReviewResult(nCurResultIdx); |
| | | } |
| | | |
| | | // ���� ������, ���� ������� ������ ���� |
| | | if (pProcessResult) |
| | | { |
| | | // ó�� ������ ���� |
| | | if (AddReviewProcessData(pProcessResult) == 1) |
| | | { |
| | | g_pLog->DisplayMessage(_T("[ReviewProcessor]Add Process Data module[%d] result[%d]"), nModuleIndex, nCurResultIdx); |
| | |
| | | } |
| | | |
| | | LeaveCriticalSection(&m_csUserCriticalSection); |
| | | |
| | | // ��� ����. |
| | | m_pRP2P->IRP2P_UpdateReviewResult(nModuleIndex, pGlassResult); |
| | | return; |
| | | |
| | |
| | | int nStartResultIdx = pReviewResult->GetStartSReviewResultIndex(); |
| | | int nEndResultIdx = pReviewResult->GetEndSReviewResultIndex(); |
| | | |
| | | // �ε����� ���� ������ �ε��� ���� Ŭ��.. |
| | | if (nCurResultIdx > nEndResultIdx) |
| | | { |
| | | LeaveCriticalSection(&m_csUserCriticalSection); |
| | |
| | | g_pLog->DisplayMessage(_T("[ReviewProcessor]SetReviewResultData module[%d] point[%d] result[%d]"), nModuleIndex, nResultIndex, nCurResultIdx); |
| | | } |
| | | |
| | | // ���� ����̹��� ���� |
| | | SReviewResult *pProcessResult = NULL; |
| | | switch(GetReviewProcessStatus()) |
| | | { |
| | |
| | | break; |
| | | } |
| | | |
| | | // ���� ������, ���� ������� ������ ���� |
| | | if (pProcessResult) |
| | | { |
| | | // ó�� ������ ���� |
| | | if (AddReviewProcessData(pProcessResult)==1) |
| | | { |
| | | g_pLog->DisplayMessage(_T("[ReviewProcessor]Add Process Data module[%d] result[%d]"), nModuleIndex, nCurResultIdx); |
| | |
| | | pReviewResult->SetLastSReviewResultIndex(nCurResultIdx); |
| | | } |
| | | LeaveCriticalSection(&m_csUserCriticalSection); |
| | | |
| | | //���� ��� ����������Ʈ ������ ���ع����� �Ʒ� ������ ��Ÿ�� �ٽ� ������ǥ �Ƚ��� |
| | | // ��ȣó�� �ʿ��� �̰� ���� |
| | | |
| | | if (nCurResultIdx + 1== pReviewResult->GetSReviewResultCount()) |
| | | { |
| | | if (nModuleIndex == 0) |
| | |
| | | |
| | | if (bLeftGantryReviewDone&&bRightGantryReviewDone) |
| | | { |
| | | ::Sleep(3000); // ����̴� �ʼ���. ������ ���� ����. |
| | | ::Sleep(3000); |
| | | g_pLog->DisplayMessage(_T("[ReviewProcessor]RemainReview Started module[%d]"), nModuleIndex); |
| | | CSequenceProcessor* pSequenceProcessor = m_pRP2P->IRP2P_GetSequenceProcessor(); |
| | | switch (GetReviewProcessStatus()) |
| | |
| | | } |
| | | else if(m_pRP2P->IRP2P_Recipe_GetRsRcpReviewInfo()->GetRcpSchedulingInfo()->GetSingleGantryPath()>0) |
| | | { |
| | | //20210302 �̱� ��Ʈ�� ���� ���� ������ �ΰ��� ��Ʈ���� �Ϸ�� ���¿��� |
| | | //������ �ؾߵ����� Review ���� Count üũ �ϴ� ������� �Ѱ�Ʈ�� ���� 200������ ���ߴ� ���� �߻� |
| | | //�׷��� �̱� ��Ʈ�� ���� ����ó�� �Ͽ� �����ϵ��� �ٲ�ߵ� CHM |
| | | g_pLog->DisplayMessage(_T("[ReviewProcessor]Single GantryPath Use"), nModuleIndex); |
| | | if (bLeftGantryReviewDone || bRightGantryReviewDone) |
| | | { |
| | | ::Sleep(3000); // ����̴� �ʼ���. ������ ���� ����. |
| | | ::Sleep(3000); |
| | | g_pLog->DisplayMessage(_T("[ReviewProcessor]RemainReview Started module[%d]"), nModuleIndex); |
| | | CSequenceProcessor* pSequenceProcessor = m_pRP2P->IRP2P_GetSequenceProcessor(); |
| | | switch (GetReviewProcessStatus()) |
| | |
| | | |
| | | } |
| | | |
| | | // ������ ����Ʈ���� �԰�, ������ ����� ���� ������... |
| | | if(nCurResultIdx==nEndResultIdx && nCurResultIdx+1 < pReviewResult->GetSReviewResultCount()) |
| | | { |
| | | |
| | |
| | | pReviewResult->SetStartSReviewResultIndex(nStartResultIdx); |
| | | pReviewResult->SetEndSReviewResultIndex(nEndResultIdx); |
| | | |
| | | // ������ ����Ʈ ���� ��������. |
| | | ::Sleep(3000); // ����̴� �ʼ���. ������ ���� ����. |
| | | ::Sleep(3000); |
| | | if (bLeftGantryReviewDone&&bRightGantryReviewDone) |
| | | { |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | // ��� ����. |
| | | m_pRP2P->IRP2P_UpdateReviewResult(nModuleIndex, pGlassResult, m_nReviewPlanIndex); |
| | | return; |
| | | |
| | |
| | | { |
| | | if (m_pRP2P==NULL) return 0; |
| | | |
| | | // ������ ����Ʈ���� Ȯ�� �� PCControl ReviewEnd ���� |
| | | CGlassResult *pGlassResult = m_pRP2P->IRP2P_GetCurrentGlassResult(); |
| | | CSequenceProcessor* pSequenceProcessor = m_pRP2P->IRP2P_GetSequenceProcessor(); |
| | | if (pGlassResult==NULL || pSequenceProcessor==NULL) |
| | |
| | | return 1; |
| | | } |
| | | |
| | | // ����Ȯ�� |
| | | if (pGlassResult->CheckReviewComplete()) |
| | | { |
| | | // check motor ready! |
| | |
| | | { |
| | | if (m_pRP2P==NULL) return 0; |
| | | |
| | | // ������ ����Ʈ���� Ȯ�� �� PCControl ReviewEnd ���� |
| | | CGlassResult *pGlassResult = m_pRP2P->IRP2P_GetCurrentGlassResult(); |
| | | CSequenceProcessor* pSequenceProcessor = m_pRP2P->IRP2P_GetSequenceProcessor(); |
| | | if (pGlassResult==NULL || pSequenceProcessor==NULL) |
| | |
| | | return 1; |
| | | } |
| | | |
| | | // ����Ȯ�� |
| | | if (pGlassResult->CheckUserComplete()) |
| | | { |
| | | m_pRP2P->IRP2P_DisplayMessage(_T("User Last Point Complete! ")); |
| | |
| | | { |
| | | if (m_pRP2P==NULL) return 0; |
| | | |
| | | // ������ ����Ʈ���� Ȯ�� �� PLC ReviewEnd ���� |
| | | CGlassResult *pGlassResult = m_pRP2P->IRP2P_GetCurrentGlassResult(); |
| | | CSequenceProcessor* pSequenceProcessor = m_pRP2P->IRP2P_GetSequenceProcessor(); |
| | | if (pGlassResult==NULL || pSequenceProcessor==NULL) |
| | |
| | | return 1; |
| | | } |
| | | |
| | | // ����Ȯ�� |
| | | if (pGlassResult->CheckReflowComplete()) |
| | | { |
| | | m_pRP2P->IRP2P_DisplayMessage(_T("Reflow Last Point Complete! ")); |
| | |
| | | { |
| | | if (m_pRP2P==NULL) return 0; |
| | | |
| | | // ������ ����Ʈ���� Ȯ�� �� PCControl ReviewEnd ���� |
| | | CGlassResult *pGlassResult = m_pRP2P->IRP2P_GetCurrentGlassResult(); |
| | | CSequenceProcessor* pSequenceProcessor = m_pRP2P->IRP2P_GetSequenceProcessor(); |
| | | if (pGlassResult==NULL || pSequenceProcessor==NULL) |
| | |
| | | return 1; |
| | | } |
| | | |
| | | // ����Ȯ�� |
| | | if (pGlassResult->CheckWsiComplete()) |
| | | { |
| | | m_pRP2P->IRP2P_DisplayMessage(_T("Wsi Last Point Complete! ")); |
| | |
| | | g_pLog->DisplayMessage(_T("PostProcessMeasureResult[%d]"),nThreadIdx); |
| | | if (m_pRP2P==NULL) return 0; |
| | | |
| | | // ������ ����Ʈ���� Ȯ�� �� PCControl ReviewEnd ���� |
| | | CGlassResult *pGlassResult = m_pRP2P->IRP2P_GetCurrentGlassResult(); |
| | | CSequenceProcessor* pSequenceProcessor = m_pRP2P->IRP2P_GetSequenceProcessor(); |
| | | if (pGlassResult==NULL || pSequenceProcessor==NULL) |
| | |
| | | return 1; |
| | | } |
| | | |
| | | // ����Ȯ�� |
| | | if (pGlassResult->CheckMeasureComplete()) |
| | | { |
| | | m_pRP2P->IRP2P_DisplayMessage(_T("Measure Last Point Complete! ")); |
| | |
| | | { |
| | | if (m_pRP2P==NULL) return 0; |
| | | |
| | | // ������ ����Ʈ���� Ȯ�� �� PCControl ReviewEnd ���� |
| | | CGlassResult *pGlassResult = m_pRP2P->IRP2P_GetCurrentGlassResult(); |
| | | CSequenceProcessor* pSequenceProcessor = m_pRP2P->IRP2P_GetSequenceProcessor(); |
| | | if (pGlassResult==NULL || pSequenceProcessor==NULL) |
| | |
| | | return 1; |
| | | } |
| | | |
| | | // ����Ȯ�� |
| | | if (pGlassResult->CheckWsiReflowComplete()) |
| | | { |
| | | m_pRP2P->IRP2P_DisplayMessage(_T("Wsi Reflow Last Point Complete! ")); |
| | |
| | | { |
| | | if (m_pRP2P==NULL) return 0; |
| | | |
| | | // ������ ����Ʈ���� Ȯ�� �� PCControl ReviewEnd ���� |
| | | CGlassResult *pGlassResult = m_pRP2P->IRP2P_GetCurrentGlassResult(); |
| | | CSequenceProcessor* pSequenceProcessor = m_pRP2P->IRP2P_GetSequenceProcessor(); |
| | | if (pGlassResult==NULL || pSequenceProcessor==NULL) |
| | |
| | | return 1; |
| | | } |
| | | |
| | | // ����Ȯ�� |
| | | if (pGlassResult->CheckWsiUserComplete()) |
| | | { |
| | | m_pRP2P->IRP2P_DisplayMessage(_T("Wsi Last Point Complete! ")); |
| | |
| | | { |
| | | if (m_pRP2P == NULL) return 0; |
| | | |
| | | // ������ ����Ʈ���� Ȯ�� �� PCControl ReviewEnd ���� |
| | | CGlassResult *pGlassResult = m_pRP2P->IRP2P_GetCurrentGlassResult(); |
| | | CSequenceProcessor* pSequenceProcessor = m_pRP2P->IRP2P_GetSequenceProcessor(); |
| | | if (pGlassResult == NULL || pSequenceProcessor == NULL) |
| | |
| | | return 1; |
| | | } |
| | | |
| | | // ����Ȯ�� |
| | | if (pGlassResult->CheckWsiMultiShotComplete()) |
| | | { |
| | | m_pRP2P->IRP2P_DisplayMessage(_T("WsiMultiShot Last Point Complete! ")); |
| | |
| | | return ReviewResult_Process_Fail; |
| | | } |
| | | |
| | | // Snap �ð� ����. |
| | | CTime snapTime = CTime::GetCurrentTime(); |
| | | pReviewResult->strSnapTime.Format(_T("%04d%02d%02d%02d%02d%02d"), snapTime.GetYear(), snapTime.GetMonth(), snapTime.GetDay(), |
| | | snapTime.GetHour(), snapTime.GetMinute(), snapTime.GetSecond()); // snap_time |
| | | |
| | | // ���� ���ε� �̹��� ���� �̸� ����� |
| | | CString strImageFileName = _T(""); |
| | | if (MakeReviewImageFileName(pReviewResult)==FALSE) |
| | | { |
| | | |
| | | } |
| | | |
| | | //������� ���� �޸� ���� �̹��� �̸� �� ��ǥ ä���ֱ� |
| | | if(!UpdateMemoryReviewPlan(pReviewResult)) |
| | | m_pRP2P->IRP2P_DisplayMessage(_T("[ReviewPlan] Memory Update Fail!! DefectIdx : %d"), pReviewResult->nDefectidx2); |
| | | |
| | | // ���� �̹��� ���� ���� �̸� |
| | | pReviewResult->strImgFileName = m_strSaveImageBasePath + _T("\\") +pReviewResult->strImgFileName; |
| | | pReviewResult->nOpticType = 1; |
| | | |
| | |
| | | // UINT64 nSize = SaveReviewImage(&uploadImage, strPath, m_nReviewImageSize, m_nReviewImageQuality, m_nReviewImageStep); |
| | | //if (nSize > 0) |
| | | // m_pRP2P->IRP2P_DisplayMessage(_T("Backup Review Image Save Success! Size: %d byte [%s]"), nSize, pReviewResult->strUploadImgFileName); |
| | | // ���ε� �̹��� ��� ���� 20190917 chm |
| | | strPath.Format(_T("%s\\%s"), m_strSaveImageUploadPath, pReviewResult->strUploadImgFileName); |
| | | nSize = SaveReviewImage(&uploadImage, strPath, m_nReviewImageSize, m_nReviewImageQuality, m_nReviewImageStep); |
| | | m_pRP2P->IRP2P_DisplayMessage(_T("Backup Review Image Save Success! Size: %d byte [%s]"), nSize, strPath); |
| | | |
| | | if (pGlassResult != NULL) |
| | | { |
| | | { |
| | | pGlassResult->m_strUploadImgFileName = m_strSaveImageUploadPath; |
| | | //taek 210203 |
| | | strRTMSPath.Format(_T("\\\\126.100.100.5\\Reviewimage\\%s\\%s\\%s"), pGlassResult->m_strRTMSStepID, pGlassResult->m_strGlassID, pReviewResult->strUploadImgFileName); |
| | | int bRet = SaveReviewImage(&uploadImage, strRTMSPath, m_nReviewImageSize, m_nReviewImageQuality, m_nReviewImageStep); //Taek Rtms 210126 |
| | | if (bRet == 0) |
| | | { |
| | | m_pRP2P->IRP2P_DisplayMessage(_T("RTMS Review Image Save Fail [%s] index[%d]"), strRTMSPath, pReviewResult->nDefectIdx); |
| | | m_pRP2P->IRP2P_DisplayMessage(_T("RTMS Review Image Save Fail!!")); |
| | | } |
| | | else m_pRP2P->IRP2P_DisplayMessage(_T("RTMS Review Image Save Success! Size: %d byte [%s] index[%d]"), nSize, strRTMSPath, pReviewResult->nDefectIdx); //taek 210128 �ӵ� ������ �ӽ÷� �α� ������ ���� |
| | | } |
| | | |
| | | else m_pRP2P->IRP2P_DisplayMessage(_T("RTMS Review Image Save Success! Size: %d byte [%s] index[%d]"), nSize, strRTMSPath, pReviewResult->nDefectIdx); |
| | | |
| | | } |
| | | if (nSize > 0) |
| | | { |
| | | |
| | | int aoiindex = CDitGlassRawClient::GetInstance()->GetDefectData(pReviewResult->nDefectidx2)->m_nDefectIdx; |
| | | m_pRP2P->IRP2P_DisplayMessage(_T("Upload Review Image Save Success! Size: %d byte [%s] index[%d] AOI NO[%d]"), nSize, strRTMSPath, pReviewResult->nDefectIdx, aoiindex); //taek 210128 �ӵ� ������ �ӽ÷� �α� ������ ���� |
| | | |
| | | m_pRP2P->IRP2P_DisplayMessage(_T("Upload Review Image Save Success! Size: %d byte [%s] index[%d] AOI NO[%d]"), nSize, pReviewResult->strUploadImgFileName, pReviewResult->nDefectIdx, aoiindex); //taek 210128 ìë 문ì ë¡ ììë¡ ë¡ê·¸ ë¨ê¸°ì§ ìì |
| | | //m_pRP2P->IRP2P_DisplayMessage(_T("Upload Review Image Save Success! Size: %d byte [%s]"), nSize, pReviewResult->strUploadImgFileName); |
| | | } |
| | | else |
| | |
| | | const CRsRcpReviewInfo* psRcpReviewInfo = m_pRP2P->IRP2P_Recipe_GetRsRcpReviewInfo(); |
| | | if(psRcpReviewInfo== NULL) m_pRP2P->IRP2P_DisplayMessage(_T("RcpReviewInfo is NULL")); |
| | | |
| | | if(psRcpReviewInfo->m_bDefocusUse) //190819chm ����Ŀ�� �˶� ��� |
| | | if(psRcpReviewInfo->m_bDefocusUse) |
| | | { |
| | | if(pReviewResult->nLocation == DefectLoc_ASG || pReviewResult->nLocation == DefectLoc_PAD || pReviewResult->nLocation == DefectLoc_C2C) |
| | | { |
| | |
| | | } |
| | | } |
| | | |
| | | if (pReviewResult->nModuleIdx == 0) |
| | | if (pReviewResult->nModuleIdx == 0 && m_pRP2P->IRP2P_GetFirstReviewLeft()) |
| | | { |
| | | const CSignalControlInfo* pSignalInfo = m_pRP2P->IRP2P_GetReviewSignalinfo(); |
| | | int nDefocusValueMin = pSignalInfo->GetDefocusValueMin(); |
| | | int nDefocusValueMax = pSignalInfo->GetDefocusValueMax(); |
| | | |
| | | 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); |
| | | |
| | | if (dFocusValue < nDefocusValueMin || dFocusValue > nDefocusValueMax) |
| | | { |
| | | m_pRP2P->IRP2P_GetSequenceProcessor()->SendSignalToSignalControl(0, 3, 1000); |
| | | } |
| | | } |
| | | else if(pReviewResult->nModuleIdx == 1 && m_pRP2P->IRP2P_GetFirstReviewRight()) |
| | | { |
| | | const CSignalControlInfo* pSignalInfo = m_pRP2P->IRP2P_GetReviewSignalinfo(); |
| | | int nDefocusValueMin = pSignalInfo->GetDefocusValueMin(); |
| | | int nDefocusValueMax = pSignalInfo->GetDefocusValueMax(); |
| | | |
| | | m_pRP2P->IRP2P_GetCurrentGlassResult()->nReview01ImageContrast = dFocusValue; |
| | | |
| | | m_pRP2P->IRP2P_SetFirstReviewRight(FALSE); |
| | | m_pRP2P->IRP2P_DisplayMessage(_T("FirstReviewRight FDC FocusValue = %.2f "), dFocusValue); |
| | | |
| | | if (dFocusValue < nDefocusValueMin || dFocusValue > nDefocusValueMax) |
| | | { |
| | | m_pRP2P->IRP2P_GetSequenceProcessor()->SendSignalToSignalControl(0, 3, 1000); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | //#3524_210723_LYW_CF AOI Review ëí¬ì»¤ì¤ ìë ì¶ê° ë° FDC ë³´ê³ ë°©ì ê°ì MOD Start |
| | | else |
| | | { |
| | | double dFocusValue = 0.; |
| | |
| | | dFocusValue = CalcFocusValue(imageConvert.GetImageBuffer(), imageConvert.GetWidth(), imageConvert.GetHeight()); |
| | | } |
| | | |
| | | if (pReviewResult->nModuleIdx == 0) |
| | | if (pReviewResult->nModuleIdx == 0 && m_pRP2P->IRP2P_GetFirstReviewLeft()) |
| | | { |
| | | const CSignalControlInfo* pSignalInfo = m_pRP2P->IRP2P_GetReviewSignalinfo(); |
| | | int nDefocusValueMin = pSignalInfo->GetDefocusValueMin(); |
| | | int nDefocusValueMax = pSignalInfo->GetDefocusValueMax(); |
| | | |
| | | m_pRP2P->IRP2P_GetCurrentGlassResult()->nReview00ImageContrast = dFocusValue; |
| | | m_pRP2P->IRP2P_SetFirstReviewLeft(FALSE); |
| | | m_pRP2P->IRP2P_DisplayMessage(_T("FirstReviewLeft FDC FocusValue = %.2f "), dFocusValue); |
| | | |
| | | if (dFocusValue < nDefocusValueMin || dFocusValue > nDefocusValueMax) |
| | | { |
| | | m_pRP2P->IRP2P_GetSequenceProcessor()->SendSignalToSignalControl(0, 3, 1000); |
| | | } |
| | | |
| | | } |
| | | else |
| | | else if (pReviewResult->nModuleIdx == 1 && m_pRP2P->IRP2P_GetFirstReviewRight()) |
| | | { |
| | | const CSignalControlInfo* pSignalInfo = m_pRP2P->IRP2P_GetReviewSignalinfo(); |
| | | int nDefocusValueMin = pSignalInfo->GetDefocusValueMin(); |
| | | int nDefocusValueMax = pSignalInfo->GetDefocusValueMax(); |
| | | |
| | | m_pRP2P->IRP2P_GetCurrentGlassResult()->nReview01ImageContrast = dFocusValue; |
| | | m_pRP2P->IRP2P_SetFirstReviewRight(FALSE); |
| | | m_pRP2P->IRP2P_DisplayMessage(_T("FirstReviewRight FDC FocusValue = %.2f "), dFocusValue); |
| | | |
| | | if (dFocusValue < nDefocusValueMin || dFocusValue > nDefocusValueMax) |
| | | { |
| | | m_pRP2P->IRP2P_GetSequenceProcessor()->SendSignalToSignalControl(0, 3, 1000); |
| | | } |
| | | |
| | | } |
| | | } |
| | | //#3524_210723_LYW_CF AOI Review ëí¬ì»¤ì¤ ìë ì¶ê° ë° FDC ë³´ê³ ë°©ì ê°ì MOD End |
| | | |
| | | |
| | | |
| | |
| | | return ReviewResult_Process_Fail; |
| | | } |
| | | |
| | | // Snap �ð� ����. |
| | | CTime snapTime = CTime::GetCurrentTime(); |
| | | pReviewResult->strSnapTime.Format(_T("%04d%02d%02d%02d%02d%02d"), snapTime.GetYear(), snapTime.GetMonth(), snapTime.GetDay(), |
| | | snapTime.GetHour(), snapTime.GetMinute(), snapTime.GetSecond()); // snap_time |
| | | |
| | | // ���� ���ε� �̹��� ���� �̸� ����� |
| | | CString strImageFileName = _T(""); |
| | | if (MakeUserImageFileName(pReviewResult)==FALSE) |
| | | { |
| | |
| | | if(!UpdateMemoryUserPlan(pReviewResult)) |
| | | m_pRP2P->IRP2P_DisplayMessage(_T("[UserPlan] Memory Update Fail!! DefectIdx : %d"), pReviewResult->nDefectidx2); |
| | | |
| | | |
| | | //// ���� �̹��� ���� ���� �̸� |
| | | //strImageFileName.Format(_T("ModuleIdx[%d]_PointIdx[%d]_Zoom[%d]"), pReviewResult->nModuleIdx, pReviewResult->nResultIdx, pReviewResult->nZoomIdx); |
| | | //pReviewResult->strImgFileName = strImageFileName; |
| | | |
| | |
| | | UINT64 nSize = SaveReviewImage(&uploadImage, strPath, m_nReviewImageSize, m_nReviewImageQuality, m_nReviewImageStep); |
| | | m_pRP2P->IRP2P_DisplayMessage(_T("Upload Review Image Save Success! Size: %d byte"), nSize); |
| | | |
| | | //uploadImage.SaveImage(strPath, 40); // �� 60% 150k |
| | | //uploadImage.SaveImage(strPath, 40); |
| | | if(GetReviewProcessStatus() == ReviewProcessStatus_UserStart) |
| | | { |
| | | // ���ε� �̹��� ��� ���� 20190917 chm |
| | | //strPath.Format(_T("%s\\%s\\%s"), m_strSaveImageUploadPath, m_strGlassID, pReviewResult->strUploadImgFileName); |
| | | strPath.Format(_T("%s\\%s"), m_strSaveImageUploadPath, pReviewResult->strUploadImgFileName); |
| | | nSize = SaveReviewImage(&uploadImage, strPath, m_nReviewImageSize, m_nReviewImageQuality, m_nReviewImageStep); |
| | |
| | | const CRsRcpReviewInfo* psRcpReviewInfo = m_pRP2P->IRP2P_Recipe_GetRsRcpReviewInfo(); |
| | | if(psRcpReviewInfo== NULL) m_pRP2P->IRP2P_DisplayMessage(_T("RcpReviewInfo is NULL")); |
| | | |
| | | if(psRcpReviewInfo->m_bDefocusUse) //190819chm ����Ŀ�� �˶� ��� |
| | | if(psRcpReviewInfo->m_bDefocusUse) |
| | | { |
| | | if(pReviewResult->nLocation == DefectLoc_ASG || pReviewResult->nLocation == DefectLoc_PAD || pReviewResult->nLocation == DefectLoc_C2C) |
| | | { |
| | |
| | | if (imageConvert.GetImageExist()) |
| | | { |
| | | dFocusValue = CalcFocusValue(imageConvert.GetImageBuffer(), imageConvert.GetWidth(), imageConvert.GetHeight()); |
| | | |
| | | if (pReviewResult->nModuleIdx == 0 && m_pRP2P->IRP2P_GetFirstReviewLeft()) |
| | | { |
| | | const CSignalControlInfo* pSignalInfo = m_pRP2P->IRP2P_GetReviewSignalinfo(); |
| | | int nDefocusValueMin = pSignalInfo->GetDefocusValueMin(); |
| | | int nDefocusValueMax = pSignalInfo->GetDefocusValueMax(); |
| | | |
| | | m_pRP2P->IRP2P_GetCurrentGlassResult()->nReview00ImageContrast = dFocusValue; |
| | | m_pRP2P->IRP2P_SetFirstReviewLeft(FALSE); |
| | | m_pRP2P->IRP2P_DisplayMessage(_T("FirstReviewLeft FDC FocusValue = %.2f "), dFocusValue); |
| | | |
| | | if (dFocusValue < nDefocusValueMin || dFocusValue > nDefocusValueMax) |
| | | { |
| | | m_pRP2P->IRP2P_GetSequenceProcessor()->SendSignalToSignalControl(0, 3, 1000); |
| | | } |
| | | } |
| | | else if (pReviewResult->nModuleIdx == 1 && m_pRP2P->IRP2P_GetFirstReviewRight()) |
| | | { |
| | | const CSignalControlInfo* pSignalInfo = m_pRP2P->IRP2P_GetReviewSignalinfo(); |
| | | int nDefocusValueMin = pSignalInfo->GetDefocusValueMin(); |
| | | int nDefocusValueMax = pSignalInfo->GetDefocusValueMax(); |
| | | |
| | | m_pRP2P->IRP2P_GetCurrentGlassResult()->nReview01ImageContrast = dFocusValue; |
| | | m_pRP2P->IRP2P_SetFirstReviewRight(FALSE); |
| | | m_pRP2P->IRP2P_DisplayMessage(_T("FirstReviewRight FDC FocusValue = %.2f "), dFocusValue); |
| | | |
| | | if (dFocusValue < nDefocusValueMin || dFocusValue > nDefocusValueMax) |
| | | { |
| | | m_pRP2P->IRP2P_GetSequenceProcessor()->SendSignalToSignalControl(0, 3, 1000); |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | // count defocus |
| | | CGlassResult* pGlassResult = m_pRP2P->IRP2P_GetCurrentGlassResult(); |
| | | if (pGlassResult) |
| | |
| | | } |
| | | } |
| | | |
| | | //#3524_210723_LYW_CF AOI Review ëí¬ì»¤ì¤ ìë ì¶ê° ë° FDC ë³´ê³ ë°©ì ê°ì ADD Start |
| | | else |
| | | { |
| | | double dFocusValue = 0.; |
| | | CCHImageData imageConvert; |
| | | if (pImageData->GetChannels() != 1) |
| | | { |
| | | CCHImageProcess::ImageConvert(pImageData, &imageConvert, ConvertTypeRGB2Gray); |
| | | } |
| | | else |
| | | { |
| | | pImageData->CopyImageTo(&imageConvert); |
| | | } |
| | | if (imageConvert.GetImageExist()) |
| | | { |
| | | dFocusValue = CalcFocusValue(imageConvert.GetImageBuffer(), imageConvert.GetWidth(), imageConvert.GetHeight()); |
| | | } |
| | | |
| | | if (pReviewResult->nModuleIdx == 0 && m_pRP2P->IRP2P_GetFirstReviewLeft()) |
| | | { |
| | | const CSignalControlInfo* pSignalInfo = m_pRP2P->IRP2P_GetReviewSignalinfo(); |
| | | int nDefocusValueMin = pSignalInfo->GetDefocusValueMin(); |
| | | int nDefocusValueMax = pSignalInfo->GetDefocusValueMax(); |
| | | |
| | | m_pRP2P->IRP2P_GetCurrentGlassResult()->nReview00ImageContrast = dFocusValue; |
| | | m_pRP2P->IRP2P_SetFirstReviewLeft(FALSE); |
| | | m_pRP2P->IRP2P_DisplayMessage(_T("FirstReviewLeft FDC FocusValue = %.2f "), dFocusValue); |
| | | |
| | | if (dFocusValue < nDefocusValueMin || dFocusValue > nDefocusValueMax) |
| | | { |
| | | m_pRP2P->IRP2P_GetSequenceProcessor()->SendSignalToSignalControl(0, 3, 1000); |
| | | } |
| | | } |
| | | else if (pReviewResult->nModuleIdx == 1 && m_pRP2P->IRP2P_GetFirstReviewRight()) |
| | | { |
| | | const CSignalControlInfo* pSignalInfo = m_pRP2P->IRP2P_GetReviewSignalinfo(); |
| | | int nDefocusValueMin = pSignalInfo->GetDefocusValueMin(); |
| | | int nDefocusValueMax = pSignalInfo->GetDefocusValueMax(); |
| | | |
| | | m_pRP2P->IRP2P_GetCurrentGlassResult()->nReview01ImageContrast = dFocusValue; |
| | | m_pRP2P->IRP2P_SetFirstReviewRight(FALSE); |
| | | m_pRP2P->IRP2P_DisplayMessage(_T("FirstReviewRight FDC FocusValue = %.2f "), dFocusValue); |
| | | |
| | | if (dFocusValue < nDefocusValueMin || dFocusValue > nDefocusValueMax) |
| | | { |
| | | m_pRP2P->IRP2P_GetSequenceProcessor()->SendSignalToSignalControl(0, 3, 1000); |
| | | } |
| | | |
| | | } |
| | | } |
| | | //#3524_210723_LYW_CF AOI Review ëí¬ì»¤ì¤ ìë ì¶ê° ë° FDC ë³´ê³ ë°©ì ê°ì ADD End |
| | | |
| | | return ReviewResult_Process_Complete; |
| | | } |
| | |
| | | |
| | | int nTestMode = FALSE; |
| | | |
| | | //�ù� �������� �̹��� ���� ���� 20190827 chm |
| | | if(nTestMode){ |
| | | Sleep(500); |
| | | CString strPathName; |
| | |
| | | return ReviewResult_Process_Fail; |
| | | } |
| | | |
| | | // Snap �ð� ����. |
| | | CTime snapTime = CTime::GetCurrentTime(); |
| | | pReviewResult->strSnapTime.Format(_T("%04d%02d%02d%02d%02d%02d"), snapTime.GetYear(), snapTime.GetMonth(), snapTime.GetDay(), |
| | | snapTime.GetHour(), snapTime.GetMinute(), snapTime.GetSecond()); // snap_time |
| | | |
| | | // ���� ���ε� �̹��� ���� �̸� ����� |
| | | CString strImageFileName = _T(""); |
| | | if (MakeReflowImageFileName(pReviewResult)==FALSE) |
| | | { |
| | |
| | | } |
| | | |
| | | |
| | | reflowParam reParam; //Reflow ���� ���� |
| | | reflowResult reResult;//Reflow ��� ���� |
| | | reflowParam reParam; |
| | | reflowResult reResult; |
| | | |
| | | ////////////////////////////////////////////////////////////////////////////////////////////// |
| | | BOOL btFlag =0; |
| | |
| | | CCHImageData tempImage; |
| | | tempImageOrigin.CopyImageFrom(pImageData); |
| | | |
| | | if(pReviewResult->nReflow_Side==7) // ���� ���� |
| | | if(pReviewResult->nReflow_Side==7) |
| | | { |
| | | btFlag=1; |
| | | CCHImageProcess::ImageRotate(pImageData,&tempImage,135);//���� �̹����� Right ȸ�� ���� Right ���� ���� |
| | | CCHImageProcess::ImageRotate(pImageData,&tempImage,135); |
| | | pImageData = &tempImage; |
| | | //reParam.nImageWidth = 2048; |
| | | //reParam.nImageHeight = 2432; |
| | |
| | | |
| | | CCHImageData tmepData2; |
| | | if(btFlag==1){ |
| | | CCHImageProcess::ImageRotate(pImageData,&tmepData2,135);//Right ������ �ٽ� �̹��� ������ |
| | | CCHImageProcess::ImageRotate(pImageData,&tmepData2,135); |
| | | pImageData= &tmepData2; |
| | | //pImageData->SaveImage(_T("D:\\Testafter.bmp"));//Test �� ���� bmp ���� |
| | | //pImageData->SaveImage(_T("D:\\Testafter.bmp")); |
| | | } |
| | | |
| | | |
| | |
| | | UINT64 nSize = SaveReviewImage(&uploadImage, strPath, m_nReviewImageSize, m_nReviewImageQuality, m_nReviewImageStep); |
| | | m_pRP2P->IRP2P_DisplayMessage(_T("Upload Review Image Save Success! Size: %d byte"), nSize); |
| | | |
| | | //uploadImage.SaveImage(strPath, 40); // �� 60% 150k |
| | | //uploadImage.SaveImage(strPath, 40); |
| | | if(GetReviewProcessStatus() == ReviewProcessStatus_ReflowStart) |
| | | { |
| | | // ���ε� �̹��� ��� ���� 20190917 chm |
| | | //strPath.Format(_T("%s\\%s\\%s"), m_strSaveImageUploadPath, m_strGlassID, pReviewResult->strUploadImgFileName); |
| | | strPath.Format(_T("%s\\%s"), m_strSaveImageUploadPath, pReviewResult->strUploadImgFileName); |
| | | nSize = SaveReviewImage(&uploadImage, strPath, m_nReviewImageSize, m_nReviewImageQuality, m_nReviewImageStep); |
| | | |
| | | m_pRP2P->IRP2P_DisplayMessage(_T("Upload Reflow Image Save Success! Size: %d byte"), nSize); |
| | | |
| | | //�ùĵ����� �̹��� �ڵ����� ������ 20190927chm |
| | | if(nTestMode) |
| | | { |
| | | CString csParam; |
| | |
| | | m_pRP2P->IRP2P_DisplayMessage(_T("Upload Reflow Image Save Fail![%s]"), pReviewResult->strUploadImgFileName); |
| | | } |
| | | |
| | | //�����޸� ������Ʈ |
| | | if(!UpdateMemoryReflowPlan(pReviewResult)) |
| | | m_pRP2P->IRP2P_DisplayMessage(_T("[ReflowPlan] Memory Update Fail!! DefectIdx : %d"), pReviewResult->nDefectidx2); |
| | | |
| | |
| | | } |
| | | |
| | | |
| | | |
| | | //���ϸ� 181227 cmark |
| | | BOOL CReviewProcessor_CPJT::MakeReviewImageFileName(SReviewResult* pReviewResult) |
| | | { |
| | | if (m_pRP2P==NULL || pReviewResult==NULL) return FALSE; |
| | |
| | | |
| | | if(GetReviewProcessStatus() == ReviewProcessStatus_ReviewStart) |
| | | { |
| | | // [2017:6:5]-[WEZASW] : Review Image ���ϸ�� '*' ��� ����.(����ó��) |
| | | // [2017:6:5]-[WEZASW] : Review Image |
| | | if (pReviewResult->strDefectCode.Compare(_T("***")) == 0) |
| | | strDefectCodeTemp = _T("DC"); |
| | | else |
| | |
| | | snapTime.GetHour(), snapTime.GetMinute(), snapTime.GetSecond()); // snap_time |
| | | |
| | | |
| | | // [2017:4:10]-[WEZASW] : ����� ��û�� ���� bmp ���� �߰� ����. (�ӽû��) |
| | | // [2017:4:10]-[WEZASW] : |
| | | pReviewResult->strOrignalImgFileName = strFileName + _T(".bmp"); |
| | | |
| | | strFileName += _T(".jpg"); |
| | |
| | | |
| | | int CReviewProcessor_CPJT::ProcessWSIReflow(int nThreadIdx, SReviewResult* pReviewResult) |
| | | { |
| | | // [2016:11:15]-[WEZASW] : ���� �ʿ� |
| | | // [2016:11:15]-[WEZASW] : |
| | | if(!UpdateMemoryWsiReflowPlan(pReviewResult)) |
| | | m_pRP2P->IRP2P_DisplayMessage(_T("[WsiReflowPlan] Memory Update Fail!! DefectIdx : %d"), pReviewResult->nDefectidx2); |
| | | |
| | | // wsi�� return ������ ���� [6/20/2017 bhs] |
| | | return WsiResultSuccess; |
| | | } |
| | | |
| | |
| | | |
| | | if(GetReviewProcessStatus() == ReviewProcessStatus_UserStart) |
| | | { |
| | | // [2017:6:5]-[WEZASW] : Review Image ���ϸ�� '*' ��� ����.(����ó��) |
| | | // [2017:6:5]-[WEZASW] : Review Image |
| | | if (pReviewResult->strDefectCode.Compare(_T("***")) == 0) |
| | | strDefectCodeTemp = _T("DC"); |
| | | else |
| | |
| | | // strFileName += pReviewResult->strSnapTime; |
| | | // } |
| | | |
| | | // [2017:4:10]-[WEZASW] : ����� ��û�� ���� bmp ���� �߰� ����. (�ӽû��) |
| | | // [2017:4:10]-[WEZASW] : |
| | | pReviewResult->strOrignalImgFileName = strFileName + _T(".bmp"); |
| | | |
| | | strFileName += _T(".jpg"); |
| | |
| | | |
| | | void CReviewProcessor_CPJT::LoadAoiImage(const CString& strGlassID, int nOpticType, int nPosX, int nPosY, CCHImageData* pAoiDark, CCHImageData *pAoiBright) |
| | | { |
| | | // 3. �˻� ���� �̹��� ã�� |
| | | CString strAoiDarkPath = _T(""); |
| | | CString strAoiBrightPath = _T(""); |
| | | |
| | | FindAoiDefectImagePath(strGlassID, nOpticType, nPosX, nPosY, strAoiDarkPath, strAoiBrightPath); |
| | | |
| | | // Dark, Bright ��� ã�� ���� �ּ�ó�� [2017.7.1 bhs] |
| | | // Dark image |
| | | //if(nOpticType & DEFECT_OPTIC_DARK) |
| | | { |
| | |
| | | CFileFind finder; |
| | | CString strSearchPath = _T(""); |
| | | |
| | | // Dark, Bright ��� ã�� ���� �ּ�ó�� [2017.7.1 bhs] |
| | | //if (nOpticType & DEFECT_OPTIC_DARK) |
| | | { |
| | | // Dark field |
| | |
| | | processTimer.End(); |
| | | } |
| | | |
| | | // 4-3. ������� ��� |
| | | double dAverageGray = 0.0; |
| | | if (CCHImageProcess::ImageAverage(&bandImage, dAverageGray)==1) |
| | | { |
| | |
| | | CCHImageData pReviewCam; |
| | | CCHImageData tempImage1; |
| | | |
| | | // ������ �̹��� ȸ�� |
| | | if (m_nImageRotate > 0) |
| | | { |
| | | tempImage1.CopyImageFrom(pReviewCamSource); |
| | | CCHImageProcess::ImageRotate(pReviewCamSource, &tempImage1, (90.0*m_nImageRotate)); |
| | | } |
| | | |
| | | // ������ �̹��� ���� |
| | | if (m_nimageFlip > 0) |
| | | { |
| | | if(m_nImageRotate > 0) |
| | |
| | | |
| | | // set total size * scale |
| | | int nTotalWidth = int(m_nReviewResizeWidth * m_dReviewImageScale + 0.5); |
| | | // 20170817 smok Dark, Bright �̹����� ���� �̹��� �Ʒ��� �ٵ��� ���� |
| | | int nTotalHeight = int(m_nReviewResizeHeight * m_dReviewImageScale + 0.5 + max(pAoiDark2.GetHeight(), pAoiBright2.GetHeight())); |
| | | int nTotalHeight2 = int(m_nReviewResizeHeight * m_dReviewImageScale + 0.5); |
| | | |
| | |
| | | double dRulerGab = 20.0 / m_dReviewImageScale; |
| | | double dScaleResolution = pReviewResult->dMeasureResolution / m_dReviewImageScale; |
| | | |
| | | //DrawRuler(&memDC, nTotalWidth, nTotalHeight2, dScaleResolution, dRulerGab); // resolution, ruler gab //taek 210127 ��� X |
| | | //DrawRuler(&memDC, nTotalWidth, nTotalHeight2, dScaleResolution, dRulerGab); // resolution, ruler gab //taek 210127 |
| | | |
| | | // draw text string |
| | | DrawDefectInfo(&memDC, findResult, pReviewResult); |
| | | |
| | | //DrawAoiImage(&memDC, &pAoiDark2, &pAoiBright2, &pAoiDark2, &pAoiBright2, nAoiWidth, nAoiHeight); |
| | | |
| | | // draw line ���� ������ |
| | | //DrawCenterLine(&memDC, nTotalWidth, nTotalHeight); |
| | | // DrawCenterRect(&memDC, nTotalWidth, nTotalHeight, 100, 100, pReviewResult->dMeasureResolution); |
| | | |
| | |
| | | |
| | | nWidthDark = nHeightDark = nWidthBright = nHeightBright = 0; |
| | | |
| | | // 20170817 smok Dark, Bright �̹����� ���� �̹��� �Ʒ��� �ٵ��� ���� |
| | | // 20170817 smok Dark, Bright |
| | | // dark |
| | | CCHImageData subImage; |
| | | if(pAoiDark!=NULL && pAoiDark->GetImageExist()) |
| | |
| | | int nTotalWidth = int(m_nReviewResizeWidth * m_dReviewImageScale + 0.5); |
| | | int nTotalHeight = int(m_nReviewResizeHeight * m_dReviewImageScale + 0.5); |
| | | |
| | | // Dark, Bright �̹����� ������ �ٵ��� ����, Dark ��, Bright �Ʒ� - ����� ��û[2017.6.30 bhs] |
| | | //int nX = nTotalWidth - nWidth; |
| | | //int nY = nTotalHeight - (nHeight * 2); |
| | | |
| | | // 20170817 smok Dark, Bright �̹����� ���� �̹��� �Ʒ��� �ٵ��� ���� |
| | | int nX = 0; |
| | | int nY = nTotalHeight; |
| | | pAoiDark1->ShowImage(pDC->m_hDC, nX, nY, pAoiDark1->GetWidth(), pAoiDark1->GetHeight(), 0, 0); |
| | |
| | | //pAoiDark1->ShowImage(pDC->m_hDC, nTotalWidth - nWidth, nTotalHei4ght-nHeight, pAoiDark1->GetWidth(), pAoiDark1->GetHeight(), 0, 0); |
| | | //pAoiBright1->ShowImage(pDC->m_hDC, nTotalWidth - nWidth, nTotalHeight-nHeight, pAoiBright1->GetWidth(), pAoiBright1->GetHeight(), 0, 0); |
| | | |
| | | // �˻� �̹��� �߾ӿ� È��ǥ ǥ�� - ����� ��û [2017.6.30 bhs] |
| | | CFont Font; |
| | | VERIFY(Font.CreateFont( |
| | | 50, // nHeight |
| | |
| | | CFont *pOldFont = pDC->SelectObject(&Font); |
| | | pDC->SetTextColor(RGB(255,0,0)); |
| | | |
| | | CString strArrow = _T("��"); |
| | | CString strArrow = _T("â"); |
| | | CSize size = pDC->GetTextExtent(strArrow); |
| | | int nCenterX = nX + (nWidth / 2) - size.cx; |
| | | int nCenterY = nY + (nHeight / 2)/* + (size.cy / 2)*/; |
| | |
| | | else { |
| | | wchar_t pstrPrefix[128] ={}; |
| | | |
| | | //Zone �ѹ� 210127 |
| | | int nValue = 0; |
| | | for (int i = 15; i >= 0; i--) |
| | | { |
| | |
| | | } |
| | | |
| | | //taek 210127 |
| | | //������� ��ǥ�� y �� *-1�� ���� |
| | | //���� ID, �˻� ī�޶� ����, �˻� Camera ���� : (? ) ķ ?, Cell ID, Review Cam ���� : Gantry ����, ���� Size, ���� Zone ����, Stak Flag, CODE ����, ��ǥ ���� |
| | | |
| | | // PPID |
| | | // strValue.Format(_T("Tool[%s].Recipe[%s].ScanNo[%d/%d].Time[%4d/%2d/%2d_%d:%d:%d].MaxGray[%d].RefGray[%d].REVCnt[%d]"),pReviewResult->strEquipID,pGlassResult->m_strPPID,pReviewResult->nAOIScanIdx,0,snapTime.GetYear(), snapTime.GetMonth(), snapTime.GetDay(), |
| | |
| | | |
| | | if(GetReviewProcessStatus() == ReviewProcessStatus_ReflowStart) |
| | | { |
| | | // [2017:6:5]-[WEZASW] : Review Image ���ϸ�� '*' ��� ����.(����ó��) |
| | | // [2017:6:5]-[WEZASW] : Review Image |
| | | if (pReviewResult->strDefectCode.Compare(_T("***")) == 0) |
| | | strDefectCodeTemp = _T("DC"); |
| | | else |
| | |
| | | // strFileName += pReviewResult->strSnapTime; |
| | | // } |
| | | |
| | | // [2017:4:10]-[WEZASW] : ����� ��û�� ���� bmp ���� �߰� ����. (�ӽû��) |
| | | // [2017:4:10]-[WEZASW] : |
| | | pReviewResult->strOrignalImgFileName = strFileName + _T(".bmp"); |
| | | |
| | | strFileName += _T(".jpg"); |
| | |
| | | int nStartResultIdx = pReviewResult->GetStartSReviewResultIndex(); |
| | | int nEndResultIdx = pReviewResult->GetEndSReviewResultIndex(); |
| | | |
| | | // �ε����� ���� ������ �ε��� ���� Ŭ��.. |
| | | if (nCurResultIdx > nEndResultIdx) |
| | | { |
| | | LeaveCriticalSection(&m_csUserCriticalSection); |
| | |
| | | g_pLog->DisplayMessage(_T("[ReviewProcessor]SetWsiResultData module[%d] point[%d] result[%d]"), nModuleIndex, measureResut.nResultIndex, nCurResultIdx); |
| | | } |
| | | |
| | | // ���� ��������� ���� |
| | | wsiResult.nWsi_ResultCode = measureResut.nResultCode; |
| | | wsiResult.dWsi_DamDistance = measureResut.dDamDistance; |
| | | |
| | |
| | | } |
| | | //memcpy(wsiResult.nWsi_pReflowResultData, measureResut.pReflowResultData, sizeof(wsiResult.nWsi_pReflowResultData)); |
| | | |
| | | // ��� ������ �߰� |
| | | SReviewResult *pProcessResult = NULL; |
| | | if (pGlassResult->SetWsiReflowResultData(nModuleIndex, nCurResultIdx, wsiResult, nGlassPosX, nGlassPosY, nMotorPosX, nMotorPosY, dTime)) |
| | | { |
| | |
| | | pProcessResult = pReviewResult->GetSReviewResult(nCurResultIdx); |
| | | } |
| | | |
| | | // ���� ������, ���� ������� ������ ���� |
| | | if (pProcessResult) |
| | | { |
| | | // ó�� ������ ���� |
| | | if (AddReviewProcessData(pProcessResult)==1) |
| | | { |
| | | g_pLog->DisplayMessage(_T("[ReviewProcessor]Add Wsi Reflow Process Data module[%d] result[%d]"), nModuleIndex, nCurResultIdx); |
| | |
| | | |
| | | LeaveCriticalSection(&m_csUserCriticalSection); |
| | | |
| | | // ��� ����. |
| | | m_pRP2P->IRP2P_UpdateReviewResult(nModuleIndex, pGlassResult, 5); |
| | | return; |
| | | |
| | |
| | | g_pLog->DisplayMessage(_T("[ReviewProcessor]WsiResult FAIL! module[%d] result[%d]"), nModuleIndex, measureResut.nResultIndex); |
| | | return; |
| | | } |
| | | |
| | | //0129cmark ���� ��ġ�� ���� ��ǥ�� ���� ��ǥ�� ���� |
| | | |
| | | double CReviewProcessor_CPJT::GetCentertoOrginCoordinate(double dPosX,double dPosY,int nCornercut,int nOriginDirection){ |
| | | |
| | | double nResultPosX=0.0; |
| | |
| | | // CornerCutDirection { CLeftTop=0, CRightTop, CLeftBottom, CRightBottom }; |
| | | // OriginDirection { OLeftTop=0, ORightTop, OLeftBottom, ORightBottom }; |
| | | |
| | | if(nOriginDirection==RPOLeftTop){//�������»� |
| | | if(nOriginDirection==RPOLeftTop){ |
| | | |
| | | if(nCornercut == RPCLeftTop)//�»� |
| | | if(nCornercut == RPCLeftTop) |
| | | { |
| | | nResultPosX = double(GLASS_SIZE_WIDTH)/2. - dPosX; |
| | | nResultPosY = double(GLASS_SIZE_HEIGHT)/2. - dPosY; |
| | | |
| | | } |
| | | else if(nCornercut == RPCRightTop)//��� |
| | | else if(nCornercut == RPCRightTop) |
| | | { |
| | | nResultPosX = double(GLASS_SIZE_WIDTH)/2. - dPosX; |
| | | nResultPosY = double(GLASS_SIZE_HEIGHT)/2. + dPosY; |
| | | |
| | | } |
| | | else if(nCornercut == RPCLeftBottom)//���� |
| | | else if(nCornercut == RPCLeftBottom) |
| | | { |
| | | nResultPosX = double(GLASS_SIZE_WIDTH)/2. + dPosX; |
| | | nResultPosY = double(GLASS_SIZE_HEIGHT)/2. - dPosY; |
| | | } |
| | | else if(nCornercut == RPCRightBottom)//���� |
| | | else if(nCornercut == RPCRightBottom) |
| | | { |
| | | nResultPosX = double(GLASS_SIZE_WIDTH)/2 + dPosX; |
| | | nResultPosY = double(GLASS_SIZE_HEIGHT)/2 + dPosY; |
| | | } |
| | | } |
| | | |
| | | else if(nOriginDirection==RPORightTop){//��������� |
| | | else if(nOriginDirection==RPORightTop){ |
| | | |
| | | if(nCornercut == RPCLeftTop)//�»� |
| | | if(nCornercut == RPCLeftTop) |
| | | { |
| | | nResultPosX = double(GLASS_SIZE_WIDTH)/2. - dPosX; |
| | | nResultPosY = double(GLASS_SIZE_HEIGHT)/2. + dPosY; |
| | | |
| | | } |
| | | else if(nCornercut == RPCRightTop)//��� |
| | | else if(nCornercut == RPCRightTop) |
| | | { |
| | | nResultPosX = double(GLASS_SIZE_WIDTH)/2. - dPosX; |
| | | nResultPosY = double(GLASS_SIZE_HEIGHT)/2. - dPosY; |
| | | |
| | | } |
| | | else if(nCornercut == RPCLeftBottom)//���� |
| | | else if(nCornercut == RPCLeftBottom) |
| | | { |
| | | nResultPosX = double(GLASS_SIZE_WIDTH)/2. + dPosX; |
| | | nResultPosY = double(GLASS_SIZE_HEIGHT)/2. + dPosY; |
| | | } |
| | | else if(nCornercut == RPCRightBottom)//���� |
| | | else if(nCornercut == RPCRightBottom) |
| | | { |
| | | nResultPosX = double(GLASS_SIZE_WIDTH)/2. + dPosX; |
| | | nResultPosY = double(GLASS_SIZE_HEIGHT)/2. - dPosY; |
| | | } |
| | | } |
| | | else if(nOriginDirection==RPOLeftBottom){//���������� |
| | | else if(nOriginDirection==RPOLeftBottom){ |
| | | |
| | | if(nCornercut == RPCLeftTop)//�»� |
| | | if(nCornercut == RPCLeftTop) |
| | | { |
| | | //210402 |
| | | /* nResultPosX = double(GLASS_SIZE_WIDTH)/2. + dPosX; |
| | |
| | | nResultPosX = double(GLASS_SIZE_WIDTH) / 2. + dPosX; |
| | | nResultPosY = double(GLASS_SIZE_HEIGHT) / 2. + dPosY; |
| | | } |
| | | else if(nCornercut == RPCRightTop)//��� |
| | | else if(nCornercut == RPCRightTop) |
| | | { |
| | | nResultPosX = double(GLASS_SIZE_WIDTH)/2. + dPosX; |
| | | nResultPosY = double(GLASS_SIZE_HEIGHT)/2. + dPosY; |
| | | |
| | | } |
| | | else if(nCornercut == RPCLeftBottom)//���� |
| | | else if(nCornercut == RPCLeftBottom) |
| | | { |
| | | //210402 |
| | | /*nResultPosX = double(GLASS_SIZE_WIDTH)/2. - dPosX; |
| | |
| | | nResultPosX = double(GLASS_SIZE_WIDTH) / 2. + dPosX; |
| | | nResultPosY = double(GLASS_SIZE_HEIGHT) / 2. + dPosY; |
| | | } |
| | | else if(nCornercut == RPCRightBottom)//���� |
| | | else if(nCornercut == RPCRightBottom) |
| | | { |
| | | nResultPosX = double(GLASS_SIZE_WIDTH) / 2. - dPosX; |
| | | nResultPosY = double(GLASS_SIZE_HEIGHT) / 2. + dPosY; |
| | | } |
| | | } |
| | | else if (nOriginDirection==RPORightBottom) |
| | | {//���������� |
| | | { |
| | | |
| | | if(nCornercut == RPCLeftTop)//�»� |
| | | if(nCornercut == RPCLeftTop) |
| | | { |
| | | nResultPosX = double(GLASS_SIZE_WIDTH)/2. + dPosX; |
| | | nResultPosY = double(GLASS_SIZE_HEIGHT)/2. + dPosY; |
| | | |
| | | } |
| | | else if(nCornercut == RPCRightTop)//��� |
| | | else if(nCornercut == RPCRightTop) |
| | | { |
| | | nResultPosX = double(GLASS_SIZE_WIDTH)/2. + dPosX; |
| | | nResultPosY = double(GLASS_SIZE_HEIGHT)/2. - dPosY; |
| | | |
| | | } |
| | | else if(nCornercut == RPCLeftBottom)//���� |
| | | else if(nCornercut == RPCLeftBottom) |
| | | { |
| | | nResultPosX = double(GLASS_SIZE_WIDTH)/2. - dPosX; |
| | | nResultPosY = double(GLASS_SIZE_HEIGHT)/2. + dPosY; |
| | | } |
| | | else if(nCornercut == RPCRightBottom)//���� |
| | | else if(nCornercut == RPCRightBottom) |
| | | { |
| | | nResultPosX = double(GLASS_SIZE_WIDTH)/2. - dPosX; |
| | | nResultPosY = double(GLASS_SIZE_HEIGHT)/2. - dPosY; |
| | |
| | | CString strFileName = _T(""); |
| | | CString strDefectCodeTemp = _T(""); |
| | | |
| | | // [2017:6:5]-[WEZASW] : Review Image ���ϸ�� '*' ��� ����.(����ó��) |
| | | // [2017:6:5]-[WEZASW] : Review Image |
| | | if (pReviewResult->strDefectCode.Compare(_T("***")) == 0) |
| | | strDefectCodeTemp = _T("DC"); |
| | | else |
| | |
| | | { |
| | | if(pReviewResult == NULL) return FALSE; |
| | | |
| | | //������� ���� �޸� ���� �̹��� �̸� �� ��ǥ ä���ֱ� |
| | | CDitGlassRawClient *pDitGlassRawCleint = CDitGlassRawClient::GetInstance(); |
| | | if(pDitGlassRawCleint->isConnect() == TRUE) |
| | | { |
| | |
| | | |
| | | strcpy(pSharedDefectReview->m_strRevImageName,pReviewResult->strImgFileName.MakeLower()); |
| | | |
| | | //taek 210624 ���� ���� �� ���ش�. |
| | | //taek 210624 |
| | | |
| | | strcpy(pSharedDefectReview->m_strRevImagePath,pReviewResult->strImgFilePath.MakeLower()); |
| | | |
| | | strcpy(pSharedGlassData->m_strAlignFirst, m_strReviewFirst.MakeLower()); |
| | | strcpy(pSharedGlassData->m_strAlignSecond, m_strReviewSecned.MakeLower()); |
| | | |
| | | pSharedDefectReview->m_nPlanType = ditRaw::RPT_Review; //0:None, 1:Location(User, Fiexed) Review, 4:reflower, ??:Wsi, 1000:AOI(�ܺ� ���� ���� ���) |
| | | pSharedDefectReview->m_nPlanType = ditRaw::RPT_Review; //0:None, 1:Location(User, Fiexed) Review, 4:reflower, ??:Wsi, 1000:AOI( |
| | | pSharedDefectReview->m_nResultCode = 1; //0:None, 1:Success |
| | | pSharedDefectReview->m_nShotIndex = pReviewResult->nResultIdx; |
| | | //pSharedDefectReview->m_nShotIndex = GetPlanReviewCount(); //RTMS ���ؿ� ���� ���� ������ ��� �ƴϸ� ������ �ϴ� �ɷ� taek 210128 |
| | | //pSharedDefectReview->m_nShotIndex = GetPlanReviewCount(); //RTMS taek 210128 |
| | | pSharedDefectReview->m_nModuleIndex = pReviewResult->nModuleIdx; |
| | | pSharedDefectReview->m_nMagnificIndex = 20; |
| | | pSharedDefectReview->m_fManification =pReviewResult->dMagnification; |
| | |
| | | |
| | | BOOL CReviewProcessor_CPJT::UpdateMemoryUserPlan( SReviewResult* pReviewResult ) |
| | | { |
| | | //������� ���� �޸� ���� �̹��� �̸� �� ��ǥ ä���ֱ� |
| | | CDitGlassRawClient *pDitRawClient = CDitGlassRawClient::GetInstance(); |
| | | if(pDitRawClient->isConnect() == TRUE) |
| | | { |
| | | int nDefectCount = pDitRawClient->GetGlassData()->m_nDefectNum; // user,reflow �� �˻� ���� ���� �����DZ⿡ ���� ī��Ʈ���� ���ų� ū���� ������ �ִ� |
| | | int nDefectCount = pDitRawClient->GetGlassData()->m_nDefectNum; // user,reflow |
| | | if(pReviewResult->nDefectIdx <nDefectCount) |
| | | { |
| | | return FALSE; |
| | |
| | | |
| | | strcpy(pSharedDefectReview->m_strRevImageName,pReviewResult->strImgFileName); |
| | | |
| | | pSharedDefectReview->m_nPlanType = ditRaw::RPT_User; //0:None, 1:Location(User, Fiexed) Review, 4:reflower, ??:Wsi, 1000:AOI(�ܺ� ���� ���� ���) |
| | | pSharedDefectReview->m_nPlanType = ditRaw::RPT_User; //0:None, 1:Location(User, Fiexed) Review, 4:reflower, ??:Wsi, 1000:AOI( |
| | | pSharedDefectReview->m_nResultCode = 1; //0:None, 1:Success |
| | | pSharedDefectReview->m_nShotIndex = pReviewResult->nResultIdx; |
| | | pSharedDefect->m_nShotIdx = pReviewResult->nResultIdx; |
| | |
| | | pSharedDefectReview->m_nMagnificIndex = pReviewResult->dMagnification; |
| | | pSharedDefectReview->m_fManification = pReviewResult->dMagnification; |
| | | pSharedDefectReview->m_fManificResoultion = pReviewResult->dMagnification; |
| | | m_pRP2P->IRP2P_DisplayMessage(_T("[�����޸�����]�ε���[%d]���ϸ�[%s]"),pReviewResult->nDefectidx2, pReviewResult->strUploadImgFileName); |
| | | m_pRP2P->IRP2P_DisplayMessage(_T("[Access Shared Memory]IDX[%d]Filename[%s]"),pReviewResult->nDefectidx2, pReviewResult->strUploadImgFileName); |
| | | } |
| | | |
| | | |
| | |
| | | BOOL CReviewProcessor_CPJT::UpdateMemoryReflowPlan( SReviewResult* pReviewResult ) |
| | | { |
| | | if(pReviewResult == NULL) return FALSE; |
| | | //������� ���� �޸𸮿� ��� ä�� �ֱ� |
| | | CDitGlassRawClient *pDitRawClient = CDitGlassRawClient::GetInstance(); |
| | | //int nEqpID = m_pSP2P->ISP2P_System_GetSystemInfo()->m_nMachineType; |
| | | CString strCellID = _T(""); |
| | |
| | | nReflowjuge=1; |
| | | } |
| | | |
| | | // ����� ��û���� ������. 0,1 Position�� Pass |
| | | else if(nReflowjuge == 3 || nReflowjuge == 2) |
| | | { |
| | | m_pRP2P->IRP2P_DisplayMessage(_T("[ReflowResult] Reflow Judge Is No OverFlow %d"),nReflowjuge); |
| | |
| | | nReflowjuge=0; |
| | | } |
| | | |
| | | //0:None, // ������ Line�� ����. 3 �̸� : DAM2 Reflow ����, 4~5 : DAM1 Reflow ����, 6 : no Reflow ���� / -1 : image not loaded, -2 : roi setting error, -3 : roi length error, -5 : select wrong side |
| | | if(pReviewResult->nReflow_CellIndex > 7) |
| | | { |
| | | pReviewResult->nReflow_CellIndex = 0; |
| | |
| | | |
| | | if(pDitRawClient->isConnect() == TRUE) |
| | | { |
| | | int nDefectCount = pDitRawClient->GetGlassData()->m_nDefectNum; // user,reflow �� �˻� ���� ���� �����DZ⿡ ���� ī��Ʈ���� ���ų� ū���� ������ �ִ� |
| | | int nDefectCount = pDitRawClient->GetGlassData()->m_nDefectNum; |
| | | if(pReviewResult->nDefectidx2 <nDefectCount) |
| | | { |
| | | return FALSE; |
| | |
| | | |
| | | pSharedDefectReview->m_nPlanType = ditRaw::RTP_Reflow; |
| | | pSharedDefectReview->m_nReflow_ResultCode = pReviewResult->nReflow_Result;// pReviewResult->nReflow_Result; |
| | | //0:None, // ������ Line�� ����. 3 �̸� : DAM2 Reflow ����, 4~5 : DAM1 Reflow ����, 6 : no Reflow ���� / -1 : image not loaded, -2 : roi setting error, -3 : roi length error, -5 : select wrong side |
| | | //pSharedDefectReview->m_fReflow_LinePosData; |
| | | pSharedDefectReview->m_nReflow_Side = pReviewResult->nReflow_Side; |
| | | pSharedDefectReview->m_nReflow_InspectionMode = 0; |
| | | m_pRP2P->IRP2P_DisplayMessage(_T("[�����޸�����]�ε���[%d]���ϸ�[%s]"),pReviewResult->nDefectidx2, pReviewResult->strUploadImgFileName); |
| | | m_pRP2P->IRP2P_DisplayMessage(_T("[Access Shared Memory]IDX[%d]Filename[%s]"),pReviewResult->nDefectidx2, pReviewResult->strUploadImgFileName); |
| | | } |
| | | |
| | | return TRUE; |
| | |
| | | { |
| | | if(pReviewResult == NULL) return FALSE; |
| | | |
| | | //������� ���� �޸𸮿� ��� ä�� �ֱ� |
| | | CDitGlassRawClient *pDitGlassRawClient = CDitGlassRawClient::GetInstance(); |
| | | |
| | | if(pDitGlassRawClient->isConnect() == TRUE) |
| | |
| | | |
| | | pSharedDefectReview->m_nPlanType = ditRaw::RTP_WSI; |
| | | pSharedDefectReview->m_nWsi_ResultCode=pReviewResult->nWsi_ResultCode; //0:None, 1:Success |
| | | pSharedDefectReview->m_nWsi_Type = 2;/* nWSIType; // �Ը� / ���� //wsi ���� */ |
| | | pSharedDefectReview->m_nWsi_Type = 2; |
| | | pSharedDefectReview->m_fWsi_ResultData[0]= pReviewResult->nWsi_DefectType; // 0:normal 1:metal 2:huge 3:diffuse 4:trashy |
| | | pSharedDefectReview->m_fWsi_ResultData[1]=(float)(nWSIheight/1000.0); |
| | | pSharedDefectReview->m_fWsi_ResultData[2]=(float)(nWSIWidth/1000.0); // 0:Type, 1:Height, 2:Width |
| | |
| | | pSharedDefectReview->m_fWsi_ResultData[6] = pReviewResult->dBZoneHeight; |
| | | pSharedDefectReview->m_strWsi_2DImageFilename; |
| | | pSharedDefectReview->m_strWsi_3DImageFilename; |
| | | pSharedDefectReview->m_fWsiManification = 20;//20�� ���� |
| | | pSharedDefectReview->m_fWsiManification = 20; |
| | | pSharedDefectReview->m_dWsiMmMotorX=pReviewResult->dTargetMotorX; |
| | | pSharedDefectReview->m_dWsiMmMotorY=pReviewResult->dTargetMotorY; |
| | | |
| | |
| | | BOOL CReviewProcessor_CPJT::UpdateMemoryWsiReflowPlan( SReviewResult* pReviewResult ) |
| | | { |
| | | if(pReviewResult == NULL) return FALSE; |
| | | //������� ���� �޸𸮿� ��� ä�� �ֱ� |
| | | CDitGlassRawClient *pDitRawClient = CDitGlassRawClient::GetInstance(); |
| | | |
| | | |
| | |
| | | |
| | | int nWsiReflowResult = 0; |
| | | int nWsiReflowJudge = -1; |
| | | |
| | | /* |
| | | pPacket->GetInt(0) = Index |
| | | pPacket->GetInt(1) = Wsi ���� ��� |
| | | pPacket->GetInt(2) = A�� ���� ��� (1 ���� 0 ����) |
| | | pPacket->GetInt(3) = B�� ���� ��� |
| | | pPacket->GetInt(4) = C�� ���� ��� |
| | | pPacket->GetInt(5) = D�� ���� ��� |
| | | pPacket->GetInt(6) = Review���� ������� PointIndex |
| | | pPacket->GetDouble(0) = �£�� Monomo������ �Ÿ� |
| | | */ |
| | | |
| | | // int nReflowjuge=0; |
| | | // for(int nZone=2; nZone<6; nZone++) |
| | |
| | | |
| | | nWsiReflowJudge = pReviewResult->nWsi_ResultCode; |
| | | |
| | | //nWsiReflowResult += pReviewResult->nWsi_pReflowResultData[0] //A 1�� �Ű�Ⱦ� |
| | | //nWsiReflowResult += pReviewResult->nWsi_pReflowResultData[0] //A |
| | | nWsiReflowResult += pReviewResult->nWsi_pReflowResultData[1];//B |
| | | nWsiReflowResult += pReviewResult->nWsi_pReflowResultData[2];//C |
| | | //nWsiReflowResult += pReviewResult->nWsi_pReflowResultData[3];//D |
| | |
| | | { |
| | | if(pReviewResult == NULL) return FALSE; |
| | | |
| | | //������� ���� �޸𸮿� ��� ä�� �ֱ� |
| | | CDitGlassRawClient *pDitGlassRawClient = CDitGlassRawClient::GetInstance(); |
| | | |
| | | if(pDitGlassRawClient->isConnect() == TRUE) |
| | |
| | | |
| | | pSharedDefectReview->m_nPlanType = ditRaw::RTP_UserWsi; |
| | | pSharedDefectReview->m_nWsi_ResultCode=pReviewResult->nWsi_ResultCode; //0:None, 1:Success |
| | | pSharedDefectReview->m_nWsi_Type=nWSIType; // �Ը� / ���� |
| | | pSharedDefectReview->m_nWsi_Type=nWSIType; |
| | | pSharedDefectReview->m_fWsi_ResultData[0]= nWSIType; |
| | | pSharedDefectReview->m_fWsi_ResultData[1]=(float)(nWSIheight/100.0); |
| | | pSharedDefectReview->m_fWsi_ResultData[2]=(float)(nWSIWidth/100.0); // 0:Type, 1:Height, 2:Width |
| | | pSharedDefectReview->m_strWsi_2DImageFilename; |
| | | pSharedDefectReview->m_strWsi_3DImageFilename; |
| | | pSharedDefectReview->m_fWsiManification = 20;//20�� ���� |
| | | pSharedDefectReview->m_fWsiManification = 20; |
| | | pSharedDefectReview->m_dWsiMmMotorX=pReviewResult->dTargetMotorX; |
| | | pSharedDefectReview->m_dWsiMmMotorY=pReviewResult->dTargetMotorY; |
| | | } |
| | |
| | | { |
| | | if (pReviewResult == NULL) return FALSE; |
| | | |
| | | //������� ���� �޸𸮿� ��� ä�� �ֱ� |
| | | CDitGlassRawClient *pDitGlassRawClient = CDitGlassRawClient::GetInstance(); |
| | | |
| | | if (pDitGlassRawClient->isConnect() == TRUE) |
| | |
| | | |
| | | pSharedDefectReview->m_nPlanType = ditRaw::RTP_WSI; |
| | | pSharedDefectReview->m_nWsi_ResultCode = pReviewResult->nWsi_ResultCode; //0:None, 1:Success |
| | | pSharedDefectReview->m_nWsi_Type = nWSIType; // �Ը� / ���� |
| | | pSharedDefectReview->m_nWsi_Type = nWSIType; |
| | | pSharedDefectReview->m_fWsi_ResultData[0] = nWSIType; |
| | | pSharedDefectReview->m_fWsi_ResultData[1] = (float)(nWSIheight / 100.0); |
| | | pSharedDefectReview->m_fWsi_ResultData[2] = (float)(nWSIWidth / 100.0); // 0:Type, 1:Height, 2:Width |
| | | pSharedDefectReview->m_strWsi_2DImageFilename; |
| | | pSharedDefectReview->m_strWsi_3DImageFilename; |
| | | pSharedDefectReview->m_fWsiManification = 20;//20�� ���� |
| | | pSharedDefectReview->m_fWsiManification = 20; |
| | | pSharedDefectReview->m_dWsiMmMotorX = pReviewResult->dTargetMotorX; |
| | | pSharedDefectReview->m_dWsiMmMotorY = pReviewResult->dTargetMotorY; |
| | | |
| | |
| | | double TempValue = 0; |
| | | double m_nResultFocusValue = 0; |
| | | |
| | | // ���� XY ���� X+1, Y+1�� ���� ������ |
| | | for (int y = 0; y < nHeight - 1; y++) |
| | | { |
| | | for (int x = 0; x < nWidth - 1; x++) |
| | |
| | | { |
| | | if (g_pLog) |
| | | { |
| | | //210617 TEST |
| | | //delete g_pLog; |
| | | } |
| | | } |
| | |
| | | PUSHBUTTON "Key Jog ìì",IDC_KEY_JOD_MOVE,207,167,45,17,NOT WS_VISIBLE | NOT WS_TABSTOP |
| | | PUSHBUTTON "test2",IDC_BUTTON_TEST2,273,167,34,17,NOT WS_VISIBLE |
| | | CTEXT "Key Jogìì",IDC_KEY_JOG_MOVE,392,160,31,24 |
| | | PUSHBUTTON "Reduce",IDC_CHECK_UI_REDUCE,436,77,51,17 |
| | | PUSHBUTTON "Left",IDC_BUTTON_UI_LEFT,436,96,50,17 |
| | | PUSHBUTTON "Right",IDC_BUTTON_UI_RIGHT1,436,116,50,17 |
| | | PUSHBUTTON "Reduce",IDC_CHECK_UI_REDUCE,436,73,51,17 |
| | | PUSHBUTTON "Left",IDC_BUTTON_UI_LEFT,436,92,50,17 |
| | | PUSHBUTTON "Right",IDC_BUTTON_UI_RIGHT1,436,112,50,17 |
| | | CONTROL "Track",IDC_CHECK_AFM_TRACK,"Button",BS_AUTOCHECKBOX | BS_PUSHLIKE | WS_TABSTOP,369,77,29,57 |
| | | LTEXT "GlassCenter X/Y(mm)",IDC_STATIC,10,105,74,8 |
| | | PUSHBUTTON "Go",IDC_BUTTON_GLASSCENTER_GO_XY,196,101,27,17 |
| | |
| | | CONTROL "OffSet ON",IDC_SELECT_OFFSET_ON,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,418,61,63,10 |
| | | PUSHBUTTON "ReviewPopUp",IDC_BT_REVIEW_POPUP,433,18,54,17 |
| | | CONTROL "Use Simulation",IDC_CHECK_USE_SIMULATION,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_TABSTOP,418,41,66,10 |
| | | PUSHBUTTON "Align Grab",IDC_BUTTON_ALIGNCAM_GRAB,436,130,50,16 |
| | | END |
| | | |
| | | IDD_DLG_MODULE_INFO DIALOGEX 0, 0, 532, 187 |
| | |
| | | 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 |
| | |
| | | <TargetEnvironment>X64</TargetEnvironment> |
| | | </Midl> |
| | | <ClCompile> |
| | | <Optimization>MaxSpeed</Optimization> |
| | | <Optimization>Disabled</Optimization> |
| | | <IntrinsicFunctions>true</IntrinsicFunctions> |
| | | <AdditionalIncludeDirectories>../include;../../Internal_Library/include;../../External_Library/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> |
| | | <PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
| | |
| | | <PreBuildEvent> |
| | | <Command>updateDlls.bat</Command> |
| | | </PreBuildEvent> |
| | | <ClCompile> |
| | | <Optimization>Disabled</Optimization> |
| | | </ClCompile> |
| | | </ItemDefinitionGroup> |
| | | <ItemGroup> |
| | | <ClCompile Include="..\include\M_AutoDiagnosisManager\StaticGNUPlot.cpp" /> |
| | |
| | | m_nAlive = 0; |
| | | |
| | | m_nWsiTotalCount = 0; |
| | | |
| | | //#3584 210817 LYW CF AOI Review ì뮬ë ì´ì
ê¸°ë¥ ì ìí ADD START |
| | | m_bSimulationMode = FALSE; |
| | | //#3584 210817 LYW CF AOI Review ì뮬ë ì´ì
ê¸°ë¥ ì ìí ADD END |
| | | InitializeCriticalSection(&m_csProcessStatus); |
| | | } |
| | | |
| | |
| | | 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: |
| | |
| | | void SetSP2P(ISequenceProcessor2Parent* pSP2P); |
| | | void SetLineMachineType(int nLineType, int nMachineType, CString strEqpID); |
| | | void SetDefaultValue(); |
| | | //#3584 210817 LYW CF AOI Review ì뮬ë ì´ì
ê¸°ë¥ ì ìí ADD START |
| | | void SetSimulationMode(BOOL bCheck) { m_bSimulationMode = bCheck; }; |
| | | //#3584 210817 LYW CF AOI Review ì뮬ë ì´ì
ê¸°ë¥ ì ìí ADD END |
| | | |
| | | // getter |
| | | int GetProcessMode() const; |
| | | int GetProcessStatus() const; |
| | | //#3584 210817 LYW CF AOI Review ì뮬ë ì´ì
ê¸°ë¥ ì ìí ADD START |
| | | BOOL GetSimulationMode() { return m_bSimulationMode; }; |
| | | //#3584 210817 LYW CF AOI Review ì뮬ë ì´ì
ê¸°ë¥ ì ìí ADD END |
| | | |
| | | static int GetDirectionX(int nGlassDirection, int nMotorDirection); |
| | | static int GetDirectionY(int nGlassDirection, int nMotorDirection); |
| | |
| | | |
| | | // Review, WSI Stop Siganl |
| | | BOOL SetMotionStop(); |
| | | // Align Camera Control command |
| | | BOOL AlignCamera_CameraControl(int nControlCmd); |
| | | |
| | | protected: |
| | | // common |
| | |
| | | // PCControl Control command |
| | | BOOL Signal_SendSignal(int nSignalIndex); |
| | | BOOL PCControl_ReadTransferData(STransferData* pTransferData); |
| | | |
| | | // Align Camera Control command |
| | | BOOL AlignCamera_CameraControl(int nControlCmd); |
| | | |
| | | // Review Camera Control Command |
| | | void ReviewCamera_CameraControl(int nControlCmd); |
| | |
| | | CTime m_wsiStartTime; |
| | | |
| | | int m_nWsiTotalCount; |
| | | |
| | | //#3584 210817 LYW CF AOI Review ì뮬ë ì´ì
ê¸°ë¥ ì ìí ADD START |
| | | BOOL m_bSimulationMode; |
| | | //#3584 210817 LYW CF AOI Review ì뮬ë ì´ì
ê¸°ë¥ ì ìí ADD END |
| | | }; |
| | |
| | | #define AOIRAWBIN_NETWORK_DRIVE_PATH "Y:\\RawBin" |
| | | |
| | | enum CPJT_MeasureMode { CPJT_ModeAuto = 0, CPJT_ModeManual }; |
| | | // [2017:4:18]-[WEZASW] : WSI Module ���� ������ ��� PlanType ��ȣ ����. |
| | | // [2017:4:18]-[WEZASW] : WSI Module |
| | | enum CPJT_PlanType { CPJT_PlanReview = 0, CPJT_PlanUser, CPJT_PlanWSI, CPJT_PlanMeasure, CPJT_PlanReflow, CPJT_PlanWsiReflow, CPJT_PlanWsiUser,CPJT_PlanWsiMultiShot |
| | | }; |
| | | enum CPJT_InsepectionType{REVIEW_REFLOW = 0, WSI_REFLOW, REV_WSI,WSIUSER, USER,WSIMULTISHOT}; |
| | |
| | | CDitGlassRawClient* pDitGlassRaw = CDitGlassRawClient::GetInstance(); |
| | | if(pDitGlassRaw->ConnectServer() == FALSE) |
| | | { |
| | | g_pLog->DisplayMessage(_T("�����޸� ���� ����!(Shared memory Access Fail)")); |
| | | g_pLog->DisplayMessage(_T("(Shared memory Access Fail)")); |
| | | } |
| | | } |
| | | |
| | |
| | | EnterCriticalSection(&m_csProcessStatus); |
| | | |
| | | BOOL bReturn = FALSE; |
| | | |
| | | // ���� ���°� ���� ���¿� �ٸ���? |
| | | |
| | | //if (nProcessStatus!=m_nProcessStatus || nProcessStatus==0) |
| | | if (1)//nProcessStatus!=m_nProcessStatus || nProcessStatus==0) |
| | | { |
| | | //if (nProcessStatus==0) // �ʱ�(0) �����̸�.. |
| | | //if (nProcessStatus==0) |
| | | //{ |
| | | // bReturn = TRUE; |
| | | //} |
| | | // else if (nProcessStatus==(m_nProcessStatus+1)) // ���� ���� ����(+1)�̸�.. |
| | | // else if (nProcessStatus==(m_nProcessStatus+1)) |
| | | // { |
| | | // bReturn = TRUE; |
| | | // } |
| | |
| | | // bReturn = FALSE; |
| | | //} |
| | | |
| | | if (bReturn) // �����̸�... |
| | | if (bReturn) |
| | | { |
| | | // Thread ���� �� Thread ���� |
| | | CSequenceProcessData* pThreadData = new CSequenceProcessData(this); |
| | | if (pThreadData) |
| | | { |
| | |
| | | } |
| | | } |
| | | else if(nProcessStatus==2){ |
| | | // Thread ���� �� Thread ���� |
| | | CSequenceProcessData* pThreadData = new CSequenceProcessData(this); |
| | | if (pThreadData) |
| | | { |
| | |
| | | CReviewResult* pWsiResult = pGlassResult->GetWsiResult(nModuleIndex); |
| | | if (pWsiResult==NULL) goto RESULT_FAIL; |
| | | |
| | | // ������ �ε����� �����´�. |
| | | int nCurResultIdx = pWsiResult->GetLastSReviewResultIndex() + 1; // last index + 1 |
| | | int nStartResultIdx = pWsiResult->GetStartSReviewResultIndex(); |
| | | int nEndResultIdx = pWsiResult->GetEndSReviewResultIndex(); |
| | |
| | | int nMPosY = int(pPosition->dMotorPosY * 1000.0); |
| | | double dTime = (double) m_ProcessTimer.GetDurationMilliSecond(); |
| | | |
| | | // �ε����� �ٸ��� ��������. |
| | | if (measureResut.nResultIndex != nCurResultIdx) |
| | | { |
| | | goto RESULT_FAIL; |
| | | } |
| | | |
| | | // ���� ������ ����. |
| | | // measureResut |
| | | |
| | | if(pWsiResult->GetSReviewResultCount() == 0) return ; |
| | |
| | | // set last result idx |
| | | pWsiResult->SetLastSReviewResultIndex(nCurResultIdx); |
| | | |
| | | // ������ ����Ʈ���� �԰�, WSI ����� ���� ������... |
| | | if(nCurResultIdx==nEndResultIdx && nCurResultIdx<=pWsiResult->GetSReviewResultCount()) |
| | | { |
| | | nStartResultIdx = nCurResultIdx + 1; |
| | |
| | | pWsiResult->SetStartSReviewResultIndex(nStartResultIdx); |
| | | pWsiResult->SetEndSReviewResultIndex(nEndResultIdx); |
| | | |
| | | // ������ ����Ʈ ���� ��������. |
| | | ::Sleep(3000); // ����̴� �ʼ���. ������ ���� ����. |
| | | ::Sleep(3000); |
| | | // Process_RemainWsiPoint(nModuleIndex); |
| | | } |
| | | |
| | |
| | | CReviewResult* pWsiResult = pGlassResult->GetWsiUserResult(nModuleIndex); |
| | | if (pWsiResult==NULL) goto RESULT_FAIL; |
| | | |
| | | // ������ �ε����� �����´�. |
| | | int nCurResultIdx = pWsiResult->GetLastSReviewResultIndex() + 1; // last index + 1 |
| | | int nStartResultIdx = pWsiResult->GetStartSReviewResultIndex(); |
| | | int nEndResultIdx = pWsiResult->GetEndSReviewResultIndex(); |
| | |
| | | int nMPosY = int(pPosition->dMotorPosY * 1000.0); |
| | | double dTime = (double) m_ProcessTimer.GetDurationMilliSecond(); |
| | | |
| | | // �ε����� �ٸ��� ��������. |
| | | if (measureResut.nResultIndex != nCurResultIdx) |
| | | { |
| | | goto RESULT_FAIL; |
| | | } |
| | | |
| | | // ���� ������ ����. |
| | | // measureResut |
| | | |
| | | if(pWsiResult->GetSReviewResultCount() == 0) return ; |
| | |
| | | // set last result idx |
| | | pWsiResult->SetLastSReviewResultIndex(nCurResultIdx); |
| | | |
| | | // ������ ����Ʈ���� �԰�, WSI ����� ���� ������... |
| | | if(nCurResultIdx==nEndResultIdx && nCurResultIdx<=pWsiResult->GetSReviewResultCount()) |
| | | { |
| | | nStartResultIdx = nCurResultIdx + 1; |
| | |
| | | pWsiResult->SetStartSReviewResultIndex(nStartResultIdx); |
| | | pWsiResult->SetEndSReviewResultIndex(nEndResultIdx); |
| | | |
| | | // ������ ����Ʈ ���� ��������. |
| | | ::Sleep(3000); // ����̴� �ʼ���. ������ ���� ����. |
| | | ::Sleep(3000); |
| | | // Process_RemainWsiPoint(nModuleIndex); |
| | | } |
| | | |
| | |
| | | g_pLog->DisplayMessage(_T("[AlignResult] Glass Result is NULL!")); |
| | | SendResultToSignalControl(PCControlSendData_AlignResult_CPJT, SIGNAL_SEND_RESULT_FAIL); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Fail Signal!")); |
| | | |
| | | AlignCamera_CameraControl(CameraControlStop); // 210805 Align Camera Sequence ���� |
| | | return; |
| | | } |
| | | |
| | |
| | | CAlignResult *pAlignResult = &pGlassResult->m_AlignResult; |
| | | CAlignRecipe *pAlignRecipe = &pGlassResult->m_AlignRecipe; |
| | | |
| | | // ����� �ڵ����� ��� �����ǿ� ��������. |
| | | CRsRcpAlignInfo *pRsRcpAlignInfo = m_pSP2P->ISP2P_Recipe_GetRsRcpAlignInfo(); |
| | | if (pRsRcpAlignInfo!=NULL && pRsRcpAlignInfo->m_bAutoProcess) |
| | | { |
| | |
| | | pRsRcpAlignInfo->m_dSecondCamExposure = pCurAlignResult->dExposureTime[1]; |
| | | } |
| | | |
| | | // ������ ����Ÿ ���� |
| | | //m_pDoc->Recipe_WriteRecipeFile(); |
| | | } |
| | | |
| | | |
| | | BOOL bLastAlignResult = FALSE; |
| | | CCoordCalibrator *pCoordCalibrator = m_pSP2P->ISP2P_GetCoordCalibrator(); |
| | | // ���� ����� ���.. |
| | | if (pCoordCalibrator && pCurAlignResult->nResultCode==Align_Success) |
| | | { |
| | | g_pLog->DisplayMessage(_T("[AlignResult] Align Find Success!")); |
| | | |
| | | // ����� ��� �۶� ������ ���� |
| | | *pAlignResult = *pCurAlignResult; |
| | | |
| | | pCoordCalibrator->SetFirstMarkPos(pAlignResult->dFindPositionX[0], pAlignResult->dFindPositionY[0], pAlignRecipe->dGlassPositionX[0], pAlignRecipe->dGlassPositionY[0]); |
| | | pCoordCalibrator->SetSecondMarkPos(pAlignResult->dFindPositionX[1], pAlignResult->dFindPositionY[1], pAlignRecipe->dGlassPositionX[1], pAlignRecipe->dGlassPositionY[1]); |
| | | |
| | | // ���� ��� |
| | | if(pCoordCalibrator->CalculateAlignResult() == TRUE) |
| | | { |
| | | sAlignResult = pCoordCalibrator->GetAlignResult(); |
| | |
| | | bLastAlignResult = !pAlignRecipe->bRotateProcess; |
| | | } |
| | | |
| | | // �۶� ���� ���� ���� |
| | | CCameraControlAlign *pAlignCameraControl = m_pSP2P->ISP2P_GetAlignCameraControl(); |
| | | SThetaMotorInfo* pThetaMotorInfo = m_pSP2P->ISP2P_GetThetaMotorInfo(); |
| | | CMotorControl* pMotorControl = m_pSP2P->ISP2P_GetMotorControl(); |
| | | |
| | | if (pAlignRecipe->bRotateProcess && pAlignCameraControl && pMotorControl && pThetaMotorInfo) |
| | | { |
| | | if (fabs(sAlignResult.dDegree) <= pAlignRecipe->dGlassAngleMin) // ���� �۶� ������ �ּҰ����� ������ ���� |
| | | if (fabs(sAlignResult.dDegree) <= pAlignRecipe->dGlassAngleMin) |
| | | { |
| | | bLastAlignResult = TRUE; |
| | | g_pLog->DisplayMessage(_T("[AlignResult] Success! Last Glass Angle : %.8lf degree, Retry Count : %d ea"), |
| | | sAlignResult.dDegree, pCurAlignResult->nFindCount); |
| | | } |
| | | else if (fabs(sAlignResult.dDegree) > pAlignRecipe->dGlassAngleMax) // ���� �۶� ������ �ִ밢���� ũ�� ���� |
| | | else if (fabs(sAlignResult.dDegree) > pAlignRecipe->dGlassAngleMax) |
| | | { |
| | | bLastAlignResult = FALSE; |
| | | g_pLog->DisplayMessage(_T("[AlignResult] FAIL! Last Glass Angle : %.8lf degree, Retry Count : %d ea"), |
| | | sAlignResult.dDegree, pCurAlignResult->nFindCount); |
| | | } |
| | | else if (pCurAlignResult->nFindCount < pAlignRecipe->nRetryCount) // �纸�� Ƚ���� ������ Ƚ�� �����̸� �纸�� ���� |
| | | else if (pCurAlignResult->nFindCount < pAlignRecipe->nRetryCount) |
| | | { |
| | | g_pLog->DisplayMessage(_T("[AlignResult] Current Glass Angle : %.8lf degree, Retry Count : %d ea"), |
| | | sAlignResult.dDegree, pCurAlignResult->nFindCount); |
| | | |
| | | // ���ͷ� ���� ����.. |
| | | double dCalAngle = sAlignResult.dDegree; |
| | | dCalAngle = pThetaMotorInfo->dPosition - dCalAngle ; |
| | | g_pLog->DisplayMessage(_T("[AlignResult] Move Rotate Glass Angle : %.8lf degree"), dCalAngle); |
| | | pMotorControl->AxisThetaManualGoEnd(dCalAngle); |
| | | ::Sleep(100); |
| | | |
| | | // ����� ReProcess |
| | | if (pAlignCameraControl->AlignProcess()) |
| | | { |
| | | g_pLog->DisplayMessage(_T("[AlignResult] Align Find Process ReStarted!")); |
| | |
| | | //m_pView->SetAlignResult(pAlignResult->nResultCode, sAlignResult.dOriginX, sAlignResult.dOriginY, sAlignResult.dDegree); |
| | | } |
| | | |
| | | // PCControl ����� ��ȣ ����. |
| | | if (bLastAlignResult) // ���� �����... |
| | | if (bLastAlignResult) |
| | | { |
| | | SendResultToSignalControl(PCControlSendData_AlignResult_CPJT, SIGNAL_SEND_RESULT_SUCCESS); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Success Data!")); |
| | |
| | | SendResultToSignalControl(PCControlSendData_AlignResult_CPJT, SIGNAL_SEND_RESULT_FAIL); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Fail Data!")); |
| | | } |
| | | |
| | | AlignCamera_CameraControl(CameraControlStop); // 210805 Align Camera Sequence ë³ê²½ |
| | | |
| | | SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_AlignComplete_CPJT); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Complete Signal!")); |
| | |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewStart] Send Review Success Signal!")); |
| | | m_pSP2P->ISP2P_UpdateReviewProcessStatus(ReviewProcessStatus_None, nPlanIndex); |
| | | |
| | | |
| | | //����� |
| | | AFM_SetAFMTracking(FALSE); |
| | | return; |
| | | } |
| | | |
| | | //190727 chm WSI ����� End üũ �� ���� |
| | | if(nBeforePlanIndex== CPJT_PlanWSI||nBeforePlanIndex== CPJT_PlanWsiReflow||nBeforePlanIndex== CPJT_PlanWsiUser) |
| | | { |
| | | if(pPlanInfo->m_nReviewType == CPJT_PlanWSI ||pPlanInfo->m_nReviewType == CPJT_PlanWsiReflow||pPlanInfo->m_nReviewType== CPJT_PlanWsiUser || pPlanInfo->m_nReviewType == CPJT_PlanWsiMultiShot) |
| | |
| | | } |
| | | } |
| | | |
| | | //190727 chm WSI type ������ Review �÷��� ����� ī�޶� �۶� �ۿ� ������츦 ����... |
| | | if(nBeforePlanIndex== CPJT_PlanWSI ||nBeforePlanIndex== CPJT_PlanWsiReflow||nBeforePlanIndex== CPJT_PlanWsiUser) |
| | | { |
| | | if( pPlanInfo->m_nReviewType == CPJT_PlanReview|| pPlanInfo->m_nReviewType == CPJT_PlanUser|| pPlanInfo->m_nReviewType == CPJT_PlanMeasure|| pPlanInfo->m_nReviewType == CPJT_PlanReflow) |
| | | { |
| | | |
| | | CTotalPitchMeasure* pTotapPithMeasure = m_pSP2P->ISP2P_GetTotalPitchMeasure(); // �������! 20190730 chm ���߿� �Լ��� ����.... |
| | | CTotalPitchMeasure* pTotapPithMeasure = m_pSP2P->ISP2P_GetTotalPitchMeasure(); |
| | | |
| | | const CMotorControlInfo* pSystemMotorInfo = m_pSP2P->ISP2P_System_GetMotorInfo(); |
| | | if(pSystemMotorInfo !=NULL) |
| | |
| | | if(pPlanInfo == NULL) continue; |
| | | |
| | | //210325 |
| | | //END �� ��ε��� �Ǿ�������� �ش� �Լ��� ������� ���ư��� �־� start �Լ��� Ÿ���� |
| | | //�װͿ� ���� ����ó�� |
| | | if (GetProcessStatus() == ProcessReviewEnd_CPJT || GetProcessStatus() == ProcessReviewUnloding_CPJT) |
| | | { |
| | | g_pLog->DisplayMessage(_T("[ProcessStop] StartProcessing Sequence Stop Status : %d"), GetProcessStatus()); |
| | |
| | | if (( nTotalCount += pGlassResult->GetTotalSReviewResultCount()) > 0) |
| | | { |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[Sequence Processor] Review Plan Start!")); |
| | | //LYW DCOLL �ӽ���ġ |
| | | CDitGlassRawClient *pDitRawClient = CDitGlassRawClient::GetInstance(); |
| | | if (pDitRawClient->isConnect() == TRUE) |
| | | { |
| | | |
| | | _grmDefectData* pSharedDefect = pDitRawClient->GetDefectData(0);//pReviewResult->nDefectidx2 |
| | | _grmDefectReviewData * pSharedDefectReview = &pSharedDefect->m_ReviewDefect; |
| | | |
| | | //size_t CharactersConverted; |
| | | //wcstombs_s(&CharactersConverted, pSharedDefectReview->m_strRevImageName, pReviewResult->strImgFileName, _TRUNCATE); |
| | | |
| | | strcpy(pSharedDefectReview->m_strRevImageName, ""); |
| | | } |
| | | //LYW DCOLL �ӽ���ġ |
| | | ::Sleep(nWaitTime); |
| | | m_pSP2P->ISP2P_GetReviewProcessor()->ResetGantryDone(); |
| | | bExcute = ReviewStartProcessing(pGlassResult, nPlanIdx); |
| | |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[Sequence Processor] WSI Plan End!")); |
| | | } |
| | | break; |
| | | //�̻�� |
| | | |
| | | case CPJT_PlanMeasure: |
| | | if (( nTotalCount += pGlassResult->GetTotalSMeasureResultCount()) > 0) |
| | | { |
| | |
| | | break; |
| | | |
| | | } |
| | | //#3584 210817 LYW CF AOI Review ì뮬ë ì´ì
ê¸°ë¥ ì ìí ADD START |
| | | SetSimulationMode(FALSE); |
| | | //#3584 210817 LYW CF AOI Review ì뮬ë ì´ì
ê¸°ë¥ ì ìí ADD END |
| | | return; |
| | | } |
| | | |
| | |
| | | |
| | | AllAckSignalOff(); |
| | | m_pSP2P->ISP2P_GetReviewProcessor()->ResetGantryDone(); |
| | | SetCheckWSIEnd(-1); //190726 wsiendüũ ï¿½Ê±ï¿½È |
| | | SetWsiType(-1); //wsi reflow Ÿ�� ���� ï¿½Ê±ï¿½È |
| | | SetCheckWSIEnd(-1); //190726 |
| | | SetWsiType(-1); //wsi reflow |
| | | SetLastPointCheck(FALSE); |
| | | |
| | | bFileFind = FALSE; |
| | | |
| | | m_pSP2P->ISP2P_GetDiagnosisHistory(); |
| | | |
| | | if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_LoadingAck_CPJT)) |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading] Send Loading Ack Signal!")); |
| | | |
| | | m_pSP2P->ISP2P_SetFirstReviewLeft(TRUE); |
| | | m_pSP2P->ISP2P_SetFirstReviewRight(TRUE); |
| | | |
| | | //#3584 210817 LYW CF AOI Review ì뮬ë ì´ì
ê¸°ë¥ ì ìí MOD START |
| | | if (GetSimulationMode() == FALSE) |
| | | { |
| | | if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_LoadingAck_CPJT)) |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading] Send Loading Ack Signal!")); |
| | | } |
| | | //#3584 210817 LYW CF AOI Review ì뮬ë ì´ì
ê¸°ë¥ ì ìí MOD END |
| | | //Original |
| | | // if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_LoadingAck_CPJT)) |
| | | // m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading] Send Loading Ack Signal!")); |
| | | |
| | | // read config file |
| | | if(!m_pSP2P->ISP2P_System_ReadConfigFile()) |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor] System Value Loading FAIL!")); |
| | |
| | | } |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Loading] Glass Result Count : %d ea"), nGlassResultCount); |
| | | |
| | | pGlassResult->ResetDefocusCount();//�ε� �κп��� defocus count ï¿½Ê±ï¿½È 190821 chm |
| | | pGlassResult->ResetDefocusCount(); |
| | | |
| | | |
| | | CTime time = CTime::GetCurrentTime(); |
| | | pGlassResult->m_strResultDate.Format(_T("%04d.%02d.%02d"), time.GetYear(), time.GetMonth(), time.GetDay()); |
| | | |
| | | //if(Revolver_SetGoHome(0)) // ������ HOME ������ |
| | | //if(Revolver_SetGoHome(0)) |
| | | //{ |
| | | // m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Loading] Revolver Set GoHome Success!")); |
| | | //} |
| | | |
| | | //#3357 KYH Align Image ï¿½Ê±ï¿½È ADD START |
| | | //#3357 KYH Align Image ADD START |
| | | CCameraControlAlign* pAlignCameraControl = m_pSP2P->ISP2P_GetAlignCameraControl(); |
| | | if (pAlignCameraControl != NULL) |
| | | { |
| | |
| | | |
| | | g_pLog->DisplayMessage(_T("[Align] Align Image Clear")); |
| | | } |
| | | //#3357 KYH Align Image ï¿½Ê±ï¿½È ADD END |
| | | //#3357 KYH Align Image ADD END |
| | | |
| | | // get transfer data |
| | | int nResultCode = 0; |
| | |
| | | |
| | | if (pDitRawClient->isConnect()==FALSE) |
| | | { |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading]�����޸� ���� ���� �翬�� �õ� ")); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading] DitRawClient Connect Fail ")); |
| | | int nReconnect=0; |
| | | while (1) |
| | | { |
| | | if (nReconnect == 3) |
| | | { |
| | | SendResultToSignalControl(PCControlSendData_LoadingResult_CPJT, SIGNAL_SEND_RESULT_FAIL); |
| | | //#3584 210817 LYW CF AOI Review ì뮬ë ì´ì
ê¸°ë¥ ì ìí MOD START |
| | | if (GetSimulationMode() == FALSE) |
| | | { |
| | | SendResultToSignalControl(PCControlSendData_LoadingResult_CPJT, SIGNAL_SEND_RESULT_FAIL); |
| | | } |
| | | //#3584 210817 LYW CF AOI Review ì뮬ë ì´ì
ê¸°ë¥ ì ìí MOD END |
| | | //original |
| | | /*SendResultToSignalControl(PCControlSendData_LoadingResult_CPJT, SIGNAL_SEND_RESULT_FAIL);*/ |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading] Send Loading FAIL Signal!")); |
| | | |
| | | break; |
| | |
| | | Sleep(1000); |
| | | if (pDitRawClient->isConnect() == FALSE) |
| | | { |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading]�����޸� ���� ���� Count[%d]"), nReconnect); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading]DitRawClient Connect Fail Count[%d]"), nReconnect); |
| | | } |
| | | else |
| | | { |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading]�����޸� ���� ����")); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading]DitRawClient Connect Success")); |
| | | break; |
| | | } |
| | | nReconnect += 1; |
| | |
| | | |
| | | } |
| | | |
| | | // #3381 LYW CF AOI Review ������ FDC TackTime ������ ���� ���� ADD START |
| | | // #3381 LYW CF AOI Review FDC TackTime ADD START |
| | | pDitRawClient->GetGlassData()->m_tmReviewLoading = CTime::GetCurrentTime(); |
| | | // #3381 LYW CF AOI Review ������ FDC TackTime ������ ���� ���� ADD END |
| | | // #3381 LYW CF AOI Review FDC TackTime ADD END |
| | | |
| | | |
| | | CString strGlassIDTemp = NULL; |
| | |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading] Send Loading Success Signal!")); |
| | | |
| | | strFileName.Format(_T("%s_%s"), strGlassIDTemp, strGlassStepIdTemp); |
| | | |
| | | //������Ʈ�� |
| | | //bFileFind = FindRawBinFile(strFileName); |
| | | bFileFind = TRUE; |
| | | |
| | | //#3584 210817 LYW CF AOI Review ì뮬ë ì´ì
ê¸°ë¥ ì ìí MOD START |
| | | if (GetSimulationMode() == FALSE) |
| | | { |
| | | bFileFind = FindRawBinFile(strFileName); |
| | | } |
| | | else |
| | | { |
| | | bFileFind = TRUE; |
| | | } |
| | | //#3584 210817 LYW CF AOI Review ì뮬ë ì´ì
ê¸°ë¥ ì ìí MOD END |
| | | //original |
| | | /*bFileFind = FindRawBinFile(strFileName);*/ |
| | | |
| | | pDitRawClient->SetReviewStart(); |
| | | Sleep(1000); |
| | |
| | | } |
| | | } |
| | | |
| | | //// 190725 ����� ��û���� chm ASCEND �� alarm |
| | | //// 190725 chm ASCEND alarm |
| | | const CRsRcpReviewInfo* pRsRcpReviewInfo = m_pSP2P->ISP2P_Recipe_GetRsRcpReviewInfo(); |
| | | |
| | | const CRcpSortingInfo *pSortingInfo = pRsRcpReviewInfo->GetRcpReviewSortInfo(); |
| | |
| | | |
| | | |
| | | |
| | | ////������ �������� �ȱ� 190618 |
| | | ////190618 |
| | | if(GetUseAfmHomePosition()) |
| | | { |
| | | g_pLog->DisplayMessage(_T("[AFM] AFM Home Position Start!!!")); |
| | |
| | | |
| | | } |
| | | |
| | | //�����޸� Ŀ��� ���� ��ŸƮ(�۶� �ε�) |
| | | CDitGlassRawClient* pDitSharedGlassRaw = CDitGlassRawClient::GetInstance(); |
| | | if (pDitSharedGlassRaw->isConnect() == FALSE) { |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[DitGlassRawClient] Shared Memory Connect Fail")); |
| | |
| | | |
| | | // review camera stop |
| | | ReviewCamera_CameraControl(CameraControlStop); |
| | | //AlignCamera_CameraControl(CameraControlLive); |
| | | AlignCamera_CameraControl(CameraControlStop); // 210805 Align Camera Sequence ���� |
| | | |
| | | // send signal to plc |
| | | if (nResultCode==0) |
| | | { |
| | | SendResultToSignalControl(PCControlSendData_LoadingResult_CPJT, SIGNAL_SEND_RESULT_SUCCESS); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading] Send Loading Success Signal!")); |
| | | } |
| | | else |
| | | { |
| | | SendResultToSignalControl(PCControlSendData_LoadingResult_CPJT, SIGNAL_SEND_RESULT_FAIL); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading] Send Loading FAIL Signal!")); |
| | | } |
| | | //#3584 210817 LYW CF AOI Review ì뮬ë ì´ì
ê¸°ë¥ ì ìí MOD START |
| | | // send signal to plc |
| | | if (GetSimulationMode() == FALSE) |
| | | { |
| | | if (nResultCode == 0) |
| | | { |
| | | SendResultToSignalControl(PCControlSendData_LoadingResult_CPJT, SIGNAL_SEND_RESULT_SUCCESS); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading] Send Loading Success Signal!")); |
| | | } |
| | | else |
| | | { |
| | | SendResultToSignalControl(PCControlSendData_LoadingResult_CPJT, SIGNAL_SEND_RESULT_FAIL); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading] Send Loading FAIL Signal!")); |
| | | } |
| | | } |
| | | //#3584 210817 LYW CF AOI Review ì뮬ë ì´ì
ê¸°ë¥ ì ìí MOD END |
| | | //original |
| | | // send signal to plc |
| | | // if (nResultCode==0) |
| | | // { |
| | | // SendResultToSignalControl(PCControlSendData_LoadingResult_CPJT, SIGNAL_SEND_RESULT_SUCCESS); |
| | | // m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading] Send Loading Success Signal!")); |
| | | // } |
| | | // else |
| | | // { |
| | | // SendResultToSignalControl(PCControlSendData_LoadingResult_CPJT, SIGNAL_SEND_RESULT_FAIL); |
| | | // m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading] Send Loading FAIL Signal!")); |
| | | // } |
| | | |
| | | // send cell data to review processorm_pDitGlass |
| | | CReviewProcessor* pReviewProcessor = m_pSP2P->ISP2P_GetReviewProcessor(); |
| | | if(pReviewProcessor == NULL) return ; |
| | | pReviewProcessor->SetCellData(pGlassResult); |
| | | pReviewProcessor->SetReviewCount(0); // ���� Sequence No �ʱ�È. |
| | | pReviewProcessor->SetReviewCount(0); |
| | | pReviewProcessor->SetPlanReviewCount(0); |
| | | pReviewProcessor->SetPlanWSICount(0); |
| | | // Process Status Update |
| | |
| | | m_pSP2P->ISP2P_UpdateDefectFilter(pDefectFilter); |
| | | } |
| | | |
| | | SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_LoadingComplete_CPJT); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading] Send Loading Complete Signal!")); |
| | | //#3584 210817 LYW CF AOI Review ì뮬ë ì´ì
ê¸°ë¥ ì ìí MOD START |
| | | if (GetSimulationMode() == FALSE) |
| | | { |
| | | SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_LoadingComplete_CPJT); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading] Send Loading Complete Signal!")); |
| | | } |
| | | //#3584 210817 LYW CF AOI Review ì뮬ë ì´ì
ê¸°ë¥ ì ìí MOD END |
| | | //original |
| | | // SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_LoadingComplete_CPJT); |
| | | // m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading] Send Loading Complete Signal!")); |
| | | |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::OUT] Loading!")); |
| | | |
| | |
| | | { |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::IN] AlignStart!")); |
| | | |
| | | if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_AlignStartAck_CPJT)) |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Start Ack!")); |
| | | //Sleep(400);//������ ���� ����� �ֱ� chm190602 |
| | | |
| | | AlignCamera_CameraControl(CameraControlLive); // 210805 Align Camera Sequence ���� |
| | | Sleep(300); |
| | | |
| | | //#3584 210817 LYW CF AOI Review ì뮬ë ì´ì
ê¸°ë¥ ì ìí MOD START |
| | | if (GetSimulationMode() == FALSE) |
| | | { |
| | | if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_AlignStartAck_CPJT)) |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Start Ack!")); |
| | | } |
| | | //#3584 210817 LYW CF AOI Review ì뮬ë ì´ì
ê¸°ë¥ ì ìí MOD END |
| | | //original |
| | | // if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_AlignStartAck_CPJT)) |
| | | // m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Start Ack!")); |
| | | |
| | | // 1. get current glass result |
| | | CGlassResult* pGlassResult = m_pSP2P->ISP2P_GetCurrentGlassResult(); |
| | | if (pGlassResult==NULL) { return; } |
| | | if (pGlassResult==NULL) |
| | | { |
| | | Sleep(350); |
| | | AlignCamera_CameraControl(CameraControlStop); // 210805 Align Camera Sequence ���� |
| | | return; |
| | | } |
| | | |
| | | const CRsRcpAlignInfo* pRsRcpAlignInfo = m_pSP2P->ISP2P_Recipe_GetRsRcpAlignInfo(); |
| | | if(pRsRcpAlignInfo == NULL) return; |
| | | |
| | | if (pRsRcpAlignInfo == NULL) |
| | | { |
| | | Sleep(350); |
| | | AlignCamera_CameraControl(CameraControlStop); // 210805 Align Camera Sequence ���� |
| | | return; |
| | | } |
| | | // 2. get align camera control |
| | | CCameraControlAlign* pAlignCameraControl = m_pSP2P->ISP2P_GetAlignCameraControl(); |
| | | |
| | |
| | | if(pRsRcpAlignInfo->m_bAlignSkipMode) |
| | | { |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Align Skip Mode !!!!!!!")); |
| | | //#3584 210817 LYW CF AOI Review ì뮬ë ì´ì
ê¸°ë¥ ì ìí MOD START |
| | | if (GetSimulationMode() == FALSE) |
| | | { |
| | | SendResultToSignalControl(PCControlSendData_AlignResult_CPJT, SIGNAL_SEND_RESULT_SUCCESS); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align SUCCESS Data!")); |
| | | SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_AlignComplete_CPJT); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Complete Signal!")); |
| | | //#3584 210817 LYW CF AOI Review ì뮬ë ì´ì
ê¸°ë¥ ì ìí MOD END |
| | | } |
| | | //original |
| | | // SendResultToSignalControl(PCControlSendData_AlignResult_CPJT, SIGNAL_SEND_RESULT_SUCCESS); |
| | | // m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align SUCCESS Data!")); |
| | | // SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_AlignComplete_CPJT); |
| | | // m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Complete Signal!")); |
| | | |
| | | SendResultToSignalControl(PCControlSendData_AlignResult_CPJT, SIGNAL_SEND_RESULT_SUCCESS); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align SUCCESS Data!")); |
| | | SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_AlignComplete_CPJT); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Complete Signal!")); |
| | | Sleep(350); |
| | | AlignCamera_CameraControl(CameraControlStop); // 210805 Align Camera Sequence ���� |
| | | } |
| | | else |
| | | { |
| | | // 190710 SJB Align Camera Disconnect Check, Align Step ���� ���� Ȯ���Ѵ�. |
| | | // 190710 SJB Align Camera Disconnect Check, Align Step |
| | | if(pAlignCameraControl) |
| | | { |
| | | if(pAlignCameraControl->AlignCameraDisconnectCheck() == FALSE) |
| | | { |
| | | SendResultToSignalControl(PCControlSendData_AlignResult_CPJT, SIGNAL_SEND_RESULT_FAIL); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Fail! Align Cam Disconnect")); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Algin Camera Disconnect!!!!")); |
| | | //#3584 210817 LYW CF AOI Review ì뮬ë ì´ì
ê¸°ë¥ ì ìí MOD START |
| | | if (GetSimulationMode() == FALSE) |
| | | { |
| | | SendResultToSignalControl(PCControlSendData_AlignResult_CPJT, SIGNAL_SEND_RESULT_FAIL); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Algin Camera Disconnect!!!!")); |
| | | } |
| | | //#3584 210817 LYW CF AOI Review ì뮬ë ì´ì
ê¸°ë¥ ì ìí MOD END |
| | | //original |
| | | // SendResultToSignalControl(PCControlSendData_AlignResult_CPJT, SIGNAL_SEND_RESULT_FAIL); |
| | | // m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Algin Camera Disconnect!!!!")); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | Sleep(350); |
| | | AlignCamera_CameraControl(CameraControlStop); // 210805 Align Camera Sequence ���� |
| | | } |
| | | |
| | | if (pGlassResult && pAlignCameraControl && pAlignCameraControl->AlignProcess()) |
| | | { |
| | |
| | | } |
| | | else |
| | | { |
| | | //�����ߵ� |
| | | Sleep(1000); |
| | | //TEST ��� |
| | | { |
| | | SendResultToSignalControl(PCControlSendData_AlignResult_CPJT, SIGNAL_SEND_RESULT_SUCCESS); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align SUCCESS Data!")); |
| | | SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_AlignComplete_CPJT); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Complete Signal!")); |
| | | } |
| | | //#3584 210817 LYW CF AOI Review ì뮬ë ì´ì
ê¸°ë¥ ì ìí MOD START |
| | | if (GetSimulationMode() == FALSE) |
| | | { |
| | | SendResultToSignalControl(PCControlSendData_AlignResult_CPJT, SIGNAL_SEND_RESULT_SUCCESS); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align SUCCESS Data!")); |
| | | SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_AlignComplete_CPJT); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Complete Signal!")); |
| | | } |
| | | //#3584 210817 LYW CF AOI Review ì뮬ë ì´ì
ê¸°ë¥ ì ìí MOD END |
| | | //original |
| | | // SendResultToSignalControl(PCControlSendData_AlignResult_CPJT, SIGNAL_SEND_RESULT_SUCCESS); |
| | | // m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align SUCCESS Data!")); |
| | | // SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_AlignComplete_CPJT); |
| | | // m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Complete Signal!")); |
| | | } |
| | | |
| | | Sleep(350); |
| | | AlignCamera_CameraControl(CameraControlStop); // 210805 Align Camera Sequence ���� |
| | | |
| | | //�ּ� Ǯ�� |
| | | // 4. send align fail signal to plc |
| | |
| | | //m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Fail Data!")); |
| | | //SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_AlignComplete_CPJT); |
| | | //m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Complete Signal!")); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | |
| | | m_pSP2P->ISP2P_GetSignalControl()->WriteData(_T("17110"), sizeof(pDitRawClient->GetGlassData()->m_strGlassJudge), pDitRawClient->GetGlassData()->m_strGlassJudge); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::IN] ReadRawFile!")); |
| | | |
| | | if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_ReadRawFileAck_CPJT)) |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReadRawFile] Send Read Raw File Ack!")); |
| | | //#3584 210817 LYW CF AOI Review ì뮬ë ì´ì
ê¸°ë¥ ì ìí MOD START |
| | | if (GetSimulationMode() == FALSE) |
| | | { |
| | | if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_ReadRawFileAck_CPJT)) |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReadRawFile] Send Read Raw File Ack!")); |
| | | } |
| | | //#3584 210817 LYW CF AOI Review ì뮬ë ì´ì
ê¸°ë¥ ì ìí MOD END |
| | | //original |
| | | // if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_ReadRawFileAck_CPJT)) |
| | | // m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReadRawFile] Send Read Raw File Ack!")); |
| | | |
| | | if (bFileFind == FALSE) |
| | | { |
| | | SendResultToSignalControl(PCControlSendData_ReviewResult_CPJT, SIGNAL_SEND_RESULT_FAIL); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReadRawFile] ������� � ����")); |
| | | //#3584 210817 LYW CF AOI Review ì뮬ë ì´ì
ê¸°ë¥ ì ìí MOD START |
| | | if (GetSimulationMode() == FALSE) |
| | | { |
| | | SendResultToSignalControl(PCControlSendData_ReviewResult_CPJT, SIGNAL_SEND_RESULT_FAIL); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReadRawFile] Find Raw File Fail")); |
| | | } |
| | | //#3584 210817 LYW CF AOI Review ì뮬ë ì´ì
ê¸°ë¥ ì ìí MOD END |
| | | //original |
| | | // SendResultToSignalControl(PCControlSendData_ReviewResult_CPJT, SIGNAL_SEND_RESULT_FAIL); |
| | | // m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReadRawFile] Find Raw File Fail")); |
| | | return; |
| | | } |
| | | |
| | | // get current glass result |
| | | CGlassResult* pGlassResult = m_pSP2P->ISP2P_GetCurrentGlassResult(); |
| | | if (pGlassResult==NULL) return; |
| | | |
| | | //�����޸� Ŀ��� ���� ��ŸƮ(�۶� �ε�) |
| | | |
| | | CDitGlassRawClient* pDitSharedGlassRaw = CDitGlassRawClient::GetInstance(); |
| | | if(pDitSharedGlassRaw->isConnect() == FALSE) m_pSP2P->ISP2P_DisplayMessage(_T("[DitGlassRawClient] Shared Memory Connect Fail")); |
| | | |
| | |
| | | int nTotalPlanCount = CalculatePlanData(pGlassResult); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[Read Raw File] Review All Plan Total Count : %d"), nTotalPlanCount); |
| | | |
| | | //�����ߵ� |
| | | Sleep(1000); |
| | | // send review ready |
| | | SendResultToSignalControl(PCControlSendData_ReviewResult_CPJT, SIGNAL_SEND_RESULT_SUCCESS); |
| | | SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_ReviewReady_CPJT); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReadRawFile] Send Review Ready Signal!")); |
| | | //#3584 210817 LYW CF AOI Review ì뮬ë ì´ì
ê¸°ë¥ ì ìí MOD START |
| | | if (GetSimulationMode() == FALSE) |
| | | { |
| | | SendResultToSignalControl(PCControlSendData_ReviewResult_CPJT, SIGNAL_SEND_RESULT_SUCCESS); |
| | | SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_ReviewReady_CPJT); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReadRawFile] Send Review Ready Signal!")); |
| | | } |
| | | //#3584 210817 LYW CF AOI Review ì뮬ë ì´ì
ê¸°ë¥ ì ìí MOD END |
| | | //original |
| | | // SendResultToSignalControl(PCControlSendData_ReviewResult_CPJT, SIGNAL_SEND_RESULT_SUCCESS); |
| | | // SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_ReviewReady_CPJT); |
| | | // m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReadRawFile] Send Review Ready Signal!")); |
| | | } |
| | | else |
| | | { |
| | | processTimer.End(); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[ReadRawFile] AOI Result File Read Fail![%.3f ms]"), processTimer.GetDurationMilliSecond()); |
| | | |
| | | |
| | | //�׽�Ʈ ��� |
| | | //{ |
| | | // // send review ready |
| | | // SendResultToSignalControl(PCControlSendData_ReviewResult_CPJT, SIGNAL_SEND_RESULT_SUCCESS); |
| | |
| | | // m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReadRawFile] Send Review Ready Signal!")); |
| | | //} |
| | | |
| | | //�ּ� ���� |
| | | int nCurPlanIndex = 0; |
| | | CRsRcpReviewInfo* pRsRcpReviewInfo = m_pSP2P->ISP2P_Recipe_GetRsRcpReviewInfo(); |
| | | if(pRsRcpReviewInfo) |
| | |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[Read Raw File] Review All Plan Total Count : %d"), nTotalPlanCount); |
| | | |
| | | // send review ready |
| | | SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_ReviewReady_CPJT); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReadRawFile] Send Review Ready Signal!")); |
| | | //#3584 210817 LYW CF AOI Review ì뮬ë ì´ì
ê¸°ë¥ ì ìí MOD START |
| | | if (GetSimulationMode() == FALSE) |
| | | { |
| | | SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_ReviewReady_CPJT); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReadRawFile] Send Review Ready Signal!")); |
| | | } |
| | | //#3584 210817 LYW CF AOI Review ì뮬ë ì´ì
ê¸°ë¥ ì ìí MOD END |
| | | //original |
| | | // SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_ReviewReady_CPJT); |
| | | // m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReadRawFile] Send Review Ready Signal!")); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | //// [2017:5:24]-[WEZASW] : Review Image Upload Dir ����.(FTPUploader���� �ڵ� ���� �Ǵ��� ���� ����� ����) |
| | | //// '�ݺ��˻�'�� FTPUploader���� ���ε� �� ���� ������ PCControl Glass Unloading �� ��� Loading�� Review������ ���ε� ���(GlassID) ���� ���� ���� |
| | | const CNetworkInfo *pNetworkInfo = m_pSP2P->ISP2P_System_GetNetworkInfo(); |
| | | CString strPath = _T(""); |
| | | //if(pNetworkInfo && pNetworkInfo->m_strUploadImagePath.IsEmpty() == FALSE) |
| | |
| | | CFileFind Uploadfile, RTMSUploadPath; |
| | | if (CDitGlassRawClient::GetInstance()->GetGlassData() == NULL) return; |
| | | |
| | | |
| | | //���ε� ������ ������ ���� ������ �ٽ� ���ε� ��� Set 20190917chm |
| | | if(Uploadfile.FindFile(strPath)==FALSE) |
| | | { |
| | | CTime tmServerLoadingTime = CDitGlassRawClient::GetInstance()->GetGlassData()->m_tmGlassLoading; |
| | |
| | | CreateDirectory(strPath, NULL); |
| | | pReviewProcessor->SetUploadImagePath(strPath); |
| | | |
| | | |
| | | |
| | | |
| | | //taek 210126 rtms ����� �̹��� ���� ���� |
| | | CreateDirectory(pReviewProcessor->GetRTMSUploadImagePath(),NULL); |
| | | } |
| | | |
| | |
| | | SetLastPointCheck(FALSE); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::IN] %d Tick Count"), dwTime); |
| | | |
| | | |
| | | if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_ReviewStartAck_CPJT)) |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewStart] Send Review Start Ack!")); |
| | | //#3584 210817 LYW CF AOI Review ì뮬ë ì´ì
ê¸°ë¥ ì ìí MOD START |
| | | if (GetSimulationMode() == FALSE) |
| | | { |
| | | if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_ReviewStartAck_CPJT)) |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewStart] Send Review Start Ack!")); |
| | | } |
| | | //#3584 210817 LYW CF AOI Review ì뮬ë ì´ì
ê¸°ë¥ ì ìí MOD END |
| | | //original |
| | | // if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_ReviewStartAck_CPJT)) |
| | | // m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewStart] Send Review Start Ack!")); |
| | | |
| | | const CRsRcpAlignInfo* pRsRcpAlignInfo = m_pSP2P->ISP2P_Recipe_GetRsRcpAlignInfo(); |
| | | if(pRsRcpAlignInfo == NULL) return; |
| | |
| | | // _grmCellData* pCellData = pDitRawClient->GetCellData(0); |
| | | // if(pCellData) |
| | | // { |
| | | // // pCellData->m_nTotalPitchData[0] = int(pTotapPithMeasure->GetTotalPitchBD() * 1000); // ����, �۾��� ���� ���� |
| | | // // pCellData->m_nTotalPitchData[1] = int(pTotapPithMeasure->GetTotalPitchAC() * 1000); // ����, �۾��� ���� �Ʒ��� |
| | | // // pCellData->m_nTotalPitchData[2] = int(pTotapPithMeasure->GetTotalPitchAB() * 1000); // ����, �۾��� ���� ���� |
| | | // // pCellData->m_nTotalPitchData[3] = int(pTotapPithMeasure->GetTotalPitchCD() * 1000); // ����, �۾��� ���� ������ |
| | | // // pCellData->m_nTotalPitchData[0] = int(pTotapPithMeasure->GetTotalPitchBD() * 1000); |
| | | // // pCellData->m_nTotalPitchData[1] = int(pTotapPithMeasure->GetTotalPitchAC() * 1000); |
| | | // // pCellData->m_nTotalPitchData[2] = int(pTotapPithMeasure->GetTotalPitchAB() * 1000); |
| | | // // pCellData->m_nTotalPitchData[3] = int(pTotapPithMeasure->GetTotalPitchCD() * 1000); |
| | | // } |
| | | // } |
| | | // } |
| | |
| | | // { |
| | | // m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor] TotalPitchMeasure Result Fail!")); |
| | | |
| | | // // 190711 SJB, TotalPitchMeasure Fail�ÿ� �ٷ� Motor�� ����� ������ ���ٴ� Motion Enable ��ȣ�� Ȯ������ |
| | | // |
| | | // if(!pTotapPithMeasure->GetMotorEnable()) |
| | | // { |
| | |
| | | if(FirstReviewPlanStart() <= 0) |
| | | { |
| | | //Sleep(1000); |
| | | SendResultToSignalControl(PCControlSendData_ReviewComplete_CPJT, SIGNAL_SEND_RESULT_SUCCESS); |
| | | SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_ReviewComplete_CPJT); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewStart] Send Review Success Signal!")); |
| | | //#3584 210817 LYW CF AOI Review ì뮬ë ì´ì
ê¸°ë¥ ì ìí MOD START |
| | | if (GetSimulationMode() == FALSE) |
| | | { |
| | | SendResultToSignalControl(PCControlSendData_ReviewComplete_CPJT, SIGNAL_SEND_RESULT_SUCCESS); |
| | | SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_ReviewComplete_CPJT); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewStart] Send Review Success Signal!")); |
| | | } |
| | | //#3584 210817 LYW CF AOI Review ì뮬ë ì´ì
ê¸°ë¥ ì ìí MOD END |
| | | //original |
| | | // SendResultToSignalControl(PCControlSendData_ReviewComplete_CPJT, SIGNAL_SEND_RESULT_SUCCESS); |
| | | // SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_ReviewComplete_CPJT); |
| | | // m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewStart] Send Review Success Signal!")); |
| | | } |
| | | else |
| | | { |
| | | //�����ߵ� |
| | | |
| | | //Sleep(1000); |
| | | //Test��� |
| | | //SendResultToSignalControl(PCControlSendData_ReviewComplete_CPJT, SIGNAL_SEND_RESULT_SUCCESS); |
| | | //SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_ReviewComplete_CPJT); |
| | | //m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewStart] Send Review Success Signal!")); |
| | |
| | | { |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::IN] ReviewEnd!")); |
| | | |
| | | if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_ReviewEndAck_CPJT)) |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] Send Review End Ack!")); |
| | | //#3584 210817 LYW CF AOI Review ì뮬ë ì´ì
ê¸°ë¥ ì ìí MOD START |
| | | if (GetSimulationMode() == FALSE) |
| | | { |
| | | if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_ReviewEndAck_CPJT)) |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] Send Review End Ack!")); |
| | | } |
| | | //#3584 210817 LYW CF AOI Review ì뮬ë ì´ì
ê¸°ë¥ ì ìí MOD END |
| | | //original |
| | | // if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_ReviewEndAck_CPJT)) |
| | | // m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] Send Review End Ack!")); |
| | | |
| | | CDitGlassRawClient* m_pDitGlassRaw = CDitGlassRawClient::GetInstance(); |
| | | if (m_pSP2P->ISP2P_GetWSIControl(0)!=NULL) |
| | |
| | | } |
| | | |
| | | m_pDitGlassRaw->GetGlassData()->m_nReviewNum = m_pSP2P->ISP2P_GetReviewProcessor()->GetPlanReviewCount(); |
| | | //SendDVDataToSignalControl();// �Ⱦ��� |
| | | |
| | | //OverTime �߻��� ����� END ACK�� ��ٸ��°� �ƴ϶� �� Conplete�� ��ٸ���. |
| | | //�� ... ���� �����ε��ϴ� �߰� |
| | | //SendDVDataToSignalControl(); |
| | | |
| | | if (GetLastPointCheck() == FALSE) |
| | | { |
| | | SendResultToSignalControl(PCControlSendData_ReviewResult_CPJT, SIGNAL_SEND_RESULT_SUCCESS); |
| | | SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_ReviewComplete_CPJT); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewStart] Send Review Success Signal!")); |
| | | //#3584 210817 LYW CF AOI Review ì뮬ë ì´ì
ê¸°ë¥ ì ìí MOD START |
| | | if (GetSimulationMode() == FALSE) |
| | | { |
| | | SendResultToSignalControl(PCControlSendData_ReviewResult_CPJT, SIGNAL_SEND_RESULT_SUCCESS); |
| | | SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_ReviewComplete_CPJT); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewStart] Send Review Success Signal!")); |
| | | } |
| | | //#3584 210817 LYW CF AOI Review ì뮬ë ì´ì
ê¸°ë¥ ì ìí MOD END |
| | | //original |
| | | // SendResultToSignalControl(PCControlSendData_ReviewResult_CPJT, SIGNAL_SEND_RESULT_SUCCESS); |
| | | // SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_ReviewComplete_CPJT); |
| | | // m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewStart] Send Review Success Signal!")); |
| | | } |
| | | |
| | | CGlassResult* pGlassResult = m_pSP2P->ISP2P_GetCurrentGlassResult(); |
| | |
| | | m_pSP2P->ISP2P_GetWSIControl(0)->SendWsiAfmSafePosMove(); |
| | | m_pSP2P->ISP2P_GetWSIControl(1)->SendWsiAfmSafePosMove(); |
| | | } |
| | | // ������� ������ Review���� ���� ���� |
| | | if(m_pDitGlassRaw->isConnect()==FALSE) WriteRawData(pGlassResult); |
| | | |
| | | //����Ŀ�� �˶� send 20190819chm |
| | | if(pGlassResult->m_nDeFocusCount >0) |
| | | { |
| | | SendSignalToSignalControl(PCControlSendSignalIndex_State,PCControlSend_Defoucs,1000); |
| | |
| | | CString strTime = _T(""); |
| | | strTime.Format(_T("%04d-%02d-%02d %02d:%02d:%02d"), time.GetYear(), time.GetMonth(), time.GetDay(), time.GetHour(), time.GetMinute(), time.GetSecond()); |
| | | |
| | | CDlgDefocusList::GetInstance()->SetDefocusTotalCount(pGlassResult->m_nDeFocusCount);//��Ż ī��Ʈ Add |
| | | CDlgDefocusList::GetInstance()->SetDefocusData(strTime,pGlassResult->m_strGlassID,pGlassResult->m_nDeFocusCount);//ui �߰��� ���� |
| | | CDlgDefocusList::GetInstance()->SetDefocusTotalCount(pGlassResult->m_nDeFocusCount); |
| | | CDlgDefocusList::GetInstance()->SetDefocusData(strTime,pGlassResult->m_strGlassID,pGlassResult->m_nDeFocusCount); |
| | | |
| | | } |
| | | |
| | |
| | | g_pLog->DisplayMessage(_T("History Button Enable")); |
| | | m_pSP2P->ISP2P_GetDiagnosisHistory2(); |
| | | |
| | | /*int nModuleCount = m_pSP2P->ISP2P_GetModuleStatusCount(); //0503 ���� End�� ����� 0���� ï¿½Ê±ï¿½È |
| | | /*int nModuleCount = m_pSP2P->ISP2P_GetModuleStatusCount(); |
| | | for (int nModuleIdx = 0; nModuleIdx < nModuleCount; nModuleIdx++) |
| | | { |
| | | { |
| | | ReviewLight_SetLightLevel(nModuleIdx, 0); |
| | | g_pLog->DisplayMessage(_T("Module[%d] LightLevel �ʱ�È"), nModuleIdx); |
| | | g_pLog->DisplayMessage(_T("Module[%d] LightLevel"), nModuleIdx); |
| | | } |
| | | |
| | | }*/ |
| | | |
| | | //5. PCControl ��ȣ ������Ʈ |
| | | //5. PCControl |
| | | if (pGlassResult) |
| | | { |
| | | m_pSP2P->ISP2P_UpdateProcessStatus(GetProcessStatus(), pGlassResult); |
| | | g_pLog->DisplayMessage(_T("PCControl Update Signal")); |
| | | } |
| | | |
| | | SendResultToSignalControl(PCControlSendData_ReviewResultFileCreateComplete_CPJT, SIGNAL_SEND_RESULT_SUCCESS); |
| | | SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_ResultDataComplete_CPJT); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] Send ResultData Complete Signal!")); |
| | | //#3584 210817 LYW CF AOI Review ì뮬ë ì´ì
ê¸°ë¥ ì ìí MOD START |
| | | if (GetSimulationMode() == FALSE) |
| | | { |
| | | SendResultToSignalControl(PCControlSendData_ReviewResultFileCreateComplete_CPJT, SIGNAL_SEND_RESULT_SUCCESS); |
| | | SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_ResultDataComplete_CPJT); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] Send ResultData Complete Signal!")); |
| | | } |
| | | //#3584 210817 LYW CF AOI Review ì뮬ë ì´ì
ê¸°ë¥ ì ìí MOD END |
| | | // SendResultToSignalControl(PCControlSendData_ReviewResultFileCreateComplete_CPJT, SIGNAL_SEND_RESULT_SUCCESS); |
| | | // SendSignalToSignalControl(PCControlSendSignalIndex_Seq, PCControlSend_ResultDataComplete_CPJT); |
| | | // m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] Send ResultData Complete Signal!")); |
| | | |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::OUT] ReviewEnd!")); |
| | | } |
| | |
| | | void CSequenceProcessor_CPJT::Process_ReviewUnloading() |
| | | { |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::IN] Review Unloading!")); |
| | | |
| | | if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_ReviewUnloadingAck_CPJT)) |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewStart] Send Review Unloading Ack!")); |
| | | //#3584 210817 LYW CF AOI Review ì뮬ë ì´ì
ê¸°ë¥ ì ìí MOD START |
| | | if (GetSimulationMode() == FALSE) |
| | | { |
| | | if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_ReviewUnloadingAck_CPJT)) |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewStart] Send Review Unloading Ack!")); |
| | | } |
| | | //original |
| | | //#3584 210817 LYW CF AOI Review ì뮬ë ì´ì
ê¸°ë¥ ì ìí MOD END |
| | | // if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_ReviewUnloadingAck_CPJT)) |
| | | // m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewStart] Send Review Unloading Ack!")); |
| | | |
| | | } |
| | | |
| | |
| | | |
| | | CString strCode = _T(""); |
| | | |
| | | int nDefectCount = pRawData->GetGlassData()->m_nDefectNum; // ���尹�� |
| | | int nJudgeCount = pRcpReviewInfo->GetRcpZoneFilterInfoCount();// ���� ���� |
| | | int nDefectCount = pRawData->GetGlassData()->m_nDefectNum; |
| | | int nJudgeCount = pRcpReviewInfo->GetRcpZoneFilterInfoCount(); |
| | | int nFilterType = 0; |
| | | int nJudgeType = 0; |
| | | int nZoneNumber = 0; |
| | |
| | | int nJudgeCellOKCount = 0; |
| | | int nPixelSize = 0; |
| | | int nPixelFilterSize = 0; |
| | | //���� ������ |
| | | |
| | | //1 wsi, 3 CS, 4 R, 5 G, 6 B |
| | | //pRawData->GetDefectData(nDefectIdx)->m_ReviewDefect.m_fWsi_ResultData[1];//Defect |
| | | //pRawData->GetDefectData(nDefectIdx)->m_ReviewDefect.m_fWsi_ResultData[3];//cs |
| | |
| | | { |
| | | |
| | | |
| | | #pragma region ����� fail |
| | | #pragma region Align fail |
| | | if (m_pSP2P->ISP2P_GetCurrentGlassResult()->GetAlignResult()->nResultCode != Align_Success) |
| | | { |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[TEST Process::ReviewEnd] ����� ���� WSI ���� ������ ���� ����")); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[TEST Process::ReviewEnd] Align Fail WSI Rejudge Cancel")); |
| | | break; |
| | | } |
| | | #pragma endregion |
| | |
| | | |
| | | if (nPixelFilterSize <= nPixelSize && nPixelFilterSize != 0) |
| | | { |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[ReviewEnd] ������ ���͸� Pixel Size[%d] nPixelFilterSize [%d]"), nPixelSize,nPixelFilterSize); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[ReviewEnd] Size filtering Pixel Size[%d] nPixelFilterSize [%d]"), nPixelSize,nPixelFilterSize); |
| | | continue; |
| | | } |
| | | #pragma endregion |
| | |
| | | for (int nJudgeindex = 0; nJudgeindex < nJudgeCount; nJudgeindex++) |
| | | { |
| | | //nZoneType = GetZoneType(); |
| | | dJudgeHight = pRcpReviewInfo->GetRcpZoneFilteringInfo(nJudgeindex)->GetJudgeHeight(); //���� |
| | | dJudgeHight = pRcpReviewInfo->GetRcpZoneFilteringInfo(nJudgeindex)->GetJudgeHeight(); |
| | | nFilterType = pRcpReviewInfo->GetRcpZoneFilteringInfo(nJudgeindex)->m_nFilterType; //ZONE |
| | | nJudge = pRcpReviewInfo->GetRcpZoneFilteringInfo(nJudgeindex)->m_nFilterJudge; //OK TR |
| | | |
| | | //nZoneNumber = pRcpReviewInfo->GetRcpZoneInfo(nFilterType)->m_vecZoneNumber[0]; |
| | | |
| | | if (pRawData->GetDefectData(nDefectIdx)->m_ReviewDefect.m_nWsi_Type == 2) // 210330 kyh���� |
| | | if (pRawData->GetDefectData(nDefectIdx)->m_ReviewDefect.m_nWsi_Type == 2) // 210330 kyh |
| | | { |
| | | |
| | | BOOL isZoneValue = FALSE; |
| | |
| | | } |
| | | else |
| | | { |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[WSIZoneCheck] Zone[%d], DefectIndex[%d]"), nZoneNumber, pRawData->GetDefectData(nDefectIdx)->m_nDefectIdx); //210330 kyh �α� �߰� |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[WSIZoneCheck] Zone[%d], DefectIndex[%d]"), nZoneNumber, pRawData->GetDefectData(nDefectIdx)->m_nDefectIdx); //210330 kyh |
| | | isZoneValue = TRUE; |
| | | //break; |
| | | |
| | |
| | | |
| | | if (isZoneValue == FALSE) |
| | | { |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[WSIZoneCheck] NoFail DefectIndex[%d]"), pRawData->GetDefectData(nDefectIdx)->m_nDefectIdx); //210330 kyh �α� �߰� |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[WSIZoneCheck] NoFail DefectIndex[%d]"), pRawData->GetDefectData(nDefectIdx)->m_nDefectIdx); //210330 kyh |
| | | continue; |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | } |
| | | else if (fWsiData<=0) // 0���� ���� ������ ������ ���Ѵ�. |
| | | else if (fWsiData<=0) |
| | | { |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[TEST Process::ReviewEnd] WSI TYPE[%d] WSI ����[%0.3lf] <= 0 ���� ���� ����"), nJudgeType, fWsiData); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[TEST Process::ReviewEnd] WSI TYPE[%d] WSI Height[%0.3lf] <= 0 Cancel Rejudge"), nJudgeType, fWsiData); |
| | | } |
| | | else |
| | | { |
| | | //20210419 TR �������� Judge ���� ������� OK ���� |
| | | //20210419 TR |
| | | //if (nJudge == 1)//TR -> OK |
| | | //{ |
| | | if (pRawData->GetDefectData(nDefectIdx)->m_DefectJudgement == DEFECT_JUDGE_CPJT_OK || pRawData->GetDefectData(nDefectIdx)->m_DefectJudgement == DEFECT_JUDGE_CPJT_Unknown) |
| | |
| | | |
| | | |
| | | } |
| | | else //WSI TYPE �� �ƴϸ� |
| | | else //WSI TYPE |
| | | { |
| | | continue; |
| | | } |
| | |
| | | for (int nJudgeindex = 0; nJudgeindex < nJudgeCount; nJudgeindex++) |
| | | { |
| | | //nZoneType = GetZoneType(); |
| | | dJudgeHight = pRcpReviewInfo->GetRcpZoneFilteringInfo_PR(nJudgeindex)->GetJudgeHeight(); //���� |
| | | dJudgeHight = pRcpReviewInfo->GetRcpZoneFilteringInfo_PR(nJudgeindex)->GetJudgeHeight(); |
| | | nFilterType = pRcpReviewInfo->GetRcpZoneFilteringInfo_PR(nJudgeindex)->m_nFilterType; //ZONE |
| | | nJudge = pRcpReviewInfo->GetRcpZoneFilteringInfo_PR(nJudgeindex)->m_nFilterJudge; //OK TR |
| | | |
| | | //nZoneNumber = pRcpReviewInfo->GetRcpZoneInfo(nFilterType)->m_vecZoneNumber[0]; |
| | | |
| | | if (pRawData->GetDefectData(nDefectIdx)->m_ReviewDefect.m_nWsi_Type == 2) // 210330 kyh���� |
| | | if (pRawData->GetDefectData(nDefectIdx)->m_ReviewDefect.m_nWsi_Type == 2) // 210330 |
| | | { |
| | | |
| | | BOOL isZoneValue = FALSE; |
| | |
| | | } |
| | | else |
| | | { |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[WSIZoneCheck] Zone[%d], DefectIndex[%d]"), nZoneNumber, pRawData->GetDefectData(nDefectIdx)->m_nDefectIdx); //210330 kyh �α� �߰� |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[WSIZoneCheck] Zone[%d], DefectIndex[%d]"), nZoneNumber, pRawData->GetDefectData(nDefectIdx)->m_nDefectIdx); //210330 kyh |
| | | isZoneValue = TRUE; |
| | | //break; |
| | | |
| | |
| | | |
| | | if (isZoneValue == FALSE) |
| | | { |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[WSIZoneCheck] NoFail DefectIndex[%d]"), pRawData->GetDefectData(nDefectIdx)->m_nDefectIdx); //210330 kyh �α� �߰� |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[WSIZoneCheck] NoFail DefectIndex[%d]"), pRawData->GetDefectData(nDefectIdx)->m_nDefectIdx); //210330 kyh |
| | | continue; |
| | | } |
| | | |
| | |
| | | } |
| | | else |
| | | { |
| | | //20210419 TR �������� Judge ���� ������� OK ���� |
| | | //if (nJudge == 1)//TR -> OK |
| | | //{ |
| | | if (pRawData->GetDefectData(nDefectIdx)->m_DefectJudgement == DEFECT_JUDGE_CPJT_OK || pRawData->GetDefectData(nDefectIdx)->m_DefectJudgement == DEFECT_JUDGE_CPJT_Unknown) |
| | |
| | | |
| | | |
| | | } |
| | | else //WSI TYPE �� �ƴϸ� |
| | | else //WSI TYPE |
| | | { |
| | | continue; |
| | | } |
| | |
| | | |
| | | strCode =pRcpReviewInfo->GetRcpZoneFilteringInfo_CODE(nJudgeindex)->m_FilterCode; |
| | | |
| | | if (pRawData->GetDefectData(nDefectIdx)->m_ReviewDefect.m_nWsi_Type == 2) // 210330 kyh���� |
| | | if (pRawData->GetDefectData(nDefectIdx)->m_ReviewDefect.m_nWsi_Type == 2) // 210330 |
| | | { |
| | | |
| | | nJudgeType = ReJugdeWSIType(nFilterType); |
| | |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[TEST Process::ReviewEnd] CODE JUDGE WSI TYPE[%d] Defect CODE [%s] != [%s]"), nJudgeType, strCode, pRawData->GetDefectData(nDefectIdx)->m_strDefectCode); |
| | | } |
| | | } |
| | | else //WSI TYPE �� �ƴϸ� |
| | | else //WSI TYPE |
| | | { |
| | | continue; |
| | | } |
| | |
| | | } |
| | | |
| | | #pragma region CELLJUDGE |
| | | //CELL ������//////////////////////////////////////////////////////////////// |
| | | |
| | | int nCellCount = pRawData->GetGlassData()->m_nCellNum; |
| | | |
| | |
| | | else if (pRawData->GetCellData(nCellIndex)->m_nJudgement == Judge_OK_CPJT) |
| | | { |
| | | nCelllOKJuge = nCelllOKJuge + 1; |
| | | } //taek 21.01.25 Juge ���ϴ� ���� ���Ӱ� �ٲ���... |
| | | } //taek 21.01.25 |
| | | else if (pRawData->GetCellData(nCellIndex)->m_nJudgement == Judge_PR_CPJT) |
| | | { |
| | | nCelllPRJuge = nCelllPRJuge + 1; |
| | |
| | | } |
| | | else |
| | | { |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] ī��Ʈ ������ ������ [%02d]Cell DefectTRCount[%d] >= [%d]"), nCellIndex, pRawData->GetCellData(nCellIndex)->m_nDefectNumJudgeTR, pRcpJudgeInfo->GetJudgeCount()); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] Count Number is minus! [%02d]Cell DefectTRCount[%d] >= [%d]"), nCellIndex, pRawData->GetCellData(nCellIndex)->m_nDefectNumJudgeTR, pRcpJudgeInfo->GetJudgeCount()); |
| | | } |
| | | break; |
| | | case JudgeType_T8_PR: |
| | |
| | | } |
| | | else |
| | | { |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] ī��Ʈ ������ ������ [%02d]Cell DefectTRCount[%d] <= [%d]"), nCellIndex, pRawData->GetCellData(nCellIndex)->m_nDefectNumJudgeTR, pRcpJudgeInfo->GetSubJudgeCount()); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] Count Number is minus! [%02d]Cell DefectTRCount[%d] <= [%d]"), nCellIndex, pRawData->GetCellData(nCellIndex)->m_nDefectNumJudgeTR, pRcpJudgeInfo->GetSubJudgeCount()); |
| | | } |
| | | break; |
| | | case JudgeType_T8_PR: |
| | |
| | | } |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] CELL COUNT OK:[%d] TR[%d] PR[%d]"), nCelllOKJuge, nCellTRJudge, nCelllPRJuge); |
| | | #pragma endregion |
| | | //GLASS ������//////////////////////////////////////////////////////////////// |
| | | |
| | | #pragma region GLASSJUDGE |
| | | CRsRcpReviewInfo* pRsRcpReviewInfo = m_pSP2P->ISP2P_Recipe_GetRsRcpReviewInfo(); |
| | | if (pRsRcpReviewInfo == NULL) return FALSE; |
| | |
| | | } |
| | | else |
| | | { |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] TR ī��Ʈ�� ������ [%02d]GLASS Defect TR Count[%d] >= [%d]"), nIdx, pRawData->GetGlassData()->m_nDefectNumJudgeTR, pRcpJudgeInfo->GetJudgeCount()); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] TR Count is minus [%02d]GLASS Defect TR Count[%d] >= [%d]"), nIdx, pRawData->GetGlassData()->m_nDefectNumJudgeTR, pRcpJudgeInfo->GetJudgeCount()); |
| | | } |
| | | break; |
| | | case JudgeType_T8_PR: |
| | |
| | | } |
| | | else |
| | | { |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd]TRī��Ʈ�� ������ [%02d]GLASS Defect TR Count[%d] <= [%d]"), nIdx, pRawData->GetGlassData()->m_nDefectNumJudgeTR, pRcpJudgeInfo->GetSubJudgeCount()); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd]TR Count is minus [%02d]GLASS Defect TR Count[%d] <= [%d]"), nIdx, pRawData->GetGlassData()->m_nDefectNumJudgeTR, pRcpJudgeInfo->GetSubJudgeCount()); |
| | | } |
| | | break; |
| | | case JudgeType_T8_PR: |
| | |
| | | CakFileUtil akFileFinder; |
| | | while (nReTryTime--) |
| | | { |
| | | //#3359_LYW CF AOI Review REVIEW_LOADING_COMPLETE_TIMEOVER �˶� �߻� ���� �м� START |
| | | //#3359_LYW CF AOI Review REVIEW_LOADING_COMPLETE_TIMEOVER START |
| | | if (nReTryTime%2 == 0) |
| | | { |
| | | strFilePath = AOIRAWBIN_PATH; |
| | |
| | | |
| | | strWild.Format("%s\\%s_*.bin", strFilePath, strFileName); |
| | | akFileFinder.FindFile(strWild.GetBuffer(0), FALSE); |
| | | //LYW LOG�߰� |
| | | //LYW LOG |
| | | g_pLog->DisplayMessage(_T("[GlassLoading][FindRawBinFile] Find Path = %s, RetryCount = %d, ResultCode = [%d]"), strFilePath, 30-nReTryTime, GetLastError()); |
| | | //#3359_LYW CF AOI Review REVIEW_LOADING_COMPLETE_TIMEOVER �˶� �߻� ���� �м� END |
| | | //#3359_LYW CF AOI Review REVIEW_LOADING_COMPLETE_TIMEOVER END |
| | | VECFINDDATA* pFindData = akFileFinder.getFindData(); |
| | | int nFileNamePos = strlen(akFileFinder.getProcessPath()); |
| | | std::map<LONGLONG, CString> mapSpanFileName; |
| | |
| | | parser.process(pFileName, "_."); |
| | | if (parser.getTokNum() < 4) continue; |
| | | |
| | | if (parser.getTokNum() >= 6) continue; // 0401 �߰� |
| | | if (parser.getTokNum() >= 6) continue; // 0401 |
| | | |
| | | int nDataTime[8] = {}; |
| | | { |
| | |
| | | { |
| | | if (mapSpanFileName.begin()->first < nCloseTime) |
| | | { |
| | | //���� �ֱ� ������� ã�� ���� [������ 2019/7/17] |
| | | strFindFile = mapSpanFileName.begin()->second; |
| | | break; |
| | | } |
| | |
| | | |
| | | int nPCControlReadDataCount = pSignalInfo->GetReadDataAddressCount(); |
| | | |
| | | // [2017:1:9]-[WEZASW] : PCControl GlassData �׸� ������. |
| | | // [2017:1:9]-[WEZASW] : PCControl GlassData |
| | | if(pSignalInfo->GetUseContinuousReadAddress()) |
| | | { |
| | | CString strReadAddress = _T(""); |
| | |
| | | strReadData = pTransferData->strRerferData; |
| | | break; |
| | | } |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[ReadTransferData] Name: %s, Addr: %s, Size: %d, Data: %s"), pInfo->strName, strReadAddress, nReadSize, strReadData); //0517 |
| | | // m_pSP2P->ISP2P_DisplayMessage(_T("[ReadTransferData] Name: %s, Addr: %s, Size: %d, Data: %s"), pInfo->strName, strReadAddress, nReadSize, strReadData); //0517 |
| | | } |
| | | } |
| | | |
| | |
| | | |
| | | void CSequenceProcessor_CPJT::UpdateGlassResultFromTransferData(CGlassResult *pGlassResult, STransferData* pTransferData) |
| | | { |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Loading] Transfer Data �б�!")); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Loading] Transfer Data Read!")); |
| | | |
| | | if (pGlassResult==NULL || pTransferData==NULL) return; |
| | | |
| | | // [2017:1:9]-[WEZASW] : PCControl GlassData �׸� ������ |
| | | // [2017:1:9]-[WEZASW] : PCControl GlassData |
| | | // transfer data is not exist |
| | | if (pTransferData->strLotID.GetLength()<1) |
| | | { |
| | |
| | | pGlassResult->m_strPairFlag = pTransferData->strPairFlag; |
| | | pGlassResult->m_strOptionValue = pTransferData->strOptionValue; |
| | | pGlassResult->m_strReserved = pTransferData->strReserved; |
| | | pGlassResult->strGlassScanSchedule = pTransferData->strGlassScanSchedule;//���� ���� cmark |
| | | pGlassResult->strGlassScanSchedule = pTransferData->strGlassScanSchedule;//cmark |
| | | pGlassResult->m_strRTMSStepID = pTransferData->strStepID; //taek 210126 |
| | | |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Loading] Transfer Data ��!")); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Loading] Transfer Data END!")); |
| | | } |
| | | |
| | | void CSequenceProcessor_CPJT::UpdateHistoryResultFromTransferData(CGlassResult *pHistoryResult, CGlassResult* pGlassResult) |
| | |
| | | pHistoryResult->m_strPairFlag = pGlassResult->m_strPairFlag; |
| | | pHistoryResult->m_strOptionValue = pGlassResult->m_strOptionValue; |
| | | pHistoryResult->m_strReserved = pGlassResult->m_strReserved; |
| | | pHistoryResult->strGlassScanSchedule = pGlassResult->strGlassScanSchedule;//���� ���� cmark |
| | | pHistoryResult->strGlassScanSchedule = pGlassResult->strGlassScanSchedule;// cmark |
| | | pHistoryResult->m_strStepID = pGlassResult->m_strRTMSStepID; //taek 210126 |
| | | pHistoryResult->m_strEquipID = pGlassResult->m_strEquipID; |
| | | pHistoryResult->m_strProcessID = pGlassResult->m_strProcessID; |
| | |
| | | |
| | | void CSequenceProcessor_CPJT::CreateResultDirectory(const CString& strGlassID, const CString& strDate) |
| | | { |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Loading] ���丮 ����� ����")); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Loading] Make Directory Start")); |
| | | if (m_pSP2P==NULL) return; |
| | | |
| | | const CNetworkInfo *pNetworkInfo = m_pSP2P->ISP2P_System_GetNetworkInfo(); |
| | |
| | | strPath.Format(_T("%s\\%s"),pNetworkInfo->m_strAlignImagePath, strGlassID); |
| | | CreateDirectory(strPath, NULL); |
| | | } |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Loading] ���丮 ����� ��")); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Loading] Make directory End")); |
| | | } |
| | | |
| | | |
| | |
| | | |
| | | void CSequenceProcessor_CPJT::SetSaveImageBasePathToReviewProcessor(const CString& strGlassID, const CString& strResultDate) |
| | | { |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Loading] �̹��� �н� ����� ����")); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Loading] Make image path start")); |
| | | const CNetworkInfo *pNetworkInfo = m_pSP2P->ISP2P_System_GetNetworkInfo(); |
| | | if(pNetworkInfo == NULL) return; |
| | | |
| | |
| | | Sleep(1000); |
| | | if (CDitGlassRawClient::GetInstance()->isConnect() == FALSE) |
| | | { |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading]�����޸� ���� ���� Count[%d]"), nReconnect); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading]access Shared Memory Fail!! Count[%d]"), nReconnect); |
| | | } |
| | | else |
| | | { |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading]�����޸� ���� ����")); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading]access Shared Memory Success")); |
| | | break; |
| | | } |
| | | nReconnect += 1; |
| | |
| | | else |
| | | { |
| | | tmServerLoadingTime = CTime::GetCurrentTime(); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading] �����޸� �����̻�")); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::GlassLoading] access Shared Memory Fail")); |
| | | strPath.Format(_T("%s\\%s_%04d%02d%02d%02d%02d%02d"), pNetworkInfo->m_strUploadImagePath, strGlassID, tmServerLoadingTime.GetYear(), tmServerLoadingTime.GetMonth(), tmServerLoadingTime.GetDay(), tmServerLoadingTime.GetHour(), tmServerLoadingTime.GetMinute(), tmServerLoadingTime.GetSecond()); |
| | | strImagePath.Format(_T("%s\\%s_%04d%02d%02d%02d%02d%02d"), strGlassID, tmServerLoadingTime.GetYear(), tmServerLoadingTime.GetMonth(), tmServerLoadingTime.GetDay(), tmServerLoadingTime.GetHour(), tmServerLoadingTime.GetMinute(), tmServerLoadingTime.GetSecond()); |
| | | CreateDirectory(strPath, NULL); |
| | |
| | | } |
| | | |
| | | } |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Loading] �̹��� �н� ����� ��")); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Loading] Make image path End")); |
| | | } |
| | | |
| | | void CSequenceProcessor_CPJT::SetSaveImageBasePathToAlignCameraControl(const CString& strGlassID) |
| | | { |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Loading] ����� �̹��� �н� ���� ")); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Loading] Make Align image path Start")); |
| | | const CNetworkInfo *pNetworkInfo = m_pSP2P->ISP2P_System_GetNetworkInfo(); |
| | | if(pNetworkInfo == NULL) return; |
| | | |
| | |
| | | strPath.Format(_T("%s\\%s"), pNetworkInfo->m_strAlignImagePath, strGlassID); |
| | | pAlignCameraControl->SetSaveImageBasePath(strPath); |
| | | } |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Loading] ����� �̹��� �н� �� ")); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::Loading] Make Align image path End ")); |
| | | } |
| | | |
| | | BOOL CSequenceProcessor_CPJT::ReadRecipeDataFromRecipeFile(const CString& strPPID_RC, CString& strRecipeName)// const CString& strPPID, CString& strRecipeName |
| | |
| | | { |
| | | if(pGlassResult == NULL) return FALSE; |
| | | |
| | | // ������ ���� |
| | | const CRsRcpReviewInfo* pRsRcpReviewInfo = m_pSP2P->ISP2P_Recipe_GetRsRcpReviewInfo(); |
| | | if (pRsRcpReviewInfo==NULL) return FALSE; |
| | | |
| | | // system info |
| | | const CSystemInfo* pSystemInfo = m_pSP2P->ISP2P_System_GetSystemInfo(); |
| | | |
| | | // �۶� ���� |
| | | STransferData* pTransferData = m_pSP2P->ISP2P_GetCurrentTransferData(); |
| | | if (pTransferData==NULL) return FALSE; |
| | | int nGlassTypeInfoIndex = 0; |
| | |
| | | if (pGlassTypeInfo == NULL) return FALSE; |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("GlassTypeName : %s,GlassTypeIdx : %s"),pGlassTypeInfo->m_strGlassTypeName,pTransferData->strGlassScanSchedule); |
| | | |
| | | // ���� ���� |
| | | const CMotorControlInfo *pMotorInfo = m_pSP2P->ISP2P_System_GetMotorInfo(); |
| | | |
| | | // ��ǥ ��ȯ�� |
| | | CCoordCalibrator* pCoordCalibrator = m_pSP2P->ISP2P_GetCoordCalibrator(); |
| | | |
| | | // ��ǥ�� ���� |
| | | if (pSystemInfo && pGlassTypeInfo && pMotorInfo && pCoordCalibrator) |
| | | { |
| | | // Get Direction |
| | | int nDirectionX = GetDirectionX(pGlassTypeInfo->m_nOriginDirection, pMotorInfo->GetOriginDirection()); |
| | | int nDirectionY = GetDirectionY(pGlassTypeInfo->m_nOriginDirection, pMotorInfo->GetOriginDirection()); |
| | | |
| | | // ��ǥ�� ���� |
| | | pCoordCalibrator->SetTransDirection(nDirectionX, nDirectionY); |
| | | pCoordCalibrator->SetOriginMotorPosition(pGlassTypeInfo->m_dOriginMotorX, pGlassTypeInfo->m_dOriginMotorY); |
| | | if (fabs(pGlassTypeInfo->m_dAlignAngle) > 0.0000001) |
| | |
| | | pGlassTypeInfo->m_dFirstAlignGlassX, pGlassTypeInfo->m_dFirstAlignGlassY, pGlassTypeInfo->m_dAlignAngle); |
| | | } |
| | | |
| | | // �۶� ���� ���� |
| | | pGlassResult->SetGlassSize(pGlassTypeInfo->m_nGlassSizeX * 1000, pGlassTypeInfo->m_nGlassSizeY * 1000); |
| | | pGlassResult->SetGlassOriginDirection(pGlassTypeInfo->m_nOriginDirection); |
| | | pGlassResult->SetCornerCutDirection(pGlassTypeInfo->m_nCornerCutDirection); |
| | |
| | | pGlassResult->SetCollisionDistanceX(int(pSystemInfo->m_dCollisionDistance*1000.)); |
| | | } |
| | | |
| | | // Align ���� |
| | | const CRsRcpAlignInfo* pRsRcpAlignInfo = m_pSP2P->ISP2P_Recipe_GetRsRcpAlignInfo(); |
| | | |
| | | // Align ���� ���� |
| | | if (pGlassTypeInfo && pRsRcpAlignInfo) |
| | | { |
| | | // Align ��ũ ���� ���� (�ȼ�, ����, �۶� ��ġ) |
| | | pGlassResult->m_AlignRecipe.m_nUseAlignPosMove = pGlassTypeInfo->m_nUseAlignPosMove; |
| | | |
| | | // �ȼ� ��ġ |
| | | pGlassResult->m_AlignRecipe.dOriginPixelX[0] = pGlassTypeInfo->m_nFirstAlignFindPixelX; |
| | | pGlassResult->m_AlignRecipe.dOriginPixelY[0] = pGlassTypeInfo->m_nFirstAlignFindPixelY; |
| | | pGlassResult->m_AlignRecipe.dOriginPixelX[1] = pGlassTypeInfo->m_nSecondAlignFindPixelX; |
| | | pGlassResult->m_AlignRecipe.dOriginPixelY[1] = pGlassTypeInfo->m_nSecondAlignFindPixelY; |
| | | |
| | | // ���� ��ġ |
| | | pGlassResult->m_AlignRecipe.dOriginPositionX[0] = pGlassTypeInfo->m_dFirstAlignMotorX; |
| | | pGlassResult->m_AlignRecipe.dOriginPositionY[0] = pGlassTypeInfo->m_dFirstAlignMotorY; |
| | | pGlassResult->m_AlignRecipe.dOriginPositionX[1] = pGlassTypeInfo->m_dSecondAlignMotorX; |
| | | pGlassResult->m_AlignRecipe.dOriginPositionY[1] = pGlassTypeInfo->m_dSecondAlignMotorY; |
| | | |
| | | // �۶� ��ġ |
| | | pGlassResult->m_AlignRecipe.dGlassPositionX[0] = pGlassTypeInfo->m_dFirstAlignGlassX; |
| | | pGlassResult->m_AlignRecipe.dGlassPositionY[0] = pGlassTypeInfo->m_dFirstAlignGlassY; |
| | | pGlassResult->m_AlignRecipe.dGlassPositionX[1] = pGlassTypeInfo->m_dSecondAlignGlassX; |
| | | pGlassResult->m_AlignRecipe.dGlassPositionY[1] = pGlassTypeInfo->m_dSecondAlignGlassY; |
| | | |
| | | // Align Recipe ���� ���� �ڵ����� ã�� �Ķ���� |
| | | // Align Recipe |
| | | // Align Skip Mode |
| | | pGlassResult->m_AlignRecipe.bAlignSkipMode = pRsRcpAlignInfo->m_bAlignSkipMode; |
| | | pGlassResult->m_AlignRecipe.bUseTotalPitchMeasure = pRsRcpAlignInfo->m_bTotalPitchMeasure; |
| | |
| | | pGlassResult->m_AlignRecipe.nMergeRange = pRsRcpAlignInfo->m_nMergeRange; |
| | | pGlassResult->m_AlignRecipe.dEdgeRate = pRsRcpAlignInfo->m_dEdgeRate; |
| | | |
| | | // ����ð� |
| | | pGlassResult->m_AlignRecipe.bManualProcess = pRsRcpAlignInfo->m_bManualProcess; |
| | | pGlassResult->m_AlignRecipe.dFirstCamExposure = pRsRcpAlignInfo->m_dFirstCamExposure; |
| | | pGlassResult->m_AlignRecipe.dSecondCamExposure = pRsRcpAlignInfo->m_dSecondCamExposure; |
| | | |
| | | // �ڵ����� ���� |
| | | pGlassResult->m_AlignRecipe.bAutoProcess = pRsRcpAlignInfo->m_bAutoProcess; |
| | | pGlassResult->m_AlignRecipe.dTargetMin = pRsRcpAlignInfo->m_dTargetMin; |
| | | pGlassResult->m_AlignRecipe.dTargetMax = pRsRcpAlignInfo->m_dTargetMax; |
| | | pGlassResult->m_AlignRecipe.dExposureMin = pRsRcpAlignInfo->m_dExposureMin; |
| | | pGlassResult->m_AlignRecipe.dExposureMax = pRsRcpAlignInfo->m_dExposureMax; |
| | | |
| | | // Align Recipe ���� ���� rotate info |
| | | pGlassResult->m_AlignRecipe.bRotateProcess = pRsRcpAlignInfo->m_bRotateProcess; |
| | | pGlassResult->m_AlignRecipe.nRetryCount = pRsRcpAlignInfo->m_nRetryCount; |
| | | pGlassResult->m_AlignRecipe.dGlassAngleMin = pRsRcpAlignInfo->m_dGlassAngleMin; |
| | | pGlassResult->m_AlignRecipe.dGlassAngleMax = pRsRcpAlignInfo->m_dGlassAngleMax; |
| | | |
| | | // Align ī�޶� ���� �� �ػ� ���� |
| | | |
| | | int nAlignCameraInfoCount = 2; |
| | | for(int nAlignCameraIdx = 0; nAlignCameraIdx < nAlignCameraInfoCount; nAlignCameraIdx++) |
| | | { |
| | | // Align ���� �� ��������. |
| | | int nLightValue = 0; |
| | | |
| | | |
| | |
| | | { |
| | | nLightValue = (nAlignCameraIdx==0) ? (int)pRsRcpAlignInfo->m_dFirstCamExposure: (int)pRsRcpAlignInfo->m_dSecondCamExposure; |
| | | |
| | | // ����� ī�޶� ���� �������� |
| | | const CAlignCameraInfo *pCameraInfo = m_pSP2P->ISP2P_System_GetAlignCameraInfo(nAlignCameraIdx); |
| | | |
| | | //����� ����. |
| | | CLightControl *pLightControl = NULL; |
| | | |
| | | const CLightControlInfo *AlignLightinfo = pCameraInfo->GetLightContorlInfo(); |
| | |
| | | { |
| | | if (AlignLightinfo->GetMaster()==1&& nAlignCameraIdx==1) |
| | | { |
| | | //����� ��Ʋ�ѷ��� �ϳ��� ����Ǿ� ������ ������ ���η� Ȯ�� |
| | | //������ �̰� �´��� �𸣰ٴ� �ƹ��� �Ⱦ˷��� |
| | | pLightControl = m_pSP2P->ISP2P_GetAlignLightControl(0); |
| | | |
| | | } |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | // ����� ī�޶� ���� �������� |
| | | const CAlignCameraInfo *pCameraInfo = m_pSP2P->ISP2P_System_GetAlignCameraInfo(nAlignCameraIdx); |
| | | if (pCameraInfo) |
| | | { |
| | |
| | | } |
| | | } |
| | | |
| | | // ����� ���ø� ���� �������� |
| | | if((int)pGlassTypeInfo->m_vecTemplateImagePath.size() == nAlignCameraInfoCount) |
| | | { |
| | | pGlassResult->m_AlignRecipe.strTemplateName[nAlignCameraIdx] = pGlassTypeInfo->m_vecTemplateImagePath[nAlignCameraIdx]; |
| | |
| | | if (pRcpReviewAFMInfo) |
| | | { |
| | | int nRealAFMIndex = pRcpReviewAFMInfo->m_nRecipeIndex; |
| | | if(nRealAFMIndex == -1)// �����ǿ� ���õ� ������ ���� MagnificInfo Index�� �˾ƿ� |
| | | if(nRealAFMIndex == -1) |
| | | { |
| | | //-1�� ��� ���� ��� ������ ��. |
| | | nRealAFMIndex = GetRealMagnification(nModuleIdx, pRcpReviewAFMInfo->m_nZoomIndex); |
| | | } |
| | | AFM_SetAFMRecipeName(nModuleIdx, strRecipeName, nRealAFMIndex); |
| | | |
| | | if(pRcpReviewAFMInfo->m_bAFMHomeOffMode==TRUE) //190618AFMȨ ������ ���� X |
| | | if(pRcpReviewAFMInfo->m_bAFMHomeOffMode==TRUE) //190618AFM |
| | | { |
| | | SetUseAfmHomePosition(FALSE); |
| | | } |
| | |
| | | } |
| | | } |
| | | |
| | | // ���� � ������ ���� |
| | | CReviewProcessor* pReviewProcessor = m_pSP2P->ISP2P_GetReviewProcessor(); |
| | | const CRsRcpDefectFindInfo* pRsRcpDefectFindInfo = m_pSP2P->ISP2P_Recipe_GetRsRcpDefectFindInfo(); |
| | | if(pReviewProcessor && pRsRcpDefectFindInfo) |
| | |
| | | |
| | | CString strRawTDPath=_T(""), strRawCDPath=_T(""), strRawSDPath=_T(""); |
| | | |
| | | // ������� �̸� ã�� |
| | | FindAOIRawFilePath(pGlassResult, &strRawTDPath, &strRawCDPath, &strRawSDPath); |
| | | |
| | | bRet = m_pSP2P->ISP2P_ReadAOIRawFileToGlassResult(strRawTDPath); |
| | |
| | | if(finder.IsDots()) continue; |
| | | if(finder.IsDirectory()) continue; |
| | | |
| | | // [2017:5:16]-[WEZASW] : AOI Server�� ���� ���� ��ġ�� ���Ը� �̹��� ���� ����� ���� ���ϸ� ���� |
| | | // [2017:5:16]-[WEZASW] : AOI Server |
| | | sRawFile.strFileName = finder.GetFileName(); |
| | | strExtTemp = sRawFile.strFileName; |
| | | int nIdx = strExtTemp.Remove('.'); |
| | |
| | | CModuleStatus* pModuleStatus = Module_GetModuleStatus(nModuleIdx); |
| | | if (pModuleStatus == NULL) continue; |
| | | |
| | | //�浹�Ÿ� �ֱ� |
| | | { |
| | | |
| | | double dCollisionPosX = pReviewResult->GetCollisionPositionX() / 1000.0; |
| | |
| | | |
| | | } |
| | | |
| | | //�¿� ��Ʈ�� �����̵� |
| | | pMotorControl->GantrySetTwoGantrySyncModeSend(0); |
| | | |
| | | // set result index |
| | | int nStartIdx = pReviewResult->GetStartSReviewResultIndex(); |
| | | int nEndIdx = pReviewResult->GetEndSReviewResultIndex(); |
| | | nEndIdx = min(nEndIdx, (pReviewResult->GetSReviewResultCount()-1)) + 1; // End Index �ٽü��� |
| | | nEndIdx = min(nEndIdx, (pReviewResult->GetSReviewResultCount()-1)) + 1; // End Index |
| | | |
| | | double xpostemp, ypostemp; |
| | | // get review pos |
| | |
| | | SReviewResult* pReview = pReviewResult->GetSReviewResult(nResultIdx); |
| | | if (pReview==NULL) continue; |
| | | |
| | | //200�� ��巹���� ������ �Ϸ�������� �ߺ�üũ |
| | | //200 |
| | | if (pReview->bCheckSendToMotor == FALSE) |
| | | { |
| | | pReview->bCheckSendToMotor = TRUE; |
| | |
| | | } |
| | | } |
| | | |
| | | //���� ����Ʈ�� �ִ��� ������ üũ |
| | | if (vectorPosX.empty() ==TRUE) |
| | | { |
| | | g_pLog->DisplayMessage(_T("[GantryAutoGo] No Exist Send Point "), vectorPosX.size()); |
| | |
| | | int nTickCount = GetTickCount(); |
| | | while (1) |
| | | { |
| | | //5�� ����Ÿ�� |
| | | if ((GetTickCount() - nTickCount) > 5000) |
| | | { |
| | | bOverTime = TRUE; |
| | | break; |
| | | } |
| | | //���� ��� End üũ |
| | | if (pMotorControl->IsGantryMotionEnd(pModuleStatus->GetGantryIndex()) == TRUE) |
| | | { |
| | | if (pMotorControl->GantryAutoGo(pModuleStatus->GetGantryIndex(), vectorPosX, vectorPosY, TRUE)) |
| | |
| | | |
| | | } |
| | | |
| | | //5���Ŀ��� �ȿ����δ�? �׷� 3�� ��õ� ���� |
| | | //���End �� �߸� ���ü��� ������ |
| | | if (bOverTime == TRUE) |
| | | { |
| | | for (int i = 0; i < 3; i++) |
| | | { |
| | | Sleep(1000); |
| | | |
| | | //���Ͱ� �����ϼ� ���»����϶� Send ��ȣ�� Fail �߻� ���� Retry 3�� ���� |
| | | if (pMotorControl->GantryAutoGo(pModuleStatus->GetGantryIndex(), vectorPosX, vectorPosY, TRUE)) |
| | | { |
| | | nTotalCount += (int)vectorPosX.size(); |
| | |
| | | if(pGlassResult && pReviewProcessor) |
| | | { |
| | | // UserStart |
| | | pReviewProcessor->SetJobID(pGlassResult->m_strJobID); //pGlassResult->m_strGlassID -> pGlassResult->m_strJobID ���� |
| | | pReviewProcessor->SetJobID(pGlassResult->m_strJobID); //pGlassResult->m_strGlassID -> pGlassResult->m_strJobID |
| | | pReviewProcessor->SetOperID(pGlassResult->m_strOperID); |
| | | m_pSP2P->ISP2P_UpdateReviewProcessStatus(ReviewProcessStatus_UserStart, nPlanIndex); |
| | | |
| | |
| | | CModuleStatus* pModuleStatus = Module_GetModuleStatus(nModuleIdx); |
| | | if (pModuleStatus == NULL) continue; |
| | | |
| | | //�浹�Ÿ� �ֱ� |
| | | { |
| | | |
| | | double dCollisionPosX = pReviewResult->GetCollisionPositionX() / 1000.0; |
| | |
| | | // set result index |
| | | int nStartIdx = pReviewResult->GetStartSReviewResultIndex(); |
| | | int nEndIdx = pReviewResult->GetEndSReviewResultIndex(); |
| | | nEndIdx = min(nEndIdx, (pReviewResult->GetSReviewResultCount() - 1)) + 1; // End Index �ٽü��� |
| | | nEndIdx = min(nEndIdx, (pReviewResult->GetSReviewResultCount() - 1)) + 1; // End Index |
| | | |
| | | // [2017:3:8]-[WEZASW] : CameraOffset ���� ���� (-1~1 => -5~5) |
| | | // [2017:3:8]-[WEZASW] : CameraOffset (-1~1 => -5~5) |
| | | double m_dMinOffset = -5.0; |
| | | double m_dMaxOffset = 5.0; |
| | | double xpostemp, ypostemp; |
| | |
| | | SReviewResult* pReview = pReviewResult->GetSReviewResult(nResultIdx); |
| | | if (pReview == NULL) continue; |
| | | |
| | | //200�� ��巹���� ������ �Ϸ�������� �ߺ�üũ |
| | | //200 |
| | | if (pReview->bCheckSendToMotor == FALSE) |
| | | { |
| | | pReview->bCheckSendToMotor = TRUE; |
| | |
| | | } |
| | | } |
| | | |
| | | //���� ����Ʈ�� �ִ��� ������ üũ |
| | | if (vectorPosX.empty() == TRUE) |
| | | { |
| | | g_pLog->DisplayMessage(_T("[GantryAutoGo] No Exist Send Point "), vectorPosX.size()); |
| | |
| | | if(pGlassResult && pReviewProcessor) |
| | | { |
| | | // WsiStart |
| | | pReviewProcessor->SetJobID(pGlassResult->m_strJobID); // pGlassResult->m_strGlassID -> pGlassResult->m_strJobID ���� |
| | | pReviewProcessor->SetJobID(pGlassResult->m_strJobID); // pGlassResult->m_strGlassID -> pGlassResult->m_strJobID |
| | | pReviewProcessor->SetOperID(pGlassResult->m_strOperID); |
| | | m_pSP2P->ISP2P_UpdateReviewProcessStatus(ReviewProcessStatus_WSIStart, nPlanIndex); |
| | | |
| | |
| | | MakeWSIUpLoadDirectory(pReviewProcessor->GetUploadImagePath()); |
| | | |
| | | //20190219 chm |
| | | pReviewProcessor->SetReviewCount(0); // ���� Sequence No �ʱ�È. |
| | | pReviewProcessor->SetReviewCount(0); |
| | | |
| | | return TRUE; |
| | | } |
| | |
| | | strPath = strPath + _T("\\WSI"); |
| | | if(CreateDirectory(strPath,NULL)==FALSE) |
| | | { |
| | | //LYW LOG�߰� |
| | | //LYW LOG |
| | | g_pLog->DisplayMessage(_T("[MakeWSIUpLoadDirectory]Directory Create Fail %s, ERROR CODE = %d "),strPath, GetLastError()); |
| | | } |
| | | |
| | |
| | | VectorDouble vectorCollisionPosX; |
| | | vectorCollisionPosX.clear(); |
| | | |
| | | //WSI �¿� ��Ʈ�� �����̵� |
| | | //WSI |
| | | pMotorControl->GantrySetTwoGantrySyncModeSend(1); |
| | | |
| | | |
| | | // WSI result count |
| | | for (int nModuleIdx = 0; nModuleIdx < Module_GetModuleStatusCount(); nModuleIdx++) |
| | | { |
| | |
| | | CModuleStatus* pModuleStatus = Module_GetModuleStatus(nModuleIdx); |
| | | if (pModuleStatus == NULL) continue; |
| | | |
| | | //�浹�Ÿ� �ֱ� |
| | | { |
| | | double dCollisionPosX = pWsiResult->GetCollisionPositionX() / 1000.0; |
| | | double dCollisionPosY = 0.0; |
| | |
| | | return 0; |
| | | } |
| | | } |
| | | |
| | | |
| | | // get result index |
| | | int nStartIdx = pWsiResult->GetStartSReviewResultIndex(); |
| | | int nEndIdx = pWsiResult->GetEndSReviewResultIndex(); |
| | | nEndIdx = min(nEndIdx, (pWsiResult->GetSReviewResultCount() - 1)) + 1; // set End Index |
| | | |
| | | // [2017:3:8]-[WEZASW] : CameraOffset ���� ���� (-1~1 => -5~5) |
| | | // [2017:3:8]-[WEZASW] : CameraOffset (-1~1 => -5~5) |
| | | double m_dMinOffset = -5.0; |
| | | double m_dMaxOffset = 5.0; |
| | | |
| | |
| | | SReviewResult* pWsi = pWsiResult->GetSReviewResult(nResultIdx); |
| | | if (pWsi == NULL) continue; |
| | | |
| | | //200�� ��巹���� ������ �Ϸ�������� �ߺ�üũ |
| | | //200 |
| | | if (pWsi->bCheckWSISendToMotor == FALSE) |
| | | { |
| | | pWsi->bCheckWSISendToMotor = TRUE; |
| | |
| | | } |
| | | } |
| | | |
| | | //���� ����Ʈ�� �ִ��� ������ üũ |
| | | if (vectorPosX.empty() == TRUE) |
| | | { |
| | | //3360 LYW_ CF AOI QD Review WSI XY MotorMoving Error �˶� �߻� ���� �м� �� ��ġ START |
| | | //3360 LYW_ CF AOI QD Review WSI XY MotorMoving Error START |
| | | g_pLog->DisplayMessage(_T("[GantryAutoGo] No Exist Send Point,TwoGantrySyncMode OFF!"), vectorPosX.size()); |
| | | g_pLog->DisplayMessage(_T("[GantryAutoGo] (%d)Gantry Path Send Fail"), pModuleStatus->GetGantryIndex()); //taek 210128 |
| | | pMotorControl->GantrySetTwoGantrySyncModeSend(0); |
| | | //3360 LYW_ CF AOI QD Review WSI XY MotorMoving Error �˶� �߻� ���� �м� �� ��ġ END |
| | | //3360 LYW_ CF AOI QD Review WSI XY MotorMoving Error END |
| | | } |
| | | else |
| | | { |
| | |
| | | int nTickCount = GetTickCount(); |
| | | while (1) |
| | | { |
| | | //5�� ����Ÿ�� |
| | | if ((GetTickCount() - nTickCount) > 5000) |
| | | { |
| | | bOverTime = TRUE; |
| | | break; |
| | | } |
| | | //���� ��� End üũ |
| | | //End üũ |
| | | if (pMotorControl->IsGantryMotionEnd(pModuleStatus->GetGantryIndex()) == TRUE) |
| | | { |
| | | if (pMotorControl->GantryAutoGo(pModuleStatus->GetGantryIndex(), vectorPosX, vectorPosY, TRUE)) |
| | |
| | | |
| | | } |
| | | |
| | | //5���Ŀ��� �ȿ����δ�? �׷� 3�� ��õ� ���� |
| | | //���End �� �߸� ���ü��� ������ |
| | | if (bOverTime == TRUE) |
| | | { |
| | | for (int i = 0; i < 3; i++) |
| | | { |
| | | Sleep(1000); |
| | | |
| | | //���Ͱ� �����ϼ� ���»����϶� Send ��ȣ�� Fail �߻� ���� Retry 3�� ���� |
| | | if (pMotorControl->GantryAutoGo(pModuleStatus->GetGantryIndex(), vectorPosX, vectorPosY, TRUE)) |
| | | { |
| | | nTotalCount += (int)vectorPosX.size(); |
| | |
| | | // get result index |
| | | int nStartIdx = pReviewResult->GetStartSReviewResultIndex(); |
| | | int nEndIdx = pReviewResult->GetEndSReviewResultIndex(); |
| | | nEndIdx = min(nEndIdx, (pReviewResult->GetSReviewResultCount()-1)) + 1; // End Index �ٽü��� |
| | | nEndIdx = min(nEndIdx, (pReviewResult->GetSReviewResultCount()-1)) + 1; // End Index |
| | | |
| | | // [2017:3:8]-[WEZASW] : CameraOffset ���� ���� (-1~1 => -5~5) |
| | | // [2017:3:8]-[WEZASW] : CameraOffset (-1~1 => -5~5) |
| | | double m_dMinOffset = -5.0; |
| | | double m_dMaxOffset = 5.0; |
| | | |
| | |
| | | if(pGlassResult && pReviewProcessor) |
| | | { |
| | | // MeasureStart |
| | | pReviewProcessor->SetJobID(pGlassResult->m_strJobID); // pGlassResult->m_strGlassID -> pGlassResult->m_strJobID ���� |
| | | pReviewProcessor->SetJobID(pGlassResult->m_strJobID); // pGlassResult->m_strGlassID -> pGlassResult->m_strJobID |
| | | pReviewProcessor->SetOperID(pGlassResult->m_strOperID); |
| | | m_pSP2P->ISP2P_UpdateReviewProcessStatus(ReviewProcessStatus_MeasureStart, nPlanIndex); |
| | | |
| | |
| | | const SCoordInfo* pCoordInfo = Module_GetCoordInfo(nModuleIdx); |
| | | if(pCoordInfo == NULL) continue; |
| | | |
| | | // [2017:3:8]-[WEZASW] : CameraOffset ���� ���� (-1~1 => -5~5) |
| | | // [2017:3:8]-[WEZASW] : CameraOffset (-1~1 => -5~5) |
| | | double m_dMinOffset = -5.0; |
| | | double m_dMaxOffset = 5.0; |
| | | |
| | |
| | | int nTotalCount = 0; |
| | | double dDefectPosX, dDefectPosY; |
| | | |
| | | // Module�� ��ġ�� ���� ModuleStatus sorting |
| | | std::vector<CModuleStatus*> SortedModuleStatus; |
| | | for(int nModuleIdx = 0; nModuleIdx < m_pSP2P->ISP2P_GetModuleStatusCount(); nModuleIdx++) |
| | | { |
| | |
| | | const SCoordInfo* pCoordInfo = Module_GetCoordInfo(pReviewResult->GetModuleIndex()); |
| | | if(pCoordInfo == NULL) continue; |
| | | |
| | | // [2017:3:8]-[WEZASW] : CameraOffset ���� ���� (-1~1 => -5~5) |
| | | // [2017:3:8]-[WEZASW] : CameraOffset (-1~1 => -5~5) |
| | | double m_dMinOffset = -5.0; |
| | | double m_dMaxOffset = 5.0; |
| | | |
| | |
| | | |
| | | if(nHeaderIdx == 0) |
| | | { |
| | | // �̵��� ������ǥ �߰� |
| | | if((int)vectorPos.size() < MAX_MOTOR_ADDRESS_SIZE) |
| | | { |
| | | pSReviewResult->dTargetMotorX = dDefectPosX; |
| | |
| | | |
| | | nSchedulingCount = pReviewScheduler->PathScheduling(vecPathData, vecStartPathData); |
| | | |
| | | |
| | | if (nSchedulingCount>0) |
| | | { |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[ReviewScheduler] CalculatePath")); |
| | |
| | | |
| | | // add user schedule result |
| | | |
| | | |
| | | //�����޸𸮿� ä���� ������ ������ ���� ��ǥ�� ����ü�� ä���ִ� ��� |
| | | { |
| | | |
| | | |
| | |
| | | break; |
| | | } |
| | | break; |
| | | // �̻�� |
| | | case CPJT_PlanMeasure: |
| | | { |
| | | const CRcpMeasureInfo *pRcpMeasureInfo = pRsRcpMeasureInfo->GetRcpMeasureInfo(0); |
| | |
| | | } |
| | | |
| | | //CIM DV Data |
| | | BOOL CSequenceProcessor_CPJT::SendDVDataToSignalControl() // ���� |
| | | BOOL CSequenceProcessor_CPJT::SendDVDataToSignalControl() |
| | | { |
| | | CGlassResult *pGlassResult = m_pSP2P->ISP2P_GetCurrentGlassResult(); |
| | | if (pGlassResult==NULL) return FALSE; |
| | |
| | | } |
| | | |
| | | |
| | | int CSequenceProcessor_CPJT::MakeDVData(CGlassResult *pGlassResult, char* pDVData, int nIndex) // ���� |
| | | int CSequenceProcessor_CPJT::MakeDVData(CGlassResult *pGlassResult, char* pDVData, int nIndex) |
| | | { |
| | | g_pLog->DisplayMessage(_T("[SequenceProcessor] SendDVDataToSignalControl->MakeDVData IN.")); |
| | | |
| | |
| | | const CRsRcpReviewInfo* pRsRcpReviewInfo = m_pSP2P->ISP2P_Recipe_GetRsRcpReviewInfo(); |
| | | if (pRsRcpReviewInfo == NULL) return FALSE; |
| | | |
| | | // Review ���� ���� |
| | | // Review |
| | | const CRcpLightInfo *pReviewLightInfo = pRsRcpReviewInfo->GetRcpLightInfo(nIndex); |
| | | // Review AFM ���� |
| | | // Review AFM |
| | | const CRcpAFMRecipeInfo *pReviewAFMInfo = pRsRcpReviewInfo->GetRcpAFMRecipeInfo(nIndex); |
| | | // Review Align Info |
| | | const CAlignResult* pAlignResult = pGlassResult->GetAlignResult(); |
| | | // Review Defect Info |
| | | const CReviewResult* pReviewResult = pGlassResult->GetReviewResult(nIndex); |
| | | |
| | | // Review ���� ���� |
| | | // Review |
| | | const CModuleStatus* pModuleStatus = Module_GetModuleStatus(nIndex); |
| | | const SMagnificInfo* pSMagnificInfo = pModuleStatus->GetMagnificInfo(pReviewAFMInfo->GetZoomIndex()); |
| | | CSignalControl* pSignalControl = m_pSP2P->ISP2P_GetSignalControl(); |
| | |
| | | // Write DVData Packet |
| | | //_DVDataPack_B7_8ver DVDataPack; |
| | | //**Review |
| | | //INLINE : 10�� |
| | | //TFE-OFF : 20�� |
| | | //Hcut : 50�� |
| | | //LAMI : 5�� |
| | | //INLINE : 10 |
| | | //TFE-OFF : 20 |
| | | //Hcut : 50 |
| | | //LAMI : 5 |
| | | //**WSI |
| | | //10�� ���� |
| | | //10 |
| | | /////////////////////////////////////////////////////////////////////////// |
| | | |
| | | |
| | |
| | | //nAlignResult = 1; |
| | | |
| | | |
| | | //nAlignResult00 = pAlignResult->nFindAlign[0] * 1000;//���� |
| | | //nAlignResult01 = pAlignResult->nFindAlign[1] * 1000;//���� |
| | | //nAlignResult00 = pAlignResult->nFindAlign[0] * 1000; |
| | | //nAlignResult01 = pAlignResult->nFindAlign[1] * 1000; |
| | | |
| | | //nAlignResult00 = pAlignResult->dFindScore[0]; |
| | | //nAlignResult01 = pAlignResult->dFindScore[1]; |
| | |
| | | nAlignResult01 = 0; |
| | | } |
| | | |
| | | //�Ŀ�? |
| | | nReviewAliveCamera00 = ReviewCamera_GetReviewCameraControl(0)->GetConnected() * 1000; |
| | | nReviewAliveCamera01 = ReviewCamera_GetReviewCameraControl(1)->GetConnected() * 1000; |
| | | |
| | |
| | | { |
| | | wsprintf(DriveText, TEXT("%C:"), Drive); |
| | | UINT type = GetDriveType(DriveText); |
| | | if ((dwDrive & dwDriveCh) && (type == DRIVE_REMOVABLE || type == DRIVE_FIXED || type == DRIVE_RAMDISK)) { |
| | | // �ϵ�뷮 |
| | | if ((dwDrive & dwDriveCh) && (type == DRIVE_REMOVABLE || type == DRIVE_FIXED || type == DRIVE_RAMDISK)) { |
| | | ULARGE_INTEGER i64FreeBytesToCaller = { 0 }, i64TotalBytes = { 0 }, i64FreeBytes = { 0 }; |
| | | BOOL bRsult = GetDiskFreeSpaceEx(DriveText, (PULARGE_INTEGER)&i64FreeBytesToCaller, (PULARGE_INTEGER)&i64TotalBytes, (PULARGE_INTEGER)&i64FreeBytes); |
| | | if (bRsult) { |
| | |
| | | pSignalControl->WritePacketData(_T("15100"), sizeof(DVDataPack_CPJT), (short*)&DVData);*/ |
| | | } |
| | | |
| | | //#3358 KYH FDC ������ ���� ���� ���� ADD START |
| | | //#3358 KYH FDC ADD START |
| | | void CSequenceProcessor_CPJT::MakeDVData2() |
| | | { |
| | | |
| | |
| | | } |
| | | else |
| | | { |
| | | // Review ���� ���� |
| | | // Review |
| | | pReviewLightInfo = pRsRcpReviewInfo->GetRcpLightInfo(0); |
| | | // Review AFM ���� |
| | | // Review AFM |
| | | pReviewAFMInfo = pRsRcpReviewInfo->GetRcpAFMRecipeInfo(0); |
| | | } |
| | | |
| | |
| | | |
| | | |
| | | |
| | | // Review ���� ���� |
| | | // Review |
| | | const CModuleStatus* pModuleStatus = Module_GetModuleStatus(0); |
| | | const SMagnificInfo* pSMagnificInfo = NULL; |
| | | if (pModuleStatus == NULL) |
| | |
| | | //nAlignResult = 1; |
| | | |
| | | |
| | | //nAlignResult00 = pAlignResult->nFindAlign[0] * 1000;//���� |
| | | //nAlignResult01 = pAlignResult->nFindAlign[1] * 1000;//���� |
| | | //nAlignResult00 = pAlignResult->nFindAlign[0] * 1000; |
| | | //nAlignResult01 = pAlignResult->nFindAlign[1] * 1000; |
| | | |
| | | //nAlignResult00 = pAlignResult->dFindScore[0]; |
| | | //nAlignResult01 = pAlignResult->dFindScore[1]; |
| | |
| | | nAlignResult01 = 1000; |
| | | } |
| | | |
| | | //�Ŀ�? |
| | | if (ReviewCamera_GetReviewCameraControl(0) != NULL) |
| | | { |
| | | nReviewAliveCamera00 = ReviewCamera_GetReviewCameraControl(0)->GetConnected() * 1000; |
| | |
| | | { |
| | | wsprintf(DriveText, TEXT("%C:"), Drive); |
| | | UINT type = GetDriveType(DriveText); |
| | | if ((dwDrive & dwDriveCh) && (type == DRIVE_REMOVABLE || type == DRIVE_FIXED || type == DRIVE_RAMDISK)) { |
| | | // �ϵ�뷮 |
| | | if ((dwDrive & dwDriveCh) && (type == DRIVE_REMOVABLE || type == DRIVE_FIXED || type == DRIVE_RAMDISK)) { |
| | | ULARGE_INTEGER i64FreeBytesToCaller = { 0 }, i64TotalBytes = { 0 }, i64FreeBytes = { 0 }; |
| | | BOOL bRsult = GetDiskFreeSpaceEx(DriveText, (PULARGE_INTEGER)&i64FreeBytesToCaller, (PULARGE_INTEGER)&i64TotalBytes, (PULARGE_INTEGER)&i64FreeBytes); |
| | | if (bRsult) { |
| | |
| | | |
| | | return; |
| | | } |
| | | //#3358 KYH FDC ������ ���� ���� ���� ADD END |
| | | //#3358 KYH FDC ADD END |
| | | |
| | | DWORD CSequenceProcessor_CPJT::GetDiskUsage() |
| | | { |
| | |
| | | |
| | | BOOL bResult = FALSE; |
| | | |
| | | // PCControl D2300 (�˻� ����) |
| | | // PCControl D2300 |
| | | switch(nSignalIndex) |
| | | { |
| | | case PCControlRecv_TimeChange: |
| | |
| | | g_pLog->DisplayMessage(_T("[SequenceProcessor] Success! SetLocalTime(), Current: %04d-%02d-%02d %02d-%02d-%02d, Changed: %04d-%02d-%02d %02d-%02d-%02d"), |
| | | CurrentTime.wYear, CurrentTime.wMonth, CurrentTime.wDay, CurrentTime.wHour, CurrentTime.wMinute, CurrentTime.wSecond, |
| | | ChangedTime.wYear, ChangedTime.wMonth, ChangedTime.wDay, ChangedTime.wHour, ChangedTime.wMinute, ChangedTime.wSecond); |
| | | // AFM & WSI TIME ï¿½ï¿½ï¿½ï¿½È |
| | | // AFM & WSI TIME |
| | | SendSystemTime(ChangedTime); |
| | | } else { |
| | | g_pLog->DisplayMessage(_T("[SequenceProcessor] Fail! SetLocalTime()")); |
| | |
| | | return TRUE; |
| | | } |
| | | |
| | | // Local System ���� �ð��� ���� ��û ��Ʈ�ѷ��� �ð��� ó�� ���� |
| | | // Local System |
| | | BOOL CSequenceProcessor_CPJT::SendSystemTime(SYSTEMTIME sysTime) |
| | | { |
| | | SYSTEMTIME CurrentTime; |
| | |
| | | case PCControlSend_Defoucs: |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[PCControl_Send] Defoucs! => %d"),0); |
| | | break; |
| | | case PCControlSend_Diagnosis: // 0412 �ڰ����� ��ȣ �߰� |
| | | case PCControlSend_Diagnosis: // 0412 |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[PCControl_Send] Diagnosis! => %d"), 0); |
| | | break; |
| | | } |
| | |
| | | case PCControlSend_Defoucs: |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[PCControl_Send] Defoucs! => %d"),0); |
| | | break; |
| | | case PCControlSend_Diagnosis: // 0412 �ڰ����� ��ȣ �߰� |
| | | case PCControlSend_Diagnosis: // 0412 |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[PCControl_Send] Diagnosis! => %d"), 0); |
| | | break; |
| | | } |
| | |
| | | if (bResult==FALSE) m_pSP2P->ISP2P_DisplayMessage(_T("[PCControl_Mode] Manual Mode Error!")); |
| | | |
| | | // lmk simul manual camera,motor stop |
| | | //ReviewCamera_CameraControl(CameraControlStop); // ���� ���߸� ī�޶� �ڵ� ��ž |
| | | //ReviewCamera_CameraControl(CameraControlStop); |
| | | CMotorControl* pMotorControl = m_pSP2P->ISP2P_GetMotorControl(); |
| | | if(pMotorControl) |
| | | pMotorControl->CommonSetAutoStop(); |
| | |
| | | |
| | | if (SetLocalTime(&sTime)) |
| | | { |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[PCControl_Signal] �������� %s"), strtime); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[PCControl_Signal] TymeSync Success %s"), strtime); |
| | | } |
| | | else |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[PCControl_Signal] �������� %s"), strtime); |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[PCControl_Signal] TymeSync Fail %s"), strtime); |
| | | |
| | | |
| | | //memcpy(&time, strTime, 2); |
| | |
| | | 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); |
| | | |
| | |
| | | CReviewResult* pWsiMultiShotResult = pGlassResult->GetWsiMultiShotResult(nModuleIndex); |
| | | if (pWsiMultiShotResult == NULL) goto RESULT_FAIL; |
| | | |
| | | // ������ �ε����� �����´�. |
| | | int nCurResultIdx = pWsiMultiShotResult->GetLastSReviewResultIndex() + 1; // last index + 1 |
| | | int nStartResultIdx = pWsiMultiShotResult->GetStartSReviewResultIndex(); |
| | | int nEndResultIdx = pWsiMultiShotResult->GetEndSReviewResultIndex(); |
| | |
| | | int nMPosY = int(pPosition->dMotorPosY * 1000.0); |
| | | double dTime = (double)m_ProcessTimer.GetDurationMilliSecond(); |
| | | |
| | | // �ε����� �ٸ��� ��������. |
| | | if (measureResut.nResultIndex != nCurResultIdx) |
| | | { |
| | | goto RESULT_FAIL; |
| | | } |
| | | |
| | | // ���� ������ ����. |
| | | // measureResut |
| | | |
| | | if (pWsiMultiShotResult->GetSReviewResultCount() == 0) return; |
| | |
| | | // set last result idx |
| | | pWsiMultiShotResult->SetLastSReviewResultIndex(nCurResultIdx); |
| | | |
| | | // ������ ����Ʈ���� �԰�, WSI ����� ���� ������... |
| | | if (nCurResultIdx == nEndResultIdx && nCurResultIdx <= pWsiMultiShotResult->GetSReviewResultCount()) |
| | | { |
| | | nStartResultIdx = nCurResultIdx + 1; |
| | |
| | | pWsiMultiShotResult->SetStartSReviewResultIndex(nStartResultIdx); |
| | | pWsiMultiShotResult->SetEndSReviewResultIndex(nEndResultIdx); |
| | | |
| | | // ������ ����Ʈ ���� ��������. |
| | | ::Sleep(3000); // ����̴� �ʼ���. ������ ���� ����. |
| | | ::Sleep(3000); |
| | | // Process_RemainWsiPoint(nModuleIndex); |
| | | } |
| | | |
| | |
| | | if(pGlassResult && pReviewProcessor) |
| | | { |
| | | // WsiStart |
| | | pReviewProcessor->SetJobID(pGlassResult->m_strJobID); // pGlassResult->m_strGlassID -> pGlassResult->m_strJobID ���� |
| | | pReviewProcessor->SetJobID(pGlassResult->m_strJobID); // pGlassResult->m_strGlassID -> pGlassResult->m_strJobID |
| | | pReviewProcessor->SetOperID(pGlassResult->m_strOperID); |
| | | m_pSP2P->ISP2P_UpdateReviewProcessStatus(ReviewProcessStatus_WSIReflowStart, nPlanIndex); |
| | | |
| | |
| | | if(pGlassResult && pReviewProcessor) |
| | | { |
| | | // WsiStart |
| | | pReviewProcessor->SetJobID(pGlassResult->m_strJobID); // pGlassResult->m_strGlassID -> pGlassResult->m_strJobID ���� |
| | | pReviewProcessor->SetJobID(pGlassResult->m_strJobID); // pGlassResult->m_strGlassID -> pGlassResult->m_strJobID |
| | | pReviewProcessor->SetOperID(pGlassResult->m_strOperID); |
| | | m_pSP2P->ISP2P_UpdateReviewProcessStatus(ReviewProcessStatus_WSIStart, nPlanIndex); |
| | | |
| | |
| | | WSIAllReadySignal(1); |
| | | |
| | | // send wsi start |
| | | // ���� ���� |
| | | if (!WSIMultiShotAllStartSignal()) |
| | | { |
| | | g_pLog->DisplayMessage(_T("[WSI] WSI MultiShot Start Fail!!")); |
| | |
| | | if (pGlassResult && pReviewProcessor) |
| | | { |
| | | // WsiStart |
| | | pReviewProcessor->SetJobID(pGlassResult->m_strJobID); // pGlassResult->m_strGlassID -> pGlassResult->m_strJobID ���� |
| | | pReviewProcessor->SetJobID(pGlassResult->m_strJobID); // pGlassResult->m_strGlassID -> pGlassResult->m_strJobID |
| | | pReviewProcessor->SetOperID(pGlassResult->m_strOperID); |
| | | m_pSP2P->ISP2P_UpdateReviewProcessStatus(ReviewProcessStatus_WSIMultiShotStart, nPlanIndex); |
| | | |
| | |
| | | int nEndIdx = pWsiResult->GetEndSReviewResultIndex(); |
| | | nEndIdx = min(nEndIdx, (pWsiResult->GetSReviewResultCount()-1)) + 1; // set End Index |
| | | |
| | | // [2017:3:8]-[WEZASW] : CameraOffset ���� ���� (-1~1 => -5~5) |
| | | // [2017:3:8]-[WEZASW] : CameraOffset (-1~1 => -5~5) |
| | | double m_dMinOffset = -5.0; |
| | | double m_dMaxOffset = 5.0; |
| | | |
| | |
| | | CModuleStatus* pModuleStatus = Module_GetModuleStatus(nModuleIdx); |
| | | if (pModuleStatus == NULL) continue; |
| | | |
| | | //�浹�Ÿ� �ֱ� |
| | | { |
| | | double dCollisionPosX = pWsiUserResult->GetCollisionPositionX() / 1000.0; |
| | | double dCollisionPosY = 0.0; |
| | |
| | | int nEndIdx = pWsiUserResult->GetEndSReviewResultIndex(); |
| | | nEndIdx = min(nEndIdx, (pWsiUserResult->GetSReviewResultCount()-1)) + 1; // set End Index |
| | | |
| | | // [2017:3:8]-[WEZASW] : CameraOffset ���� ���� (-1~1 => -5~5) |
| | | // [2017:3:8]-[WEZASW] : CameraOffset (-1~1 => -5~5) |
| | | double m_dMinOffset = -5.0; |
| | | double m_dMaxOffset = 5.0; |
| | | |
| | |
| | | } |
| | | |
| | | } |
| | | |
| | | //������ ���� |
| | | |
| | | pWsiMultiShotResult->GetVectorSReviewResult()->clear(); |
| | | int nResultCount = 0; |
| | | if (m_vecSReviewResult.size()>0) |
| | | { |
| | | //�����ٸ� ���� ��� ��������Ŷ� �� ����ֱ� ���� |
| | | for(int i=0; i< m_vecSReviewResult.size(); i++) |
| | | { |
| | | //������ ���ÿ� ���� ���� �Է��ؾߵ� �װ͸�Š������! |
| | | //������ WSI FOV 4���� ���ؿ��� ���� |
| | | { |
| | | double dOringinX = m_vecSReviewResult[i].nUMOriginX; |
| | | double dOringinY = m_vecSReviewResult[i].nUMOriginY; |
| | | |
| | |
| | | CModuleStatus* pModuleStatus = Module_GetModuleStatus(nModuleIdx); |
| | | if (pModuleStatus == NULL) continue; |
| | | |
| | | |
| | | //�浹�Ÿ� �ֱ� |
| | | { |
| | | |
| | | double dCollisionPosX = pWsiMultiShotResult->GetCollisionPositionX() / 1000.0; |
| | |
| | | int nEndIdx = pWsiMultiShotResult->GetEndSReviewResultIndex(); |
| | | nEndIdx = min(nEndIdx, (pWsiMultiShotResult->GetSReviewResultCount() - 1)) + 1; // set End Index |
| | | |
| | | // [2017:3:8]-[WEZASW] : CameraOffset ���� ���� (-1~1 => -5~5) |
| | | // [2017:3:8]-[WEZASW] : CameraOffset (-1~1 => -5~5) |
| | | double m_dMinOffset = -5.0; |
| | | double m_dMaxOffset = 5.0; |
| | | |
| | |
| | | CRsRcpReviewInfo* pRsRcpReviewInfo = m_pSP2P->ISP2P_Recipe_GetRsRcpReviewInfo(); |
| | | if(pRsRcpReviewInfo == NULL) return FALSE; |
| | | |
| | | if(pRsRcpReviewInfo->GetRcpUserDefectInfoCount() < 1) return TRUE; // �������� ī��Ʈ�� ���ٸ� �Ѿ�� |
| | | if(pRsRcpReviewInfo->GetRcpUserDefectInfoCount() < 1) return TRUE; |
| | | |
| | | double dCenterPosX, dCenterPosY; |
| | | |
| | |
| | | _grmGlassData* pSharedGlassData = pDitSharedGlassRaw->GetGlassData(); |
| | | if(pSharedGlassData == NULL) return FALSE; |
| | | |
| | | //pSharedGlassData->m_nUserReviewNum = 0; //���� �޸� User plan |
| | | //pSharedGlassData->m_nUserReviewNum = 0; // User plan |
| | | |
| | | _grmDefectData* pSharedDefect; |
| | | int nPointCount = pRecipeinfo->GetRcpUserDefectInfoCount(); // User ��ǥ �� ī��Ʈ |
| | | int nPointCount = pRecipeinfo->GetRcpUserDefectInfoCount(); |
| | | |
| | | int nSharedDefectNum = pSharedGlassData->m_nDefectNum; // ���� �Ѱ��� User Idx �� ù��° Index �� �ȴ� |
| | | int nStartIdx=nSharedDefectNum;// USER ���� ���� IDX �ο��ϱ� ���� ������ |
| | | int nSharedDefectNum = pSharedGlassData->m_nDefectNum; |
| | | int nStartIdx=nSharedDefectNum; |
| | | |
| | | CRcpPlanInfo* pRcpPlanInfo; // ������ ���� |
| | | CRcpUserDefectInfo *pDefectInfo;// ������ defect ���� |
| | | CRcpPlanInfo* pRcpPlanInfo; |
| | | CRcpUserDefectInfo *pDefectInfo; |
| | | |
| | | int nInsepectionType;// User Ÿ�� Reviewreflow = 0 wsiReflow =1; REV&WSI =2; WSIUSEr =3; USER =4; |
| | | int nInsepectionType;// User Reviewreflow = 0 wsiReflow =1; REV&WSI =2; WSIUSEr =3; USER =4; |
| | | |
| | | int nCount = 0; |
| | | |
| | |
| | | |
| | | BOOL CSequenceProcessor_CPJT::CompareRevType(int nInsType,int nRevType) |
| | | { |
| | | //Plan Ÿ�԰� InspectionMode �� |
| | | //Plan InspectionMode |
| | | if(nRevType == CPJT_PlanUser) |
| | | { |
| | | if(nInsType == USER) return TRUE; |
| | |
| | | CString strMessage, strResultFilePath, strUploadResultFilePath, strLocalRawPath; |
| | | CString strUploadRawPath, strUploadImagePath, strAOIRawFileName, strAOIRawFilePath; |
| | | |
| | | //3-1. ���� ��� ���� ���� |
| | | //3-1. |
| | | m_pSP2P->ISP2P_SetReviewResultData(pGlassResult); |
| | | |
| | | strLocalRawPath = pNetworkInfo->m_strLocalRawPath; |
| | |
| | | |
| | | if(strUploadRawPath.IsEmpty() == FALSE && strAOIRawFilePath.IsEmpty() == FALSE) |
| | | { |
| | | // [2017:5:16]-[WEZASW] : ���� PASS���� ���� ��� ��Ȳ�� ���� AOI Server�� RAW ���� ���� ���ε� ����. |
| | | // [2017:5:16]-[WEZASW] : |
| | | strUploadResultFilePath.Format(_T("%s\\%s"), strUploadRawPath, strAOIRawFileName); |
| | | |
| | | if(CopyFile(strResultFilePath, strUploadResultFilePath, FALSE)) |
| | |
| | | } |
| | | |
| | | // delete file of Glass direction |
| | | DeleteFile(pNetworkInfo->m_strAOIRawPath + _T("\\") + pGlassResult->m_strJobID + _T("TD"));//pGlassResult->m_strGlassID -> m_StrJobID ���� |
| | | DeleteFile(pNetworkInfo->m_strAOIRawPath + _T("\\") + pGlassResult->m_strJobID + _T("TD"));//pGlassResult->m_strGlassID -> m_StrJobID |
| | | |
| | | // [2017:4:11]-[WEZASW] :CIM(DV Data) ���� �׸� �߰�. |
| | | // [2017:4:11]-[WEZASW] :CIM(DV Data) |
| | | if (SendDVDataToSignalControl()==FALSE) |
| | | { |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] DV Data Send FAIL!")); |
| | |
| | | |
| | | BOOL CSequenceProcessor_CPJT::MoveReviewStartMotorPosition(CGlassResult* pGlassResult,int nReviewType) |
| | | { |
| | | //Ȥ�ó� ���ϱ�� ���ܵ� |
| | | //���� �÷��� ù��° ��ġ�� �̵� |
| | | |
| | | double dDefectPosX,dDefectPosY = 0; |
| | | |
| | |
| | | |
| | | void CSequenceProcessor_CPJT::SendWsiErrorAlarm_CPJT(int Index) //190801 chm |
| | | { |
| | | //wsi ���� �˶� |
| | | //wsi |
| | | if(Index==1) |
| | | { |
| | | g_pLog->DisplayMessage(_T("[SequenceProcessor_CPJT] WSI Alive Error!!!")); |
| | |
| | | |
| | | void CSequenceProcessor_CPJT::SendWsiAlive_CPJT()//190801 chm |
| | | { |
| | | //WSI Alive ��ȣ ���� |
| | | //WSI Alive |
| | | SetWSIAliveCheck(TRUE); |
| | | } |
| | | |
| | |
| | | if(bWsiAliveCheck ==FALSE){ |
| | | m_pCSPC->SendWsiErrorAlarm_CPJT(1); |
| | | } |
| | | bWsiAliveCheck=FALSE; //30�ʿ� �ѹ��� 0���� ï¿½Ê±ï¿½È |
| | | bWsiAliveCheck=FALSE; |
| | | |
| | | } |
| | | } |
| | |
| | | BOOL m_nGlassCountCheck; |
| | | |
| | | BOOL m_bUseAFMHomePosition; |
| | | |
| | | |
| | | DWORD dwRevStartTickCount; |
| | | DWORD dwRevEndTickCount; |
| | |
| | | #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_BUTTON_LEFT 1008 |
| | | #define IDC_BUTTON_APPLT_OFFSET 1008 |
| | | #define IDC_BUTTON_PROGRAMEXIT 1008 |
| | | #define IDC_BUTTON_ALIGNCAM_GRAB 1008 |
| | | #define IDC_SPIN2 1009 |
| | | #define IDC_CHECK_REVIEW_PATH2 1009 |
| | | #define IDC_CHECK_AUTO_SELECT_CAMERA 1009 |
| | |
| | | #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 |
| | |
| | | #include "CHReviewResult/GlassResult.h" |
| | | #include "CHReviewSetting/MotorParameter.h" |
| | | |
| | | #include <DbgHelp.h> |
| | | #pragma comment ( lib, "DbgHelp" ) |
| | | |
| | | #include <WinNetWk.h> |
| | | //#pragma comment(lib,"Mpr.lib") |
| | | |
| | |
| | | #define ID_TIMER_SEND_SIGNAL_ALIVE (WM_USER + 107) |
| | | |
| | | |
| | | #define _REVIEW_SERVER_BASE_PATH_ _T("C:\\DIT_Review") |
| | | #define _REVIEW_SERVER_LOG_PATH_ _T("C:\\DIT_Review\\ReviewServerLog") |
| | | #define _REVIEW_RECIPE_PATH_ _T("C:\\DIT_Review\\Recipe") |
| | | #define _REVIEW_REF_RECIPE_PATH_ _T("C:\\DIT_Review\\Recipe\\Reference") |
| | | #define _REVIEW_SERVER_CONFIG_PATH_ _T("C:\\DIT_Review\\ReviewServerConfig") |
| | | #define _REVIEW_SERVER_SYSTEM_SETTING_FILE_PATH_ _T("C:\\DIT_Review\\ReviewServerConfig\\SystemSetting.cfg") |
| | | #define _REVIEW_SERVER_BASE_PATH_ _T("D:\\DIT_Review") //210805 |
| | | #define _REVIEW_SERVER_LOG_PATH_ _T("D:\\DIT_Review\\ReviewServerLog") |
| | | #define _REVIEW_RECIPE_PATH_ _T("D:\\DIT_Review\\Recipe") |
| | | #define _REVIEW_REF_RECIPE_PATH_ _T("D:\\DIT_Review\\Recipe\\Reference") |
| | | #define _REVIEW_SERVER_CONFIG_PATH_ _T("D:\\DIT_Review\\ReviewServerConfig") |
| | | #define _REVIEW_SERVER_SYSTEM_SETTING_FILE_PATH_ _T("D:\\DIT_Review\\ReviewServerConfig\\SystemSetting.cfg") |
| | | #define _SYSTEM_SETTING_TITLE_ _T("ReviewSystemSetting") |
| | | #define _RECIPE_EDITOR_TITLE_ _T("ReviewRecipeEditor") |
| | | #define _REVIEW_LOGIN_LOG_PATH_ _T("C:\\DIT_Review\\ReviewServerLog\\LoginLog") |
| | | #define _REVIEW_REFLOW_RECIPE_PATH_ _T("C:\\DIT_Review\\Recipe\\Reflow") |
| | | #define ALIGN_TEMPLATE_PATH _T("C:\\DIT_Review\\Recipe\\AlignImage") |
| | | #define _REVIEW_LOGIN_LOG_PATH_ _T("D:\\DIT_Review\\ReviewServerLog\\LoginLog") |
| | | #define _REVIEW_REFLOW_RECIPE_PATH_ _T("D:\\DIT_Review\\Recipe\\Reflow") |
| | | #define ALIGN_TEMPLATE_PATH _T("D:\\DIT_Review\\Recipe\\AlignImage") |
| | | #define _REVIEW_RECIPE_BACKUP_PATH_CPJT _T("\\\\126.100.100.5\\d\\DIT Back up\\DIT Review\\Recipe") |
| | | #define _REVIEW_SERVER_SYSTEM_SETTING_BACKUP_PATH_CPJT _T("\\\\126.100.100.5\\d\\DIT Back up\\DIT Review\\ReviewServerConfig") |
| | | |
| | | //#define _REVIEW_SERVER_BASE_PATH_ _T("C:\\DIT_Review") |
| | | //#define _REVIEW_SERVER_LOG_PATH_ _T("C:\\DIT_Review\\ReviewServerLog") |
| | | //#define _REVIEW_RECIPE_PATH_ _T("C:\\DIT_Review\\Recipe") |
| | | //#define _REVIEW_REF_RECIPE_PATH_ _T("C:\\DIT_Review\\Recipe\\Reference") |
| | | //#define _REVIEW_SERVER_CONFIG_PATH_ _T("C:\\DIT_Review\\ReviewServerConfig") |
| | | //#define _REVIEW_SERVER_SYSTEM_SETTING_FILE_PATH_ _T("C:\\DIT_Review\\ReviewServerConfig\\SystemSetting.cfg") |
| | | //#define _SYSTEM_SETTING_TITLE_ _T("ReviewSystemSetting") |
| | | //#define _RECIPE_EDITOR_TITLE_ _T("ReviewRecipeEditor") |
| | | //#define _REVIEW_LOGIN_LOG_PATH_ _T("C:\\DIT_Review\\ReviewServerLog\\LoginLog") |
| | | //#define _REVIEW_REFLOW_RECIPE_PATH_ _T("C:\\DIT_Review\\Recipe\\Reflow") |
| | | //#define ALIGN_TEMPLATE_PATH _T("C:\\DIT_Review\\Recipe\\AlignImage") |
| | | //#define _REVIEW_RECIPE_BACKUP_PATH_CPJT _T("\\\\126.100.100.5\\d\\DIT Back up\\DIT Review\\Recipe") |
| | | //#define _REVIEW_SERVER_SYSTEM_SETTING_BACKUP_PATH_CPJT _T("\\\\126.100.100.5\\d\\DIT Back up\\DIT Review\\ReviewServerConfig") |
| | | |
| | | |
| | | #define TOTAL_WINDOW_SIZE_X 1920 |
| | |
| | | char strMessageString[MAX_PATH]; |
| | | }; |
| | | |
| | | BOOL KillProcess(CString ProcessName);BOOL getStateProcess(CString ProcessName); |
| | | BOOL KillProcess(CString ProcessName);BOOL getStateProcess(CString ProcessName); |
| | | |
| | | // ì ì¸ |
| | | static LONG CALLBACK TopLevelExceptionFilterCallBack(EXCEPTION_POINTERS* exceptionInfo); |
| | | |
| | | LONG CALLBACK TopLevelExceptionFilterCallBack(EXCEPTION_POINTERS * exceptionInfo) |
| | | { |
| | | MINIDUMP_EXCEPTION_INFORMATION dmpInfo = { 0 }; |
| | | dmpInfo.ThreadId = ::GetCurrentThreadId(); // Threae ID |
| | | dmpInfo.ExceptionPointers = exceptionInfo; // Exception Info |
| | | dmpInfo.ClientPointers = FALSE; |
| | | CTime time; |
| | | CString strStamp; |
| | | |
| | | SYSTEMTIME currentTime; |
| | | ::GetLocalTime(¤tTime); |
| | | time = CTime::GetCurrentTime(); |
| | | strStamp.Format(_T("Dump\\%02d_%02d_%02d_%02d_%02d_%02d.dmp"), time.GetYear(), time.GetMonth(), time.GetDay(), time.GetHour(), time.GetMinute(), time.GetSecond()); |
| | | |
| | | HANDLE hFile = CreateFile(strStamp, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); |
| | | |
| | | // ë¤í ìì± |
| | | BOOL bWrite = ::MiniDumpWriteDump(::GetCurrentProcess(), ::GetCurrentProcessId(), hFile, MiniDumpNormal, &dmpInfo, NULL, NULL); |
| | | |
| | | return 0L; |
| | | |
| | | } |
| | |
| | | , m_nSignalReviewStartDelay(0) |
| | | , m_nSignalReviewEndDelay(0) |
| | | , m_nSignalUnloadingDelay(0) |
| | | , m_nSignalDefocusValueMin(0) |
| | | , m_nSignalDefocusValueMax(0) |
| | | { |
| | | m_pDlgSignalReadData = NULL; |
| | | m_pDlgSignalWriteData = NULL; |
| | |
| | | DDX_Text(pDX, IDC_EDIT_SYS_SIGNAL_REVIEWSTART_DELAY, m_nSignalReviewStartDelay); |
| | | DDX_Text(pDX, IDC_EDIT_SYS_SIGNAL_REVIEWEND_DELAY, m_nSignalReviewEndDelay); |
| | | DDX_Text(pDX, IDC_EDIT_SYS_SIGNAL_UNLOADING_DELAY, m_nSignalUnloadingDelay); |
| | | DDX_Text(pDX, IDC_EDIT_DEFOCUSVALUE_MIN, m_nSignalDefocusValueMin); |
| | | DDX_Text(pDX, IDC_EDIT_DEFOCUSVALUE_MAX, m_nSignalDefocusValueMax); |
| | | } |
| | | |
| | | |
| | |
| | | // TODO: ì¬ê¸°ì ì¶ê° ì´ê¸°í ìì
ì ì¶ê°í©ëë¤. |
| | | int nSignalConnectionType = -1, nSignalPort = -1, nSignalPeriodTime = -1, nTimerTime = 0, nTotalTime = 0; |
| | | int nLoadingDelay = 0, nAlignStartDelay = 0, nAlignEndDelay = 0, nReviewStartDelay = 0, nReviewEndDelay = 0, nUnloadingDelay = 0; |
| | | int nDefocusValueMin = 0, nDefocusValueMax = 0; |
| | | CString strTemp = _T(""), strSignalReceiveAddress = _T(""), strSignalSendAddress = _T(""); |
| | | CReviewSystemSettingDlg* pDlg = (CReviewSystemSettingDlg*)AfxGetMainWnd(); |
| | | |
| | |
| | | // strSignalReceiveAddress = pSignalInfo->GetReadSignalAddress(0); |
| | | // strSignalSendAddress = pSignalInfo->GetSendSignalAddress(0); |
| | | nSignalPeriodTime = pSignalInfo->GetMSPeriod(); |
| | | nDefocusValueMin = pSignalInfo->GetDefocusValueMin(); |
| | | nDefocusValueMax = pSignalInfo->GetDefocusValueMax(); |
| | | nLoadingDelay = pSignalInfo->GetMSLoadingSignalDelay(); |
| | | nAlignStartDelay = pSignalInfo->GetMSAlignStartSignalDelay(); |
| | | nAlignEndDelay = pSignalInfo->GetMSAlignEndSignalDelay(); |
| | |
| | | |
| | | m_strSendAddress = strSignalSendAddress; |
| | | m_nSignalPeriod = nSignalPeriodTime; |
| | | m_nSignalDefocusValueMin = nDefocusValueMin; |
| | | m_nSignalDefocusValueMax = nDefocusValueMax; |
| | | m_nSignalLodingDelay = nLoadingDelay; |
| | | m_nSignalAlignStartDelay = nAlignStartDelay; |
| | | m_nSignalAlignEndDelay = nAlignEndDelay; |
| | |
| | | m_nSignalReviewStartDelay = 0; |
| | | m_nSignalReviewEndDelay = 0; |
| | | m_nSignalUnloadingDelay = 0; |
| | | m_nSignalDefocusValueMin = 0; |
| | | m_nSignalDefocusValueMax = 0; |
| | | m_nTimerTime = 0; |
| | | m_nTotalTime = 0; |
| | | |
| | |
| | | pSignalInfo->SetReadSignalAddress(m_strReceiveAddress); |
| | | pSignalInfo->SetSendSignalAddress(m_strSendAddress); |
| | | pSignalInfo->SetMSPeriod(m_nSignalPeriod); |
| | | pSignalInfo->SetDefocusValueMin(m_nSignalDefocusValueMin); |
| | | pSignalInfo->SetDefocusValueMax(m_nSignalDefocusValueMax); |
| | | pSignalInfo->SetMSLodingSignalDelay(m_nSignalLodingDelay); |
| | | pSignalInfo->SetMSAlignStartSignalDelay(m_nSignalAlignStartDelay); |
| | | pSignalInfo->SetMSAlignEndSignalDelay(m_nSignalAlignEndDelay); |
| | |
| | | int m_nSignalReviewStartDelay; |
| | | int m_nSignalReviewEndDelay; |
| | | int m_nSignalUnloadingDelay; |
| | | int m_nSignalDefocusValueMin; |
| | | int m_nSignalDefocusValueMax; |
| | | }; |
| | |
| | | RTEXT "Unloading Signal Delay :",IDC_STATIC,178,94,93,14,SS_CENTERIMAGE |
| | | EDITTEXT IDC_EDIT_SYS_SIGNAL_UNLOADING_DELAY,276,92,70,14,ES_AUTOHSCROLL |
| | | LTEXT "ms",IDC_STATIC,348,95,14,12,SS_CENTERIMAGE |
| | | RTEXT "DefocusValue :",IDC_STATIC,24,111,48,14,SS_CENTERIMAGE |
| | | EDITTEXT IDC_EDIT_DEFOCUSVALUE_MIN,77,111,24,13,ES_AUTOHSCROLL |
| | | EDITTEXT IDC_EDIT_DEFOCUSVALUE_MAX,122,110,23,13,ES_AUTOHSCROLL |
| | | RTEXT "~",IDC_STATIC,107,109,8,14,SS_CENTERIMAGE |
| | | END |
| | | |
| | | IDD_DIALOG_SYS_SETTING_SIGNAL_READ_DATA DIALOGEX 0, 0, 416, 342 |
| | |
| | | 0 |
| | | END |
| | | |
| | | IDD_DIALOG_SYS_SETTING_SIGNAL AFX_DIALOG_LAYOUT |
| | | BEGIN |
| | | 0 |
| | | END |
| | | |
| | | |
| | | ///////////////////////////////////////////////////////////////////////////// |
| | | // |
| | |
| | | |
| | | // ReviewSystemSettingDlg.cpp : 구í íì¼ |
| | | // ReviewSystemSettingDlg.cpp : ���� ���� |
| | | // |
| | | |
| | | #include "stdafx.h" |
| | |
| | | #endif |
| | | |
| | | |
| | | // ìì© íë¡ê·¸ë¨ ì ë³´ì ì¬ì©ëë 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() |
| | | |
| | | |
| | | // CReviewSystemSettingDlg ëí ìì |
| | | // CReviewSystemSettingDlg ï¿½ï¿½È ï¿½ï¿½ï¿½ï¿½ |
| | | |
| | | |
| | | |
| | |
| | | m_pNetworkManager = NULL; |
| | | |
| | | // init Log |
| | | new CDisplayMessage(_T("C:\\DIT_Review\\ReviewServerConfig\\Log")); |
| | | //new CDisplayMessage(_T("C:\\DIT_Review\\ReviewServerConfig\\Log")); |
| | | new CDisplayMessage(_T("D:\\DIT_Review\\ReviewServerConfig\\Log"));//210805 |
| | | } |
| | | |
| | | CReviewSystemSettingDlg::~CReviewSystemSettingDlg() |
| | |
| | | END_MESSAGE_MAP() |
| | | |
| | | |
| | | // CReviewSystemSettingDlg ë©ìì§ ì²ë¦¬ê¸° |
| | | // CReviewSystemSettingDlg �޽��� ó���� |
| | | |
| | | BOOL CReviewSystemSettingDlg::OnInitDialog() |
| | | { |
| | | CDialog::OnInitDialog(); |
| | | |
| | | // ìì¤í
ë©ë´ì "ì ë³´..." ë©ë´ í목ì ì¶ê°í©ëë¤. |
| | | // �ý��� �޴��� "����..." �޴� �׸��� �߰��մϴ�. |
| | | |
| | | // 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); // ���� �������� �����մϴ�. |
| | | |
| | | // TODO: ì¬ê¸°ì ì¶ê° ì´ê¸°í ìì
ì ì¶ê°í©ëë¤. |
| | | // TODO: ���⿡ �߰� ï¿½Ê±ï¿½È ï¿½Û¾ï¿½ï¿½ï¿½ �߰��մϴ�. |
| | | CreateReviewDirectory(); |
| | | CreateManager(); |
| | | ReadReviewSystemConfigFile(); |
| | |
| | | |
| | | g_pLog->DisplayMessage(_T("SystemSetting is Started!")); |
| | | |
| | | return TRUE; // í¬ì»¤ì¤ë¥¼ 컨í¸ë¡¤ì ì¤ì íì§ ìì¼ë©´ TRUE를 ë°íí©ëë¤. |
| | | return TRUE; // ��Ŀ���� ��Ʈ�ѿ� �������� ������ TRUE�� ��ȯ�մϴ�. |
| | | } |
| | | |
| | | void CReviewSystemSettingDlg::OnSysCommand(UINT nID, LPARAM lParam) |
| | |
| | | } |
| | | } |
| | | |
| | | // ëí ììì ìµìí ë¨ì¶ë¥¼ ì¶ê°í ê²½ì° ìì´ì½ì ê·¸ë¦¬ë ¤ë©´ |
| | | // ìë ì½ëê° íìí©ëë¤. 문ì/ë·° 모ë¸ì ì¬ì©íë MFC ìì© íë¡ê·¸ë¨ì ê²½ì°ìë |
| | | // íë ììí¬ìì ì´ ìì
ì ìëì¼ë¡ ìíí©ëë¤. |
| | | // ï¿½ï¿½È ï¿½ï¿½ï¿½Ú¿ï¿½ ï¿½Ö¼ï¿½È ï¿½ï¿½ï¿½ß¸ï¿½ �߰��� ��� �������� �׸����� |
| | | // �Ʒ� �ڵ尡 �ʿ��մϴ�. ����/�� ���� ����ϴ� MFC ���� ���α׷��� ��쿡�� |
| | | // �����ӿ�ũ���� �� �۾��� �ڵ����� �����մϴ�. |
| | | |
| | | void CReviewSystemSettingDlg::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 CReviewSystemSettingDlg::OnQueryDragIcon() |
| | | { |
| | | return static_cast<HCURSOR>(m_hIcon); |
| | |
| | | |
| | | void CReviewSystemSettingDlg::OnTcnSelchangeTabSysSettingMainTab(NMHDR *pNMHDR, LRESULT *pResult) |
| | | { |
| | | // TODO: ì¬ê¸°ì 컨í¸ë¡¤ ì림 ì²ë¦¬ê¸° ì½ë를 ì¶ê°í©ëë¤. |
| | | // TODO: ���⿡ ��Ʈ�� �˸� ó���� �ڵ带 �߰��մϴ�. |
| | | SystemMainTab nTabIdx; |
| | | |
| | | nTabIdx = (SystemMainTab)m_ctrlTabMain.GetCurSel(); |
| | |
| | | void CReviewSystemSettingDlg::InitTabControl() |
| | | { |
| | | int nIdx = 0; |
| | | m_ctrlTabMain.InsertItem(nIdx++, _T("Equipment Setting"));//_T("ì¥ë¹ ì¤ì ")); |
| | | m_ctrlTabMain.InsertItem(nIdx++, _T("Glass Type Setting"));//_T("ê¸ë¼ì¤ íì
ì¤ì ")); |
| | | m_ctrlTabMain.InsertItem(nIdx++, _T("Align Setting"));//_T("ì¼ë¼ì¸ ì¤ì ")); |
| | | m_ctrlTabMain.InsertItem(nIdx++, _T("Signal Setting"));//_T("Signal ì¤ì ")); |
| | | m_ctrlTabMain.InsertItem(nIdx++, _T("Motor Setting"));//_T("ëª¨í° ì¤ì ")); |
| | | m_ctrlTabMain.InsertItem(nIdx++, _T("Network Setting"));//_T("ë¤í¸ìí¬ ì¤ì ")); |
| | | m_ctrlTabMain.InsertItem(nIdx++, _T("Equipment Setting"));//_T("��� ����")); |
| | | m_ctrlTabMain.InsertItem(nIdx++, _T("Glass Type Setting"));//_T("�۶� Ÿ�� ����")); |
| | | m_ctrlTabMain.InsertItem(nIdx++, _T("Align Setting"));//_T("����� ����")); |
| | | m_ctrlTabMain.InsertItem(nIdx++, _T("Signal Setting"));//_T("Signal ����")); |
| | | m_ctrlTabMain.InsertItem(nIdx++, _T("Motor Setting"));//_T("���� ����")); |
| | | m_ctrlTabMain.InsertItem(nIdx++, _T("Network Setting"));//_T("��Ʈ��ũ ����")); |
| | | } |
| | | |
| | | BOOL CReviewSystemSettingDlg::ReadReviewSystemConfigFile() |
| | |
| | | strBackupFile = strBackupPath + strBackupFile; |
| | | CopyFile(_REVIEW_SERVER_SYSTEM_SETTING_FILE_PATH_, strBackupFile, TRUE); |
| | | |
| | | //LYW_#3344_CF AOI Review Config File ë°±ì
ê¸°ë¥ ê°ì ADD START |
| | | //LYW_#3344_CF AOI Review Config File ��� ��� ���� ADD START |
| | | strBackupPath = _REVIEW_SERVER_SYSTEM_SETTING_BACKUP_PATH_CPJT; |
| | | CreateDirectory(strBackupPath, NULL); |
| | | |
| | |
| | | strBackupFile.Format(_T("%s\\SystemSetting.cfg"), strBackupPath); |
| | | |
| | | CopyFile(_REVIEW_SERVER_SYSTEM_SETTING_FILE_PATH_, strBackupFile, FALSE); |
| | | //LYW_#3344_CF AOI Review Config File ë°±ì
ê¸°ë¥ ê°ì ADD END |
| | | //LYW_#3344_CF AOI Review Config File ��� ��� ���� ADD END |
| | | |
| | | if (IDNO == AfxMessageBox(_T("Save complete. Do you want to close System Setting program?"), MB_YESNO | MB_ICONQUESTION))//_T("ì ì¥ ìë£ëììµëë¤. ìì¤í
ì¤ì íë¡ê·¸ë¨ì ì¢
ë£íìê² ìµëê¹?"), MB_YESNO | MB_ICONQUESTION)) |
| | | if (IDNO == AfxMessageBox(_T("Save complete. Do you want to close System Setting program?"), MB_YESNO | MB_ICONQUESTION))//_T("���� �Ϸ�Ǿ����ϴ�. �ý��� ���� ���α׷��� �����Ͻðڽ��ϱ�?"), MB_YESNO | MB_ICONQUESTION)) |
| | | { |
| | | return; |
| | | } |
| | |
| | | } |
| | | else |
| | | { |
| | | AfxMessageBox(_T("Save Fail!"));//_T("ì ì¥ ì¤í¨íììµëë¤.")); |
| | | AfxMessageBox(_T("Save Fail!"));//_T("���� �����Ͽ����ϴ�.")); |
| | | } |
| | | } |
| | | |
| | | void CReviewSystemSettingDlg::OnBnClickedCancel() |
| | | { |
| | | // TODO: ì¬ê¸°ì 컨í¸ë¡¤ ì림 ì²ë¦¬ê¸° ì½ë를 ì¶ê°í©ëë¤. |
| | | if (IDNO == AfxMessageBox(_T("Do you want to close System Setting program?"), MB_YESNO | MB_ICONQUESTION))//_T("ìì¤í
ì¤ì íë¡ê·¸ë¨ì ì¢
ë£íìê² ìµëê¹?"), MB_YESNO | MB_ICONQUESTION)) |
| | | // TODO: ���⿡ ��Ʈ�� �˸� ó���� �ڵ带 �߰��մϴ�. |
| | | if (IDNO == AfxMessageBox(_T("Do you want to close System Setting program?"), MB_YESNO | MB_ICONQUESTION))//_T("�ý��� ���� ���α׷��� �����Ͻðڽ��ϱ�?"), MB_YESNO | MB_ICONQUESTION)) |
| | | { |
| | | return; |
| | | } |
| | |
| | | |
| | | BOOL CReviewSystemSettingDlg::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct) |
| | | { |
| | | // TODO: ì¬ê¸°ì ë©ìì§ ì²ë¦¬ê¸° ì½ë를 ì¶ê° ë°/ëë 기본ê°ì í¸ì¶í©ëë¤. |
| | | // TODO: ���⿡ �޽��� ó���� �ڵ带 �߰� ��/�Ǵ� �⺻���� ȣ���մϴ�. |
| | | if (pCopyDataStruct->dwData == COPYDATA_SYSTEMSETTING2REVIEWSYSTEM) |
| | | { |
| | | COPYDATA_SYSTEM2REV* pCopyData = (COPYDATA_SYSTEM2REV*)pCopyDataStruct->lpData; |
| | |
| | | //{{NO_DEPENDENCIES}} |
| | | // Microsoft Visual C++ generated include file. |
| | | // Used by ReviewSystemSetting.rc |
| | | // Microsoft Visual C++ìì ìì±í í¬í¨ íì¼ì
ëë¤. |
| | | // ReviewSystemSetting.rcìì ì¬ì©ëê³ ììµëë¤. |
| | | // |
| | | #define IDM_ABOUTBOX 0x0010 |
| | | #define IDD_ABOUTBOX 100 |
| | |
| | | #define IDC_EDIT_SYS_MOTOR_START_POINT_XPOS 1089 |
| | | #define IDC_EDIT_START_POINT_YPOS 1090 |
| | | #define IDC_EDIT_SYS_MOTOR_START_POINT_YPOS 1090 |
| | | #define IDC_EDIT_DEFOCUSVALUE_MIN 1092 |
| | | #define IDC_EDIT_DEFOCUSVALUE_MAX 1093 |
| | | |
| | | // Next default values for new objects |
| | | // |
| | | #ifdef APSTUDIO_INVOKED |
| | | #ifndef APSTUDIO_READONLY_SYMBOLS |
| | | #define _APS_NEXT_RESOURCE_VALUE 144 |
| | | #define _APS_NEXT_RESOURCE_VALUE 145 |
| | | #define _APS_NEXT_COMMAND_VALUE 32771 |
| | | #define _APS_NEXT_CONTROL_VALUE 1092 |
| | | #define _APS_NEXT_CONTROL_VALUE 1094 |
| | | #define _APS_NEXT_SYMED_VALUE 107 |
| | | #endif |
| | | #endif |
| | |
| | | |
| | | // stdafx.h : ì주 ì¬ì©íì§ë§ ì주 ë³ê²½ëì§ë ìë |
| | | // íì¤ ìì¤í
í¬í¨ íì¼ ë° íë¡ì í¸ ê´ë ¨ í¬í¨ íì¼ì´ |
| | | // ë¤ì´ ìë í¬í¨ íì¼ì
ëë¤. |
| | | // stdafx.h : ���� ��������� ���� ��������� �ʴ� |
| | | // ǥ�� �ý��� ���� ���� �� ������Ʈ ���� ���� ������ |
| | | // ��� �ִ� ���� �����Դϴ�. |
| | | |
| | | #pragma once |
| | | |
| | |
| | | #endif |
| | | |
| | | #ifndef VC_EXTRALEAN |
| | | #define VC_EXTRALEAN // ê±°ì ì¬ì©ëì§ ìë ë´ì©ì Windows í¤ëìì ì ì¸í©ëë¤. |
| | | #define VC_EXTRALEAN // ���� ������ �ʴ� ������ Windows ������� �����մϴ�. |
| | | #endif |
| | | |
| | | #include "targetver.h" |
| | | |
| | | #define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // ì¼ë¶ CString ìì±ìë ëª
ìì ì¼ë¡ ì ì¸ë©ëë¤. |
| | | #define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // �Ϻ� CString �����ڴ� ��������� ����˴ϴ�. |
| | | |
| | | // MFCì ê³µíµ ë¶ë¶ê³¼ 무ì ê°ë¥í ê²½ê³ ë©ìì§ì ëí ì¨ê¸°ê¸°ë¥¼ í´ì í©ëë¤. |
| | | // MFC�� ���� �κа� ���� ������ ��� �޽����� ���� ����⸦ �����մϴ�. |
| | | #define _AFX_ALL_WARNINGS |
| | | |
| | | #include <afxwin.h> // MFC íµì¬ ë° íì¤ êµ¬ì± ììì
ëë¤. |
| | | #include <afxext.h> // MFC íì¥ì
ëë¤. |
| | | #include <afxwin.h> // MFC �ٽ� �� ǥ�� ���� ����Դϴ�. |
| | | #include <afxext.h> // MFC Ȯ���Դϴ�. |
| | | |
| | | |
| | | #include <afxdisp.h> // MFC ìëí í´ëì¤ì
ëë¤. |
| | | #include <afxdisp.h> // MFC ï¿½Úµï¿½È Å¬ï¿½ï¿½ï¿½ï¿½ï¿½Ô´Ï´ï¿½. |
| | | |
| | | |
| | | |
| | | #ifndef _AFX_NO_OLE_SUPPORT |
| | | #include <afxdtctl.h> // Internet Explorer 4 ê³µì© ì»¨í¸ë¡¤ì ëí MFC ì§ìì
ëë¤. |
| | | #include <afxdtctl.h> // Internet Explorer 4 ���� ��Ʈ�ѿ� ���� MFC �����Դϴ�. |
| | | #endif |
| | | #ifndef _AFX_NO_AFXCMN_SUPPORT |
| | | #include <afxcmn.h> // Windows ê³µì© ì»¨í¸ë¡¤ì ëí MFC ì§ìì
ëë¤. |
| | | #include <afxcmn.h> // Windows ���� ��Ʈ�ѿ� ���� MFC �����Դϴ�. |
| | | #endif // _AFX_NO_AFXCMN_SUPPORT |
| | | |
| | | #include <afxcontrolbars.h> // MFCì 리본 ë° ì»¨í¸ë¡¤ ë§ë ì§ì |
| | | #include <afxcontrolbars.h> // MFC�� ���� �� ��Ʈ�� ���� ���� |
| | | |
| | | #define _REVIEW_SERVER_BASE_PATH_ _T("C:\\DIT_Review") |
| | | #define _REVIEW_SERVER_CONFIG_PATH_ _T("C:\\DIT_Review\\ReviewServerConfig") |
| | | #define _REVIEW_SERVER_SYSTEM_SETTING_FILE_PATH_ _T("C:\\DIT_Review\\ReviewServerConfig\\SystemSetting.cfg") |
| | | #define _REVIEW_SERVER_SYSTEM_PASSWORD_FILE_PATH_ _T("C:\\DIT_Review\\ReviewServerConfig\\SystemSetting.dat") |
| | | #define _REVIEW_SERVER_BASE_PATH_ _T("D:\\DIT_Review") //210805 |
| | | #define _REVIEW_SERVER_CONFIG_PATH_ _T("D:\\DIT_Review\\ReviewServerConfig") |
| | | #define _REVIEW_SERVER_SYSTEM_SETTING_FILE_PATH_ _T("D:\\DIT_Review\\ReviewServerConfig\\SystemSetting.cfg") |
| | | #define _REVIEW_SERVER_SYSTEM_PASSWORD_FILE_PATH_ _T("D:\\DIT_Review\\ReviewServerConfig\\SystemSetting.dat") |
| | | |
| | | //#define _REVIEW_SERVER_BASE_PATH_ _T("C:\\DIT_Review") |
| | | //#define _REVIEW_SERVER_CONFIG_PATH_ _T("C:\\DIT_Review\\ReviewServerConfig") |
| | | //#define _REVIEW_SERVER_SYSTEM_SETTING_FILE_PATH_ _T("C:\\DIT_Review\\ReviewServerConfig\\SystemSetting.cfg") |
| | | //#define _REVIEW_SERVER_SYSTEM_PASSWORD_FILE_PATH_ _T("C:\\DIT_Review\\ReviewServerConfig\\SystemSetting.dat") |
| | | #define _REVIEW_RECIPE_BACKUP_PATH_CPJT _T("\\\\126.100.100.5\\d\\DIT Back up\\DIT Review\\Recipe") |
| | | #define _REVIEW_SERVER_SYSTEM_SETTING_BACKUP_PATH_CPJT _T("\\\\126.100.100.5\\d\\DIT Back up\\DIT Review\\ReviewServerConfig") |
| | | #define _REVIEW_SYSTEM_TITLE_ _T("ReviewSystem") |
| | |
| | | MsgSystem2Rev_ChangeSysConfig, |
| | | MsgRev2System_ChangeSysConfig, |
| | | |
| | | // [2017:5:2]-[WEZASW] : TFE Measurement ì¤ë¹ UNIT Test(Signal ìë ë°ì)를 ìí ì¶ê° |
| | | // [2017:5:2]-[WEZASW] : TFE Measurement ���� UNIT Test(Signal ���� �߻�)�� ���� �߰� |
| | | MsgSystem2Rev_SendAlignAlarmSignal, |
| | | MsgRev2System_SendAlignAlarmSignal, |
| | | |
| | |
| | | #pragma once |
| | | |
| | | #define ALIGN_IMAGE_PATH _T("C:\\DIT_Review\\Recipe\\AlignImage") |
| | | #define REFLOW_IMAGE_PATH _T("C:\\DIT_Review\\Recipe\\Reflow") |
| | | |
| | | #define ALIGN_IMAGE_PATH _T("D:\\DIT_Review\\Recipe\\AlignImage") //210805 |
| | | #define REFLOW_IMAGE_PATH _T("D:\\DIT_Review\\Recipe\\Reflow") |
| | | |
| | | //#define ALIGN_IMAGE_PATH _T("C:\\DIT_Review\\Recipe\\AlignImage") |
| | | //#define REFLOW_IMAGE_PATH _T("C:\\DIT_Review\\Recipe\\Reflow") |
| | | |
| | | class AFX_EXT_CLASS CRsRcpAlignInfo |
| | | { |
| | |
| | | int GetMSReviewStartSignalDelay() const { return m_pMsSignalDelayTime[SignalDelayIndex_ReviewStart]; } |
| | | int GetMSReviewEndSignalDelay() const { return m_pMsSignalDelayTime[SignalDelayIndex_ReviewEnd]; } |
| | | int GetMSUnloadingSignalDelay() const { return m_pMsSignalDelayTime[SignalDelayIndex_Unloading]; } |
| | | int GetDefocusValueMin()const { return m_nDefocusValueMin; } |
| | | int GetDefocusValueMax()const { return m_nDefocusValueMax; } |
| | | |
| | | BOOL GetUseContinuousReadAddress() const { return m_bUseContinuousReadAddr; } |
| | | BOOL GetUseContinuousSendAddress() const { return m_bUseContinuousSendAddr; } |
| | |
| | | void SetMSTotalTime(int nTime) { m_nMSTotalTime = nTime; } |
| | | void SetUseContinuousReadAddress(BOOL bUse) { m_bUseContinuousReadAddr = bUse; } |
| | | void SetUseContinuousSendAddress(BOOL bUse) { m_bUseContinuousSendAddr = bUse; } |
| | | void SetDefocusValueMin(int nValue) { m_nDefocusValueMin = nValue; } |
| | | void SetDefocusValueMax(int nValue) { m_nDefocusValueMax = nValue; } |
| | | |
| | | |
| | | void SetReadSignalAddressCount(int nCnt) { m_vecReadSigAddr.resize(nCnt); } |
| | |
| | | int m_nMSTimerTime; |
| | | int m_nMSTotalTime; |
| | | int m_pMsSignalDelayTime[SignalDelayIndex_Count]; |
| | | int m_nDefocusValueMin; |
| | | int m_nDefocusValueMax; |
| | | |
| | | BOOL m_bUseContinuousReadAddr; |
| | | BOOL m_bUseContinuousSendAddr; |
| | |
| | | #include <vector> |
| | | |
| | | // path define |
| | | #define REVIEW_AUTO_DIAGNOSIS_SETTING_FILE_PATH _T("C:\\DIT_Review\\DiagnosisConfig") |
| | | #define REVIEW_AUTO_DIAGNOSIS_SETTING_FILE_PATH _T("D:\\DIT_Review\\DiagnosisConfig") //210805 |
| | | //#define REVIEW_AUTO_DIAGNOSIS_SETTING_FILE_PATH _T("C:\\DIT_Review\\DiagnosisConfig") |
| | | #define REVIEW_AUTO_DIAGNOSIS_SETTING_FILE_NAME _T("AutoDiagnosisSetting.cfg") |
| | | #define REVIEW_AUTO_DIAGNOSIS_DATA_FILE_PATH _T("D:\\ResultData\\AutoDiagnosis") |
| | | #define REVIEW_AUTO_DIAGNOSIS_DATA_IMAGE_FILE_PATH _T("D:\\ResultData\\AutoDiagnosis\\ResultImage") |
| | |
| | | |
| | | enum DiagnosisMode { |
| | | DiagnosisMode_All = 0, |
| | | DiagnosisMode_Squareness, |
| | | DiagnosisMode_Review, |
| | | DiagnosisMode_Wsi, |
| | | DiagnosisMode_Squareness, |
| | | DiagnosisMode_Flatness, |
| | | DiagnosisMode_Flatness_Manual, |
| | | DiagnosisMode_Simulation |
| | |
| | | virtual void IDP2P_WsiMotorMotionEnd(int nModuleIdx, double dPosX, double dPosY) = 0; |
| | | |
| | | virtual BOOL IDP2P_DiagnosisSendCompleteSig()=0; |
| | | virtual BOOL IDP2P_DiagnosisSendJudgeAlarm() = 0; //0412 AU°¡Aø´U ½AEï¿¡ Að¡ |
| | | virtual BOOL IDP2P_DiagnosisSendJudgeAlarm() = 0; //0412 AU�Ƣ�A����U ��AE�� A���Ƣ� |
| | | |
| | | // Dialog |
| | | 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: |