|
// stdafx.h : 자주 사용하지만 자주 변경되지는 않는
|
// 표준 시스템 포함 파일 및 프로젝트 관련 포함 파일이
|
// 들어 있는 포함 파일입니다.
|
|
#pragma once
|
|
#ifndef _SECURE_ATL
|
#define _SECURE_ATL 1
|
#endif
|
|
#ifndef VC_EXTRALEAN
|
#define VC_EXTRALEAN // 거의 사용되지 않는 내용은 Windows 헤더에서 제외합니다.
|
#endif
|
|
#include "targetver.h"
|
|
#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // 일부 CString 생성자는 명시적으로 선언됩니다.
|
|
// MFC의 공통 부분과 무시 가능한 경고 메시지에 대한 숨기기를 해제합니다.
|
#define _AFX_ALL_WARNINGS
|
|
#include <afxwin.h> // MFC 핵심 및 표준 구성 요소입니다.
|
#include <afxext.h> // MFC 확장입니다.
|
#include <afxdisp.h> // MFC 자동화 클래스입니다.
|
|
#ifndef _AFX_NO_OLE_SUPPORT
|
#include <afxdtctl.h> // Internet Explorer 4 공용 컨트롤에 대한 MFC 지원입니다.
|
#endif
|
#ifndef _AFX_NO_AFXCMN_SUPPORT
|
#include <afxcmn.h> // Windows 공용 컨트롤에 대한 MFC 지원입니다.
|
#endif // _AFX_NO_AFXCMN_SUPPORT
|
|
#include <afxcontrolbars.h> // MFC의 리본 및 컨트롤 막대 지원
|
|
#include "resource.h"
|
#include "DisplayMessage.h"
|
#include "CHReviewResult/GlassResult.h"
|
#include "CHReviewSetting/MotorParameter.h"
|
|
#include <WinNetWk.h>
|
//#pragma comment(lib,"Mpr.lib")
|
|
#ifdef _UNICODE
|
#if defined _M_IX86
|
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
|
#elif defined _M_IA64
|
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='ia64' publicKeyToken='6595b64144ccf1df' language='*'\"")
|
#elif defined _M_X64
|
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"")
|
#else
|
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
|
#endif
|
#endif
|
|
// [2017:6:5]-[WEZASW] :
|
// malloc 과 free Memory Leak
|
#define _CRTDBG_MAP_ALLOC
|
#include <stdlib.h>
|
#include <crtdbg.h>
|
//
|
// // new Memory Leak
|
// #include <fstream>
|
// #define new new(_NORMAL_BLOCK, __FILE__, __LINE__)
|
#define REVIEW_SIMULATION_TEST_ENABLE 1
|
|
#define ID_TIMER_ALIVE (WM_USER + 100)
|
#define ID_TIMER_DISABLE_MAG_BUTTON (WM_USER + 101)
|
#define ID_TIMER_AFM_ALIVE (WM_USER + 102)
|
#define ID_TIMER_WSI_READY_ACK_TIME (WM_USER + 103)
|
#define ID_TIMER_WSI_START_ACK_TIME (WM_USER + 104)
|
#define ID_TIMER_WSI_LONGRUN_TEST_TIME (WM_USER + 105)
|
#define ID_TIMER_DISABLE_AF_TRACKING_BUTTON (WM_USER + 106)
|
#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 _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
|
|
#define TOTAL_TWO_MONITOR_WINDOW_SIZE_X 1920
|
#define TOTAL_TWO_MONITOR_WINDOW_SIZE_Y 1080
|
|
#define CAMERA_WINDOW_SIZE_X 920 //960
|
#define CAMERA_WINDOW_SIZE_Y 750
|
|
#define ALIGN_WINDOW_SIZE_X 960
|
#define ALIGN_WINDOW_SIZE_Y TOTAL_WINDOW_SIZE_Y - CAMERA_WINDOW_SIZE_Y
|
|
|
#define OPTION_WINDOW_SIZE_X 150
|
#define OPTION_WINDOW_SIZE_Y CMD_WINDOW_SIZE_Y + MAP_WINDOW_SIZE_Y
|
|
#define CMD_WINDOW_SIZE_X 1000
|
#define CMD_WINDOW_SIZE_Y 36
|
|
#define MAP_WINDOW_SIZE_X 840 //800
|
#define MAP_WINDOW_SIZE_Y 520
|
|
#define INFO_WINDOW_SIZE_X 386
|
#define INFO_WINDOW_SIZE_Y 480
|
|
#define TAB_WINDOW_SIZE_X 835 //795
|
#define TAB_WINDOW_SIZE_Y 480
|
|
#define GRAPH_WINDOW_SIZE_X 320
|
#define GRAPH_WINDOW_SIZE_Y 250
|
|
#define MAX_GLASS_RESULT_SIZE 30 //taek 210201 max 20개의 History를 가진다 //
|
#define TOTAL_GLASS_SLOT_COUNT 28
|
#define MAX_REVIEW_POINT_SIZE 500
|
|
#define LEFT_GANTRY 0
|
#define RIGHT_GANTRY 1
|
|
#define _MAGNIFICATION_X10_ 0
|
#define _MAGNIFICATION_X20_ 1
|
|
#define UM_SIGNAL_SIGNAL_UPDATE (WM_USER + 5000) // n
|
#define UM_PROCESS_STATUS_UPDATE (WM_USER + 5001)
|
#define UM_MOTOR_POSITION_UPDATE (WM_USER + 5002)
|
#define UM_MOTOR_STATUS_UPDATE (WM_USER + 5003)
|
#define UM_DIO_SIGNAL_UPDATE (WM_USER + 5004)
|
#define UM_CONNECTION_STATUS_UPDATE (WM_USER + 5005)
|
#define UM_LONG_RUN_COMMAND (WM_USER + 5006)
|
#define UM_LONG_RUN_COUNT_UPDATE (WM_USER + 5007) // n
|
#define UM_UPDATE_DEFECT_MAP (WM_USER + 5008)
|
#define UM_SET_ALIGN_RESULT (WM_USER + 5009) // n
|
#define UM_TRANSFER_DATA_UPDATE (WM_USER + 5010) // n
|
#define UM_PROCESS_REMAIN_REVIEW (WM_USER + 5011)
|
#define UM_PROCESS_REVIEW_START_MOTOR (WM_USER + 5012) // n
|
#define UM_CAMERA_STATUS_UPDATE (WM_USER + 5014)
|
#define UM_DEFECT_FILTER_UPDATE (WM_USER + 5015)
|
#define UM_REVIEW_RESULT_UPDATE (WM_USER + 5016)
|
#define UM_SIGNAL_IO_SIGNAL_UPDATE (WM_USER + 5017)
|
#define UM_PROCESS_REMAIN_WSI (WM_USER + 5018)
|
#define UM_MODULE_CHANGE_MESSAGE (WM_USER + 5019)
|
#define UM_LIGHT_LEVEL_UPDATE (WM_USER + 5020)
|
#define UM_MAGNIFICATION_UPDATE (WM_USER + 5021)
|
#define UM_AFM_LEVEL_UPDATE (WM_USER + 5022)
|
#define UM_SELECTED_MODULE_INDEX_UPDATE (WM_USER + 5023)
|
#define UM_THETA_MOTOR_INFO_UPDATE (WM_USER + 5024)
|
#define UM_UPDATE_DEFECT_MAP_DEFAULT (WM_USER + 5025)
|
#define UM_TEST_MESSAGE_MOVE_JOG (WM_USER + 5026)
|
#define UM_REVIEW_DEFECT_RESULT_UPDATE (WM_USER + 5027)
|
#define UM_WSI_RESULT_UPDATE (WM_USER + 5028) //1218 // 포스트 메세지로 처리
|
#define UM_DEFOCUS_LIST_UPDATE (WM_USER + 5029) //20190819chm
|
#define UM_UPDATE_DEFECT_MAP2 (WM_USER + 5030)
|
#define UM_HISTORY_MOUSEWHELL (WM_USER + 5031)
|
#define WM_OFFSETTOOL_MESSAGE2 (WM_USER + 9998)
|
#define WM_OFFSETTOOL_MESSAGE (WM_USER + 9999)
|
|
|
|
#include <GdiPlus.h>
|
using namespace Gdiplus;
|
|
static ULONG_PTR gpGdiplusToken = NULL;
|
static UINT gpGdiplusTokenCount = 0;
|
|
//enum PCControlStatus { PCControl_BypassMode=0, PCControl_AutoMode, PCControl_ManualMode, PCControl_ReviewMode, PCControl_GlassLoading, PCControl_AlignStart, PCControl_AlignEnd, PCControl_ReviewStart, PCControl_ReviewEnd, PCControl_GlassUnloading, PCControl_LightON, PCControl_LightOFF };
|
|
|
enum PCControlSignal { PCControlSignal_0=0, PCControlSignal_1, PCControlSignal_2, PCControlSignal_3, PCControlSignal_4, PCControlSignal_5, PCControlSignal_6, PCControlSignal_7 ,PCControlSignal_8, PCControlSignal_9, PCControlSignal_10, PCControlSignal_11, PCControlSignal_12, PCControlSignal_13, PCControlSignal_14, PCControlSignal_15, PCControlSignal_Count };
|
// enum LibraryType { Lib_Simulate=0, Lib_Sapera, Lib_FlyCapture, Lib_Pylon, Lib_JAI };
|
// enum LightType { Light_SP200=0, Light_PSD1010 };
|
// enum RevolverType { Revolver_Nikon=0, LinearTurret };
|
//enum ProcessMode { ProcessModeNone=0, ProcessModeBypass, ProcessModeAuto, ProcessModeManual, ProcessModeReview };
|
//enum ProcessStatus { ProcessNA=-1, ProcessLoading, ProcessAlignStart, ProcessAlignEnd, ProcessReviewStart, ProcessReviewEnd, ProcessUnloading, ProcessLightOn, ProcessLightOff };
|
|
#define COPYDATA_SYSTEMSETTING2REVIEWSYSTEM 1500
|
#define COPYDATA_RECIPEEDITOR2REVIEWSYSTEM 1600
|
|
|
// [2017:1:13]-[WEZASW] : 다중 모니터에서의 ReviewSystem Display
|
enum MonitorPosition {MonitorPos_CENTER=0, MonitorPos_TOP, MonitorPos_BOTTOM, MonitorPos_LEFT, MonitorPos_RIGHT, MonitorPos_Count};
|
|
|
#include "SequenceProcessor.h"
|
#include <afxcontrolbars.h>
|
#include <afxwin.h>
|
#include <afxcontrolbars.h>
|
#include <afxcontrolbars.h>
|
#include <afxcontrolbars.h>
|
|
enum MsgSystem2Rev
|
{
|
MsgSystem2Rev_None = -1,
|
|
MsgSystem2Rev_StandardCameraMotorPos,
|
MsgRev2System_StandardCameraMotorPos,
|
|
MsgSystem2Rev_FindAlignMark,
|
MsgRev2System_FindAlignMark,
|
|
MsgSystem2Rev_ChangeSysConfig,
|
MsgRev2System_ChangeSysConfig,
|
|
// [2017:5:2]-[WEZASW] : TFE Measurement 설비 UNIT Test(Signal 수동 발생)를 위한 추가
|
MsgSystem2Rev_SendAlignAlarmSignal,
|
MsgRev2System_SendAlignAlarmSignal,
|
|
MsgSystem2Rev_SendNoPPIDSignal,
|
MsgRev2System_SendNoPPIDSignal
|
};
|
|
typedef struct _COPYDATA_SYSTEM2REV
|
{
|
_COPYDATA_SYSTEM2REV()
|
{
|
Message = MsgSystem2Rev_None;
|
nFirstAlignFindPixelX = 0;
|
nFirstAlignFindPixelY = 0;
|
nSecondAlignFindPixelX = 0;
|
nSecondAlignFindPixelY = 0;
|
dStandardCameraMotorPosX = 0.0;
|
dStandardCameraMotorPosY = 0.0;
|
ZeroMemory(strTemplateImagePath1, sizeof(char)*MAX_PATH);
|
ZeroMemory(strTemplateImagePath2, sizeof(char)*MAX_PATH);
|
}
|
|
~_COPYDATA_SYSTEM2REV()
|
{
|
|
}
|
|
_COPYDATA_SYSTEM2REV(const _COPYDATA_SYSTEM2REV& rhs)
|
{
|
if (this != &rhs)
|
{
|
Message = rhs.Message;
|
nFirstAlignFindPixelX = rhs.nFirstAlignFindPixelX;
|
nFirstAlignFindPixelY = rhs.nFirstAlignFindPixelY;
|
nSecondAlignFindPixelX = rhs.nSecondAlignFindPixelX;
|
nSecondAlignFindPixelY = rhs.nSecondAlignFindPixelY;
|
dStandardCameraMotorPosX = rhs.dStandardCameraMotorPosX;
|
dStandardCameraMotorPosY = rhs.dStandardCameraMotorPosY;
|
memcpy(strTemplateImagePath1, rhs.strTemplateImagePath1, sizeof(char)*MAX_PATH);
|
memcpy(strTemplateImagePath2, rhs.strTemplateImagePath2, sizeof(char)*MAX_PATH);
|
}
|
}
|
|
_COPYDATA_SYSTEM2REV& operator=( const _COPYDATA_SYSTEM2REV& rhs)
|
{
|
if (this != &rhs)
|
{
|
Message = rhs.Message;
|
nFirstAlignFindPixelX = rhs.nFirstAlignFindPixelX;
|
nFirstAlignFindPixelY = rhs.nFirstAlignFindPixelY;
|
nSecondAlignFindPixelX = rhs.nSecondAlignFindPixelX;
|
nSecondAlignFindPixelY = rhs.nSecondAlignFindPixelY;
|
dStandardCameraMotorPosX = rhs.dStandardCameraMotorPosX;
|
dStandardCameraMotorPosY = rhs.dStandardCameraMotorPosY;
|
memcpy(strTemplateImagePath1, rhs.strTemplateImagePath1, sizeof(char)*MAX_PATH);
|
memcpy(strTemplateImagePath2, rhs.strTemplateImagePath2, sizeof(char)*MAX_PATH);
|
}
|
return *this;
|
}
|
|
MsgSystem2Rev Message;
|
int nFirstAlignFindPixelX;
|
int nFirstAlignFindPixelY;
|
int nSecondAlignFindPixelX;
|
int nSecondAlignFindPixelY;
|
double dStandardCameraMotorPosX;
|
double dStandardCameraMotorPosY;
|
char strTemplateImagePath1[MAX_PATH];
|
char strTemplateImagePath2[MAX_PATH];
|
}COPYDATA_SYSTEM2REV, *PCOPYDATA_SYSTEM2REV;
|
|
|
// [2017:4:17]-[WEZASW] : CIM(Recipe) 보고 항목 추가.
|
enum MsgRecipe2Rev
|
{
|
MsgRecipe2Rev_None = -1,
|
MsgRecipe2Rev_StandardCameraGlassPos,
|
MsgRev2Recipe_StandardCameraGlassPos,
|
MsgRecipe2Rev_RecipeCreate, // Recipe(PPID) 추가
|
MsgRev2Recipe_RecipeCreate,
|
MsgRecipe2Rev_RecipeChange, // Recipe(PPID) 변경
|
MsgRev2Recipe_RecipeChange,
|
MsgRecipe2Rev_RecipeDelete, // Recipe(PPID) 삭제
|
MsgRev2Recipe_RecipeDelete,
|
MsgRecipe2Rev_RecipeModify, // Recipe(PPID) Parameter 수정
|
MsgRev2Recipe_RecipeModify
|
};
|
|
typedef struct _COPYDATA_RECIPE2REV
|
{
|
_COPYDATA_RECIPE2REV()
|
{
|
Message = MsgRecipe2Rev_None;
|
dStandardCameraGlassPosX = 0.0;
|
dStandardCameraGlassPosY = 0.0;
|
nPPID = -1;
|
}
|
|
~_COPYDATA_RECIPE2REV()
|
{
|
}
|
|
MsgRecipe2Rev Message;
|
double dStandardCameraGlassPosX;
|
double dStandardCameraGlassPosY;
|
int nPPID;
|
} COPYDATA_RECIPE2REV, *PCOPYDATA_RECIPE2REV;
|
|
|
#define COPYDATA_RESETCOMM 1421
|
#define DEFAULT_MESSAGE (WM_USER + COPYDATA_RESETCOMM)
|
|
typedef struct _RESETCOMM
|
{
|
_RESETCOMM::_RESETCOMM()
|
{
|
iIntaval = 0;
|
iIdentTimer = 0;
|
iIdentMessage = 0;
|
bSignal = FALSE;
|
ZeroMemory(strRequestFile, sizeof(char)*MAX_PATH);
|
ZeroMemory(strWindowTitle, sizeof(char)*MAX_PATH);
|
}
|
|
_RESETCOMM::_RESETCOMM(const _RESETCOMM& other)
|
{
|
if (this != &other)
|
{
|
iIntaval = other.iIntaval;
|
iIdentTimer = other.iIdentTimer;
|
iIdentMessage = other.iIdentMessage;
|
bSignal = other.bSignal;
|
CopyMemory(strWindowTitle,other.strWindowTitle,sizeof(char)*MAX_PATH);
|
CopyMemory(strRequestFile,other.strRequestFile,sizeof(char)*MAX_PATH);
|
}
|
}
|
|
_RESETCOMM& _RESETCOMM::operator=(const _RESETCOMM& other)
|
{
|
if (this != &other)
|
{
|
iIntaval = other.iIntaval;
|
iIdentTimer = other.iIdentTimer;
|
iIdentMessage = other.iIdentMessage;
|
bSignal = other.bSignal;
|
CopyMemory(strWindowTitle,other.strWindowTitle,sizeof(char)*MAX_PATH);
|
CopyMemory(strRequestFile,other.strRequestFile,sizeof(char)*MAX_PATH);
|
}
|
|
return *this;
|
}
|
|
int iIntaval;
|
int iIdentTimer;
|
int iIdentMessage;
|
BOOL bSignal;
|
char strWindowTitle[MAX_PATH];
|
char strRequestFile[MAX_PATH];
|
|
|
|
}RESETCOMM, *PRESETCOMM;
|
|
#define COPYDATA_AOISERVER_NAME _T("! Inspection ! D.I.T")
|
#define COPYDATA_REVIEWSYSTEM_NAME _T("ReviewSystem")
|
#define COPYDATA_AOISERVER_2_REVIEWSYSTEM 1700
|
#define MAX_MESSAGE_DATA_COUNT 10
|
|
union UMessageData
|
{
|
int nValue;
|
double dValue;
|
};
|
|
enum AOIServer2ReviewSystem
|
{
|
Message_AOIServer2ReviewSystem_None = 0,
|
Message_AOIServer2ReviewSystem_AlignResult,
|
Message_ReviewSystem2AOIServer_AlignResultAck
|
};
|
|
struct SAOIServerMessage
|
{
|
SAOIServerMessage()
|
{
|
memset(this, 0, sizeof(SAOIServerMessage));
|
}
|
int nMessage;
|
UMessageData uMessageData[MAX_MESSAGE_DATA_COUNT];
|
char strMessageString[MAX_PATH];
|
};
|
|
BOOL KillProcess(CString ProcessName);BOOL getStateProcess(CString ProcessName);
|