| | |
| | | // // 그림을 Picture Control 크기로 화면에 출력한다. |
| | | // m_ReviewImage.Draw(dc, m_picture_rect); |
| | | // } |
| | | if (!m_DefectImage.IsNull()) |
| | | //LYW 20210825 #3486 ADD START |
| | | if (!m_DefectRotateImage.IsNull()) |
| | | { |
| | | dc.SetStretchBltMode(COLORONCOLOR); |
| | | // 그림을 Picture Control 크기로 화면에 출력한다. |
| | | m_DefectRotateImage.Draw(dc, m_picture_rect2); |
| | | } |
| | | //LYW 20210825 #3486 ADD END |
| | | else if (!m_DefectImage.IsNull()) |
| | | { |
| | | dc.SetStretchBltMode(COLORONCOLOR); |
| | | // 그림을 Picture Control 크기로 화면에 출력한다. |
| | |
| | | |
| | | m_DefectImage.Destroy(); |
| | | m_ReviewImage.Destroy(); |
| | | //LYW 20210825 #3486 ADD START |
| | | m_DefectRotateImage.Destroy(); |
| | | //LYW 20210825 #3486 ADD END |
| | | |
| | | m_AlignFirst.Destroy(); |
| | | m_AlignSecend.Destroy(); |
| | |
| | | DeftectPath.Format(_T("%s\\%s\\%s"), strReviewPath, strReviewImagePath, strReviewImageName); |
| | | //DeftectPath2.Format(_T("%s\\%s"), strInspectorPath, strInspectorName); |
| | | if (strInspectorName == "*" || strInspectorName == "**" || strInspectorName == "***") strInspectorName = ""; |
| | | DeftectPath2.Format(_T("%s\\%s\\%s"), strInspectorPath, pImageInfo->m_strGlassID, strReviewImageName); |
| | | DeftectPath2.Format(_T("%s\\%s\\%s"), strInspectorPath, pImageInfo->m_strGlassID, strInspectorName); |
| | | |
| | | AlignPath.Format(_T("%s\\%s\\%s"), strAlignPath, pImageInfo->m_strGlassID, strAlignName); |
| | | AlignPath2.Format(_T("%s\\%s\\%s"), strAlignPath, pImageInfo->m_strGlassID, strAlignName2); |
| | |
| | | if (CFile::GetStatus(DeftectPath2, FileOn) && strInspectorName != "") //파일이 있을 때 |
| | | { |
| | | m_DefectImage.Load(DeftectPath2); |
| | | //LYW 20210825 #3486 ADD START |
| | | m_DefectRotateImage.Create(m_DefectImage.GetWidth(), m_DefectImage.GetHeight(), m_DefectImage.GetBPP(), 0); |
| | | ImageRotate(m_DefectImage, m_DefectRotateImage); |
| | | //LYW 20210825 #3486 ADD END |
| | | HBITMAP hBmp = (HBITMAP)::LoadImage(AfxGetInstanceHandle(), DeftectPath2, |
| | | IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION); |
| | | |
| | | |
| | | InvalidateRect(m_picture_rect2, FALSE); |
| | | dc.SetStretchBltMode(COLORONCOLOR); |
| | | m_DefectImage.Draw(dc, m_picture_rect2); |
| | | //LYW 20210825 #3486 MOD START |
| | | m_DefectRotateImage.Draw(dc, m_picture_rect2); |
| | | //LYW 20210825 #3486 MOD END |
| | | //original |
| | | //m_DefectImage.Draw(dc, m_picture_rect2); |
| | | } |
| | | else |
| | | { |
| | |
| | | |
| | | // m_ReviewImage.Destroy(); |
| | | m_DefectImage.Destroy(); |
| | | //LYW 20210825 #3486 ADD START |
| | | m_DefectRotateImage.Destroy(); |
| | | //LYW 20210825 #3486 ADD END |
| | | m_AlignFirst.Destroy(); |
| | | m_AlignSecend.Destroy(); |
| | | |
| | |
| | | m_AlignSecend.Draw(dc, m_Align_rect2); |
| | | } |
| | | |
| | | //LYW 20210825 #3486 ADD START |
| | | void CReveiwHistoryDlg::ImageRotate(CImage & SrcImage, CImage & DstImage, double degree/* = 180.0 */) |
| | | { |
| | | int Height = SrcImage.GetHeight(); // 세로 길이 저장 |
| | | int Width = SrcImage.GetWidth(); // 가로 길이 저장 |
| | | int new_x, new_y; |
| | | int R, G, B; |
| | | int center_x = (SrcImage.GetWidth() / 2); // 회전 중심점 |
| | | int center_y = (SrcImage.GetHeight() / 2); // 회전 중심점 |
| | | |
| | | double seta = 3.14 / (180.0 / degree); // 라디안 |
| | | double CosSeta = cos(seta); |
| | | double SinSeta = sin(seta); |
| | | |
| | | for (int y = 0; y < Height; y++) |
| | | { |
| | | for (int x = 0; x < Width; x++) |
| | | { |
| | | new_x = (int)((x - center_x) * CosSeta - (y - center_y) * SinSeta + center_x); |
| | | new_y = (int)((x - center_x) * SinSeta + (y - center_y) * CosSeta + center_y); |
| | | |
| | | if ((new_x < 0) || (new_x > Width) || (new_y < 0) || (new_y > Height)) |
| | | //이미지 범위를 벗어나면 0 값 |
| | | { |
| | | R = 0; |
| | | G = 0; |
| | | B = 0; |
| | | } |
| | | else |
| | | { |
| | | R = GetRValue(SrcImage.GetPixel(new_x, new_y)); |
| | | G = GetGValue(SrcImage.GetPixel(new_x, new_y)); |
| | | B = GetBValue(SrcImage.GetPixel(new_x, new_y)); |
| | | } |
| | | DstImage.SetPixel((int)x, (int)y, RGB(R, G, B)); |
| | | new_x = 0; new_y = 0; |
| | | } |
| | | } |
| | | |
| | | } |
| | | //LYW 20210825 #3486 ADD END |
| | | |
| | | void CReveiwHistoryDlg::OnChangeEditFileCount() |
| | | { |
| | | // TODO: RICHEDIT 컨트롤인 경우, 이 컨트롤은 |
| | |
| | | std::vector<_akDefect> m_vectest; |
| | | |
| | | CImage m_DefectImage; |
| | | //LYW 20210825 #3486 ADD START |
| | | CImage m_DefectRotateImage; |
| | | //LYW 20210825 #3486 ADD END |
| | | CImage m_ReviewImage; |
| | | |
| | | CRect m_picture_rect; |
| | |
| | | |
| | | void Imagenoload(); |
| | | |
| | | //LYW 20210825 #3486 ADD START |
| | | void ImageRotate(CImage& SrcImage, CImage& DstImage, double degree = 180.0); |
| | | //LYW 20210825 #3486 ADD END |
| | | |
| | | BOOL GetCheckFileLoad(int nCount); |
| | | |
| | | void GlassInfoRest(); |
| | |
| | | |
| | | //FDC보고용 Review Contrast |
| | | //#3524_210723_LYW_CF AOI Review 디포커스 알람 추가 및 FDC 보고 방식 개선 MOD Start |
| | | nReview00ImageContrast = 50; |
| | | nReview01ImageContrast = 50; |
| | | nReview00ImageContrast = 5; |
| | | nReview01ImageContrast = 5; |
| | | //#3524_210723_LYW_CF AOI Review 디포커스 알람 추가 및 FDC 보고 방식 개선 MOD End |
| | | |
| | | // defect result |
| | |
| | | |
| | | //FDC보고용 Review Contrast |
| | | //#3524_210723_LYW_CF AOI Review 디포커스 알람 추가 및 FDC 보고 방식 개선 MOD Start |
| | | nReview00ImageContrast = 50; |
| | | nReview01ImageContrast = 50; |
| | | nReview00ImageContrast = 5; |
| | | nReview01ImageContrast = 5; |
| | | //#3524_210723_LYW_CF AOI Review 디포커스 알람 추가 및 FDC 보고 방식 개선 MOD End |
| | | //// defect result |
| | | //for (MapDefectResultIt it = m_mapDefectResult.begin(); it != m_mapDefectResult.end(); it++) |
| | |
| | | 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 |
| | | /*< LYW 20210719 : #3517 ADD 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 |
| | | /*< LYW 20210719 : #3517 ADD 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); |
| | |
| | | m_pManager->m_bProcessAll = true; |
| | | ProcessAll(); |
| | | break; |
| | | //#3514_LYW_CF AOI Review 자가진단 기능 개선_START |
| | | /*< LYW 20210719 : #3517 ADD Start >*/ |
| | | case DiagnosisMode_Review : |
| | | strMessage.Format(_T("[CDiagnosisProcessor] DiagnosisMode_Review START")); |
| | | m_pDP2P->IDP2P_DisplayMessage(0, strMessage); |
| | |
| | | m_pDP2P->IDP2P_DisplayMessage(0, strMessage); |
| | | } |
| | | break; |
| | | //#3514_LYW_CF AOI Review 자가진단 기능 개선_END |
| | | /*< LYW 20210719 : #3517 ADD End >*/ |
| | | case DiagnosisMode_Flatness: |
| | | m_pManager->m_bProcessAll = false; |
| | | ProcessFlatness(); |
| | |
| | | m_pDP2P->IDP2P_SetDialogTap(1); |
| | | ProcessFlatness(); |
| | | |
| | | //#3514_LYW_CF AOI Review 자가진단 기능 개선_START |
| | | /*< LYW 20210719 : #3517 ADD Start >*/ |
| | | //Sleep(2000); |
| | | Sleep(1000); |
| | | |
| | |
| | | strMessage.Format(_T("[CDiagnosisProcessor] DiagnosisJudge FAIL")); |
| | | m_pDP2P->IDP2P_DisplayMessage(0, strMessage); |
| | | } |
| | | //#3514_LYW_CF AOI Review 자가진단 기능 개선_START |
| | | /*< LYW 20210719 : #3517 ADD Start >*/ |
| | | |
| | | m_pManager->m_bProcessAll = false; |
| | | |
| | |
| | | int stTime = GetTickCount(); |
| | | while (1) |
| | | { |
| | | //#3514_LYW_CF AOI Review 자가진단 기능 개선_START |
| | | /*< LYW 20210719 : #3517 ADD Start >*/ |
| | | //if (11000 <= GetTickCount() - stTime) |
| | | //#3514_LYW_CF AOI Review 자가진단 기능 개선_END |
| | | if (1000 <= GetTickCount() - stTime) |
| | | /*< LYW 20210719 : #3517 ADD End >*/ |
| | | if (1500 <= GetTickCount() - stTime) |
| | | { |
| | | break; |
| | | } |
| | |
| | | |
| | | } |
| | | m_pDP2P->IDP2P_SetAFMTracking(nSelModuleIndex, TRUE); |
| | | //#3514_LYW_CF AOI Review 자가진단 기능 개선_START |
| | | /*< LYW 20210719 : #3517 ADD Start >*/ |
| | | //Sleep(1000); |
| | | Sleep(500); |
| | | //#3514_LYW_CF AOI Review 자가진단 기능 개선_END |
| | | Sleep(1000); |
| | | /*< LYW 20210719 : #3517 ADD End >*/ |
| | | |
| | | CString strimagename; |
| | | strimagename.Format(_T("%s_Module[%d]Index[%d].bmp"), m_pManager->m_strResultImageFileName, nSelModuleIndex, nIdx); |
| | |
| | | } |
| | | m_pDP2P->IDP2P_SetWsiManualMeasure(nSelModuleIndex, dXpos, dYpos); |
| | | // move panel |
| | | //#3514_LYW_CF AOI Review 자가진단 기능 개선_START |
| | | /*< LYW 20210719 : #3517 ADD Start >*/ |
| | | //Sleep(2000); |
| | | Sleep(1000); |
| | | //#3514_LYW_CF AOI Review 자가진단 기능 개선_END |
| | | /*< LYW 20210719 : #3517 ADD End >*/ |
| | | m_pDP2P->IDP2P_MotorGo(nSelModuleIndex, dXpos, dYpos); |
| | | |
| | | if (m_pDP2P->IDP2P_IsGantryMotionEnd(nSelModuleIndex) == FALSE) |
| | |
| | | int stTime = GetTickCount(); |
| | | while (1) |
| | | { |
| | | //#3514_LYW_CF AOI Review 자가진단 기능 개선_START |
| | | /*< LYW 20210719 : #3517 ADD Start >*/ |
| | | //if (10000 <= GetTickCount() - stTime) |
| | | if (11000 <= GetTickCount() - stTime) |
| | | //#3514_LYW_CF AOI Review 자가진단 기능 개선_END |
| | | /*< LYW 20210719 : #3517 ADD End >*/ |
| | | { |
| | | break; |
| | | } |
| | |
| | | |
| | | CDiagnosisInfo * pSettingInfo = m_pManager->GetDiagnosisInfo(); |
| | | if (pSettingInfo == NULL) return 0; |
| | | //#3514_LYW_CF AOI Review 자가진단 기능 개선_START |
| | | /*< LYW 20210719 : #3517 ADD Start >*/ |
| | | if (pSettingInfo->GetFlastnessSkipMode() == TRUE) { |
| | | strMessage.Format(_T("[CDiagnosisProcessor] FlastnessSkipMode!")); |
| | | m_pDP2P->IDP2P_DisplayMessage(0, strMessage); |
| | | return 0; |
| | | } |
| | | |
| | | //#3514_LYW_CF AOI Review 자가진단 기능 개선_END |
| | | /*< LYW 20210719 : #3517 ADD End >*/ |
| | | |
| | | int nSelModuleIndex = m_pDP2P->IDP2P_GetSelectedModuleIndex(); |
| | | int nFlatnessMode = pSettingInfo->GetFlatnessMode(); |
| | |
| | | { |
| | | // AF Home |
| | | m_pDP2P->IDP2P_AFMHomePosition(0); |
| | | //#3514_LYW_CF AOI Review 자가진단 기능 개선_START |
| | | /*< LYW 20210719 : #3517 ADD Start >*/ |
| | | //Sleep(5000); |
| | | Sleep(1000); |
| | | //#3514_LYW_CF AOI Review 자가진단 기능 개선_END |
| | | /*< LYW 20210719 : #3517 ADD End >*/ |
| | | m_pDP2P->IDP2P_SetAFMTracking(0, TRUE); |
| | | Sleep(500); |
| | | } |
| | |
| | | |
| | | 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; |
| | |
| | | |
| | | // 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 |
| | | |
| | | } |
| | | |
| | |
| | | |
| | | for (VectorCameraControlIt it=m_vecCameraControl.begin(); it!=m_vecCameraControl.end(); it++) |
| | | { |
| | | (*it)->SetTriggerMode(ModeInternal); |
| | | |
| | | int nSub = (*it)->Grab(); |
| | | //#3561 210908 LYW ADD Start |
| | | int nSub; |
| | | try |
| | | { |
| | | (*it)->SetTriggerMode(ModeInternal); |
| | | nSub = (*it)->Grab(); |
| | | } |
| | | catch (...) |
| | | { |
| | | nSub = FALSE; |
| | | } |
| | | //#3561 210908 LYW ADD End |
| | | |
| | | if (nSub==1) |
| | | g_pLog->DisplayMessage(_T("[CameraController]Camera_Grab Success![ModeInternal]")); |
| | |
| | | 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(); |
| | | }; |
| | |
| | | //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 |
| | |
| | | { |
| | | // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다. |
| | | |
| | | //#3514_LYW_CF AOI Review 자가진단 기능 개선_START |
| | | /*< LYW 20210719 : #3517 ADD Start >*/ |
| | | if (m_pDiagnosisManager->CheckManualMode() == FALSE) |
| | | { |
| | | CString strMessage; |
| | |
| | | return; |
| | | } |
| | | } |
| | | //#3514_LYW_CF AOI Review 자가진단 기능 개선_END |
| | | /*< LYW 20210719 : #3517 ADD End >*/ |
| | | |
| | | if (m_bState == FALSE) |
| | | { |
| | |
| | | |
| | | void CDlgSelfDiagnosis_Flatness::OnBnClickedButtonManual() |
| | | { |
| | | //#3514_LYW_CF AOI Review 자가진단 기능 개선_START |
| | | /*< LYW 20210719 : #3517 ADD Start >*/ |
| | | if (m_pDiagnosisManager->CheckManualMode() == FALSE) |
| | | { |
| | | CString strMessage; |
| | |
| | | return; |
| | | } |
| | | } |
| | | //#3514_LYW_CF AOI Review 자가진단 기능 개선_END |
| | | /*< LYW 20210719 : #3517 ADD 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 |
| | | /*< LYW 20210719 : #3517 ADD 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 |
| | | /*< LYW 20210719 : #3517 ADD 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 |
| | | /*< LYW 20210719 : #3517 ADD 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 |
| | | /*< LYW 20210719 : #3517 ADD End >*/ |
| | | |
| | | CDiagnosisInfo* pSettingInfo = m_pDiagnosisManager->GetDiagnosisInfo(); |
| | | if (pSettingInfo == NULL) |
| | |
| | | strTemp.Format("%f", pSettingInfo->GetJudgeData_Degree()); |
| | | m_editJudgeData_Degree.SetWindowTextA(strTemp); |
| | | |
| | | //#3514_LYW_CF AOI Review 자가진단 기능 개선_START |
| | | /*< LYW 20210719 : #3517 ADD 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 |
| | | /*< LYW 20210719 : #3517 ADD 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 |
| | | /*< LYW 20210719 : #3517 ADD Start >*/ |
| | | m_CheckFlatnessSkip.SetCheck(pSettingInfo->GetFlastnessSkipMode()); |
| | | //#3514_LYW_CF AOI Review 자가진단 기능 개선_END |
| | | /*< LYW 20210719 : #3517 ADD 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 |
| | | /*< LYW 20210719 : #3517 ADD Start >*/ |
| | | strTemp.Format("%f", pSettingInfo->GetWSIStandard()); |
| | | m_editWSIStandard.SetWindowTextA(strTemp); |
| | | //#3514_LYW_CF AOI Review 자가진단 기능 개선_END |
| | | /*< LYW 20210719 : #3517 ADD End >*/ |
| | | |
| | | strTemp.Format("%f", pSettingInfo->GetPanelPosX_Wsi()); |
| | | m_editPanelPosX.SetWindowTextA(strTemp); |
| | |
| | | nTemp = atoi(strTemp); |
| | | macroFile.SetItem(strItem, nTemp); |
| | | |
| | | //#3514_LYW_CF AOI Review 자가진단 기능 개선_START |
| | | /*< LYW 20210719 : #3517 ADD Start >*/ |
| | | strItem.Format(_T("FLATNESS_SKIPMODE")); |
| | | nTemp = m_CheckFlatnessSkip.GetCheck(); |
| | | macroFile.SetItem(strItem, nTemp); |
| | |
| | | dTemp = atof(strTemp); |
| | | macroFile.SetItem(strItem, dTemp); |
| | | |
| | | //#3514_LYW_CF AOI Review 자가진단 기능 개선_END |
| | | /*< LYW 20210719 : #3517 ADD End >*/ |
| | | |
| | | strItem.Format(_T("WSI_PANEL_COUNT")); |
| | | m_editPanelCount_Wsi.GetWindowTextA(strTemp); |
| | |
| | | |
| | | if (m_pDiagnosisManager == NULL) return; |
| | | |
| | | //#3514_LYW_CF AOI Review 자가진단 기능 개선_START |
| | | /*< LYW 20210719 : #3517 ADD Start >*/ |
| | | if (m_pDiagnosisManager->CheckManualMode() == FALSE) |
| | | { |
| | | CString strMessage; |
| | |
| | | return; |
| | | } |
| | | } |
| | | //#3514_LYW_CF AOI Review 자가진단 기능 개선_END |
| | | /*< LYW 20210719 : #3517 ADD End >*/ |
| | | |
| | | GetDialogControls(); |
| | | |
| | |
| | | |
| | | if (m_pDiagnosisManager == NULL) return; |
| | | |
| | | //#3514_LYW_CF AOI Review 자가진단 기능 개선_START |
| | | /*< LYW 20210719 : #3517 ADD Start >*/ |
| | | if (m_pDiagnosisManager->CheckManualMode() == FALSE) |
| | | { |
| | | CString strMessage; |
| | |
| | | return; |
| | | } |
| | | } |
| | | //#3514_LYW_CF AOI Review 자가진단 기능 개선_END |
| | | /*< LYW 20210719 : #3517 ADD End >*/ |
| | | |
| | | //GetDialogControls(); |
| | | |
| | |
| | | // |
| | | // 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; |
| | | } |
| | | } |
| | |
| | | #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); |
| | | ///////////////////////////////////// |
| | |
| | | SetCurrentWsiMode(nMode); |
| | | } |
| | | |
| | | void CReviewInterface::ISP2P_InitAlignCamera() |
| | | { |
| | | InitAlignCamera(); |
| | | } |
| | | |
| | | int CReviewInterface::IWC2P_GetWsiType() |
| | | { |
| | | return GetCurrentWsiMode(); |
| | |
| | | |
| | | virtual void ISP2P_SetCurrentWsiMode(int nMode); |
| | | |
| | | //#3561 210908 LYW ADD Start |
| | | virtual void ISP2P_InitAlignCamera(); |
| | | //#3561 210908 LYW ADD End |
| | | |
| | | virtual CTotalPitchMeasure* ISP2P_GetTotalPitchMeasure(); |
| | | |
| | | // recipe info |
| | |
| | | BYTE *pImageBufferByte = (BYTE*)(pImageBuffer); |
| | | if (pImageBuffer==NULL) return 0.; |
| | | |
| | | //#3524_210902_LYW_MOD START |
| | | int nWidth = nImageWidth; |
| | | //int nWidthStep = nImageWidth; |
| | | int nHeight = nImageHeight; |
| | | int nCalWidth = nWidth/2; |
| | | int nCalHeight = nHeight/2; |
| | | // int nCalWidth = nWidth/2; |
| | | // int nCalHeight = nHeight/2; |
| | | // |
| | | // int nStartX = nWidth/2 - nCalWidth/2; |
| | | // int nStartY = nHeight/2 - nCalHeight/2; |
| | | |
| | | int nStartX = nWidth/2 - nCalWidth/2; |
| | | int nStartY = nHeight/2 - nCalHeight/2; |
| | | int nCalWidth = nWidth; |
| | | int nCalHeight = nHeight; |
| | | |
| | | // |
| | | double Focusvalue = 0; |
| | | double SumValue = 0; |
| | | double TempValue = 0; |
| | | double m_nResultFocusValue = 0; |
| | | int nStartX = 0; |
| | | int nStartY = 0; |
| | | |
| | | for (int y = 0; y < nHeight - 1; y++) |
| | | int nStep = 3; |
| | | |
| | | double dXValue = 0., dYValue = 0., dCurr = 0., dSum = 0., dFocus = 0.; |
| | | for (int nH = nStartY; nH < nStartY + nCalHeight - nStep; nH++) |
| | | { |
| | | for (int x = 0; x < nWidth - 1; x++) |
| | | for (int nW = nStartX; nW < nStartX + nCalWidth - nStep; nW++) |
| | | { |
| | | TempValue = (double)(pImageBufferByte[y*nWidth + x] - pImageBufferByte[y*nWidth + x + 1]); |
| | | SumValue = TempValue * TempValue; |
| | | TempValue = (double)(pImageBufferByte[y*nWidth + x] - pImageBufferByte[(y + 1)*nWidth + x]); |
| | | SumValue += TempValue * TempValue; |
| | | |
| | | Focusvalue += sqrt(SumValue); |
| | | //Focusvalue += SumValue; |
| | | } |
| | | } |
| | | |
| | | m_nResultFocusValue = int(Focusvalue / (double)(nWidth*nHeight)); |
| | | |
| | | double dXValue=0., dYValue=0., dCurr=0., dSum=0., dFocus=0.; |
| | | for(int nH=nStartY ; nH<nStartY+nCalHeight-1 ; nH++) |
| | | { |
| | | for(int nW=nStartX ; nW<nStartX+nCalWidth-1 ; nW++) |
| | | { |
| | | dXValue = float((pImageBufferByte[nH*nW + nW+1] - pImageBufferByte[nH*nW + nW])*(pImageBufferByte[nH*nW + nW+1] - pImageBufferByte[nH*nW + nW])); |
| | | dYValue = float((pImageBufferByte[(nH+1)*nW + nW] - pImageBufferByte[nH*nW + nW])*(pImageBufferByte[(nH+1)*nW + nW] - pImageBufferByte[nH*nW + nW])); |
| | | dXValue = float((pImageBufferByte[nH*nWidth + nW + nStep] - pImageBufferByte[nH*nWidth + nW])*(pImageBufferByte[nH*nWidth + nW + nStep] - pImageBufferByte[nH*nWidth + nW])); |
| | | dYValue = float((pImageBufferByte[(nH + nStep)*nWidth + nW] - pImageBufferByte[nH*nWidth + nW])*(pImageBufferByte[(nH + nStep)*nWidth + nW] - pImageBufferByte[nH*nWidth + nW])); |
| | | dCurr = sqrt(dXValue + dYValue); |
| | | //break; |
| | | |
| | | dSum += dCurr; |
| | | } |
| | | } |
| | | dFocus = dSum/double(nCalWidth*nCalHeight); |
| | | dFocus = dSum / double(nCalWidth*nCalHeight); |
| | | |
| | | return dFocus; |
| | | //#3524_210902_LYW_MOD END |
| | | //Origin |
| | | // int nWidth = nImageWidth; |
| | | // int nHeight = nImageHeight; |
| | | // int nCalWidth = nWidth/2; |
| | | // int nCalHeight = nHeight/2; |
| | | // |
| | | // int nStartX = nWidth/2 - nCalWidth/2; |
| | | // int nStartY = nHeight/2 - nCalHeight/2; |
| | | // |
| | | // // |
| | | // double Focusvalue = 0; |
| | | // double SumValue = 0; |
| | | // double TempValue = 0; |
| | | // double m_nResultFocusValue = 0; |
| | | // |
| | | // for (int y = 0; y < nHeight - 1; y++) |
| | | // { |
| | | // for (int x = 0; x < nWidth - 1; x++) |
| | | // { |
| | | // TempValue = (double)(pImageBufferByte[y*nWidth + x] - pImageBufferByte[y*nWidth + x + 1]); |
| | | // SumValue = TempValue * TempValue; |
| | | // TempValue = (double)(pImageBufferByte[y*nWidth + x] - pImageBufferByte[(y + 1)*nWidth + x]); |
| | | // SumValue += TempValue * TempValue; |
| | | // |
| | | // Focusvalue += sqrt(SumValue); |
| | | // //Focusvalue += SumValue; |
| | | // } |
| | | // } |
| | | // |
| | | // m_nResultFocusValue = int(Focusvalue / (double)(nWidth*nHeight)); |
| | | // |
| | | // double dXValue=0., dYValue=0., dCurr=0., dSum=0., dFocus=0.; |
| | | // for(int nH=nStartY ; nH<nStartY+nCalHeight-1 ; nH++) |
| | | // { |
| | | // for(int nW=nStartX ; nW<nStartX+nCalWidth-1 ; nW++) |
| | | // { |
| | | // dXValue = float((pImageBufferByte[nH*nW + nW+1] - pImageBufferByte[nH*nW + nW])*(pImageBufferByte[nH*nW + nW+1] - pImageBufferByte[nH*nW + nW])); |
| | | // dYValue = float((pImageBufferByte[(nH+1)*nW + nW] - pImageBufferByte[nH*nW + nW])*(pImageBufferByte[(nH+1)*nW + nW] - pImageBufferByte[nH*nW + nW])); |
| | | // dCurr = sqrt(dXValue + dYValue); |
| | | // dSum += dCurr; |
| | | // } |
| | | // } |
| | | // dFocus = dSum/double(nCalWidth*nCalHeight); |
| | | // |
| | | // return dFocus; |
| | | } |
| | | |
| | |
| | | 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 |
| | |
| | | |
| | | |
| | | virtual void ISP2P_SetCurrentWsiMode(int nMode) = 0; |
| | | //#3561 210908 LYW ADD Start |
| | | virtual void ISP2P_InitAlignCamera() = 0; |
| | | //#3561 210908 LYW ADD End |
| | | |
| | | // system info |
| | | virtual const CSystemInfo* ISP2P_System_GetSystemInfo() = 0; |
| | |
| | | |
| | | // 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); |
| | |
| | | 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::IN] AlignStart!")); |
| | | |
| | | |
| | | AlignCamera_CameraControl(CameraControlLive); // 210805 Align Camera Sequence ���� |
| | | Sleep(300); |
| | | |
| | | //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 MOD START |
| | | if (GetSimulationMode() == FALSE) |
| | | { |
| | |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Start Ack!")); |
| | | } |
| | | //#3584 210817 LYW CF AOI Review 시뮬레이션 기능 정상화 MOD END |
| | | |
| | | //#3561 210908 LYW ADD Start |
| | | int nAlignReconnectRetryMaxCount = 3; |
| | | for (int i = 0; i < nAlignReconnectRetryMaxCount; i++) |
| | | { |
| | | if (AlignCamera_CameraControl(CameraControlLive) == FALSE) |
| | | { |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[AlignStart] AlignConnect Fail! Reconect Start! ReconnectRetry count = %d"), nAlignReconnectRetryMaxCount + 1); |
| | | 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(10000); |
| | | m_pSP2P->ISP2P_InitAlignCamera(); |
| | | } |
| | | |
| | | else |
| | | { |
| | | m_pSP2P->ISP2P_DisplayMessage(_T("[AlignStart] AlignConnect Success! ")); |
| | | break; |
| | | } |
| | | |
| | | } |
| | | //#3561 210908 LYW ADD End |
| | | |
| | | Sleep(300); |
| | | |
| | | //original |
| | | // if (SendSignalToSignalControl(PCControlSendSignalIndex_Ack, PCControlSend_AlignStartAck_CPJT)) |
| | | // m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::AlignStart] Send Align Start Ack!")); |
| | |
| | | break; |
| | | case PCControlRecv_Autodiagnosis: |
| | | { |
| | | //#3514_LYW_CF AOI Review �ڰ����� ��� ����_START |
| | | /*< LYW 20210719 : #3517 ADD 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) { |
| | |
| | | |
| | | m_pSP2P->ISP2P_GetDiagnosisManager()->RecvSignalToSignalControl(0, nDiagnosisMode); |
| | | } |
| | | //#3514_LYW_CF AOI Review �ڰ����� ��� ����_END |
| | | /*< LYW 20210719 : #3517 ADD End >*/ |
| | | else |
| | | bResult = SendSignalOffToSignalControl(PCControlSendSignalIndex_DiagnoAck, 0); |
| | | |
| | |
| | | #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 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 |
| | | #define TOTAL_WINDOW_SIZE_Y 1040 |
| | |
| | | |
| | | // 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; |
| | |
| | | |
| | | // 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 |
| | | { |
| | |
| | | #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") |
| | |
| | | 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; |
| | |
| | | m_dReviewPanelPosY2 = 0; |
| | | m_dReviewPanelPosX4 = 0; |
| | | m_dReviewPanelPosY4 = 0; |
| | | //#3514_LYW_CF AOI Review 자가진단 기능 개선_START |
| | | /*< LYW 20210719 : #3517 ADD Start >*/ |
| | | m_nFlatnessSkipMode = 0; |
| | | //#3514_LYW_CF AOI Review 자가진단 기능 개선_END |
| | | /*< LYW 20210719 : #3517 ADD End >*/ |
| | | |
| | | } |
| | | |
| | |
| | | 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 |
| | | /*< LYW 20210719 : #3517 ADD 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 |
| | | /*< LYW 20210719 : #3517 ADD 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 |
| | | /*< LYW 20210719 : #3517 ADD 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 |
| | | /*< LYW 20210719 : #3517 ADD 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 |
| | | /*< LYW 20210719 : #3517 ADD Start >*/ |
| | | double m_dSquarenessStandard; |
| | | double m_dSquarenessStandard2; |
| | | //#3514_LYW_CF AOI Review 자가진단 기능 개선_END |
| | | /*< LYW 20210719 : #3517 ADD End >*/ |
| | | |
| | | // Flatness |
| | | CDiagnosisResult m_dataSettingResult_Flatness; // single data |
| | |
| | | int m_nRangeCount_Flatness; |
| | | int m_nGlassSizeX; |
| | | int m_nGlassSizeY; |
| | | //#3514_LYW_CF AOI Review 자가진단 기능 개선_START |
| | | /*< LYW 20210719 : #3517 ADD Start >*/ |
| | | int m_nFlatnessSkipMode; |
| | | //#3514_LYW_CF AOI Review 자가진단 기능 개선_END |
| | | /*< LYW 20210719 : #3517 ADD End >*/ |
| | | |
| | | // wsi |
| | | VectorDiagnosisResult m_vecSettingResult_Wsi; // add module count |
| | | int m_nPanelCount_Wsi; |
| | | double m_dJudgeData_3Sigma; |
| | | //#3514_LYW_CF AOI Review 자가진단 기능 개선_START |
| | | /*< LYW 20210719 : #3517 ADD Start >*/ |
| | | double m_dWSIStandard; |
| | | //#3514_LYW_CF AOI Review 자가진단 기능 개선_END |
| | | /*< LYW 20210719 : #3517 ADD End >*/ |
| | | |
| | | double m_dPanelPosX; |
| | | double m_dPanelPosY; |