#ifndef GLOBAL_DEFINE_H #define GLOBAL_DEFINE_H #include #include #include #include using namespace std; #define WM_USER_SYSTEM_CLOSE WM_USER + 1 #define UM_LIST_SELECTDEFECT WM_USER + 2 #define WM_POCESS_STATUS WM_USER + 3 #define WM_LIVE_IMG_UPDATE WM_USER + 4 #define UM_UPDATE_RECIPE WM_USER + 5 #define UM_SEND_MESSAGE_MAIN_DLG WM_USER + 6 #define MAX_CAMERA_COUNT 4 #define MAX_SCAN_COUNT 2 #define MAX_DIMENSION_COUNT 8 #define MAX_STAGE_HAND_COUNT 2 #define MAX_FRAM_COUNT 200 #define MAX_DEFECT_COUNT_SIDE 2000 #define MAX_DEFECT_COUNT_GLASS 16000 // MAX_DEFECT_COUNT_SIDE * MAX_DIMENSION_COUNT #define DISPLAY_FRAME_WIDTH 4096 #define DISPLAY_FRAME_HEIGHT 1024 #define SHARD_MEMORY_STRING_FRAMEBUFFER _T("SHARD_MEMORY_FRAMEBUFFER") #define PATH_INSPECTOR _T("C:\\EdgeInspector_App") #define RECIPE_PATH _T("C:\\EdgeInspector_App\\Recipe") #define RECIPE_ALIGN_PATH _T("C:\\EdgeInspector_App\\Align") #define LINK_FILE_NAME _T("C:\\EdgeInspector_App\\Recipe\\PPIDLink.lst") #define GLASSTYPE_IMAGE_PATH _T("C:\\EdgeInspector_App\\Recipe\\GlassType") #define LANGUAGE_DIR_PATH _T("C:\\EdgeInspector_App\\Language") #define PATH_LOGIMAGE _T("D:\\Inspection\\Image\\Log\\") #define PATH_DEBUGFULLIMAGE _T("D:\\Inspection\\Image\\Log\\DebugFullImage\\") #define PATH_INSPECTION_DATA _T("D:\\Inspection\\Data")// _T("D:\\InspectionData\\") #define CHKMAX(a,b) (((a) > (b)) ? (a) : (b)) #define CHKMIN(a,b) (((a) < (b)) ? (a) : (b)) #define MAX_PANEL_SIDE 4 // ¸é ¼ö #define UPDN_TYPE 2 // »óÇÏ °°ÀÌ Àִ°æ¿ì 2 Çϳª¸¸ Àִ°æ¿ì 1 #define MAX_SIDE_COUNT 8 #define MAX_CORNER_DIMENSION_MEASURE_COUNT 5 #define MAX_SIDE_DIMENSION_MEASURE_COUNT 16 // ÃÖ´ë Frame ¼ö ¸¸Å­ #define MAX_SIDE_EXCEPTION_AREA_COUNT 32 #define MAX_SIDE_USER_DEFECT_AREA_COUNT 32 #define MAX_SIDE_NOTCH_COUNT 5 #define MAX_SIDE_NOTCH_MEASURE_COUNT 10 #define MAX_SIDE_NOTCH_CIRCLE_COUNT 4 /* #define MAX_PROFILE_SETTING_COUNT 79 #define PROFILE_INSPECT_SIZE_A_C 13 #define PROFILE_INSPECT_SIZE_B_D 10 #define PROFILE_RCUT_SIZE 5 #define PROFILE_INSPECT_INDEX_A 33 #define PROFILE_INSPECT_INDEX_B 0 #define PROFILE_INSPECT_INDEX_C 10 #define PROFILE_INSPECT_INDEX_D 23 #define PROFILE_INSPECT_INDEX_CF 46 #define PROFILE_RCUT_INSPECT_INDEX_A 59 #define PROFILE_RCUT_INSPECT_INDEX_B 64 #define PROFILE_RCUT_INSPECT_INDEX_C 69 #define PROFILE_RCUT_INSPECT_INDEX_D 74 */ #define SHORT_SIDE_INSPECTION_POINT_OFFSET 1420 #define LONG_SIDE_INSPECTION_POINT_OFFSET 4770 namespace GLOBAL_DEFINE { enum ENTRY_VIEW {EV_VIEW_INFO=0, EV_VIEW_DEFECT, EV_VIEW_IMAGE, EV_VIEW_RECIPE, EV_VIEW_LIVE, EV_VIEW_HW, EV_EXIT, EV_VIEW_End}; enum LIGHT_TYPE {LIGHT_TYPE_TRANS=0,LIGHT_TYPE_REF,LIGHT_TYPE_NONE}; enum LIGHT_MAKER {MAKER_LCP=0,MAKER_AKP,MAKER_NONE}; enum CAMERA_DIR {CAMDIR_TOP=0,CAMDIR_BOTTOM,CAMDIR_NONE}; enum CAMERA_INSPECTION_DIR {INSPECTDIR_FORWARD=0,INSPECTDIR_BACKWARD,INSPECTDIR_NONE}; enum CAMERA_SCANDIR {SCANGLASS_X=0,SCANGLASS_Y,SCANGLASS_NONE}; enum BOARD_TYPE {GRAB_LINK_BOARD=0,RADIENT_BOARD,SOLIOS_BOARD,SAP_BOARD,BOARDTYPE_NONE}; enum EmSplashCmd {emShow=0, emHide, emText}; enum ScanDirectionIns { SD_Forward = 0, SD_Backward, SD_Unknown }; // Glass ±âÁØ Scan ¹æÇâ. enum DimensionDir { DIMENSION_A=0, DIMENSION_B, DIMENSION_C, DIMENSION_D,DIMENSION_A_DN, DIMENSION_B_DN, DIMENSION_C_DN, DIMENSION_D_DN, DIMENSION_NONE}; enum EM_CORNER_JUDGE {A_ZONE_CRACK=0,B_ZONE_CRACK,B_ZONE_BURR,C_ZONE_CRACK,C_ZONE_BURR, D_ZONE_CRACK, EDGE_THINCRACK, CHIP_WHITE}; enum UPDATE_SETTING_RCP {EM_GLASSINFO_RCP=0,EM_CUTAREA_RCP,EM_DIMEN_RCP,EM_SPLINE_RCP,EM_CORNER_RCP,EM_NOTCH_RCP,EM_VCR_RCP}; enum GlassDirection { GD_LeftTop = 0, GD_RightTop = 1, GD_LeftBottom = 10, GD_RightBottom = 11 }; enum ExpRegionType { ER_ALL=0, ER_AREA, ER_NONE};//130115 enum Procee_Mode {PROC_MODE_AUTO=0,PROC_MODE_SIMULATION_ONESIDE,PROC_MODE_SIMULATION_SIDESHORT,PROC_MODE_SIMULATION_SIDELONG,PROC_MODE_SIMULATION_ALL}; enum Init_View_Command {VIEW_RECIPE=0,VIEW_SCANIMAGE}; }; static CString g_SideName[] = { _T("A Top"), _T("B Top"), _T("C Top"), _T("D Top"), _T("A Bot"), _T("B Bot"), _T("C Bot"), _T("D Bot"), _T("Unknown") }; static char g_cSideName[9][256] = { "A Top", "B Top", "C Top", "D Top", "A Bot", "B Bot", "C Bot", "D Bot", "Unknown" }; static CString g_strDayOfWeek[7] = { _T("Sun"), _T("Mon"), _T("Tue"), _T("Wed"), _T("Thu"), _T("Fri"), _T("Sat") }; using namespace GLOBAL_DEFINE; typedef struct tagPROG_MSG { int nJobIndex; int nSide; int nState; int nDispLine; }PROG_MSG; struct _ST_MAPSETTINGS_INDEX { int m_nIndex[5][4]; }; struct _ST_MAPSETTINGS { _ST_MAPSETTINGS_INDEX m_nMapIndex[2]; }; class CInspectDefect; class CDefect; class CGlass_Data; interface IViewInterface2Parent { virtual void CommandExitButtonClick() = 0; virtual void MapDefect_ReqDefectImage(CDefect* pDefect,int nGlassDefectIdx) = 0; virtual CDefect *ListDefect_ReqDefectImage(CDefect* pDefect,int nGlassDefectIdx) = 0; virtual LPBYTE IV2M_GetGrabBufferByDimension(DimensionDir eDim,int iVline) = 0; virtual BOOL IV2M_SetLiveGrabCommand(DimensionDir eDim,BOOL bStop) = 0; virtual void IV2M_InitView(Init_View_Command eVew) = 0; virtual void IV2M_LoadImageFullFile(int iSide, CGlass_Data *pGlassData = NULL, std::function _Func = nullptr) = 0; virtual BOOL IV2M_SaveFullImage(CString strPath,int iSide,CPoint ptStart,int nLength) = 0; virtual BOOL IV2M_RecipeChange(CString strRecipe) = 0; virtual BOOL MLight_SetLightControlValue(int iCon,int iCh, int nValue, BOOL bRef, int nScanIdx = 0, BOOL bAdjLight = TRUE) = 0; virtual void MLight_OnOff(int iCon,int iCh,BOOL bValue) = 0; virtual BOOL IV2M_InspectionProcess(DimensionDir eDim) = 0; virtual BOOL IV2M_InspectionProcessAll(int iProceMode) = 0; }; // 4/13 MiniLED #define IMAGE_WIDTH 4096 // 8192//2048 #define IMAGE_HEIGHT 1024 #define MAX_IMAGE_FRAME 160//100 #define MAX_IMAGE_FRAME_SHORT 160//100 // ÃÖ´ë ÇÁ·¹ÀÓ ¼ö #define MAX_IMAGE_FRAME_LONG 160//100 // ÃÖ´ë ÇÁ·¹ÀÓ ¼ö #define MAX_SIDE_INSPECT_AREA_COUNT 12 #define MAX_IMAGE_LINE_SHORT MAX_IMAGE_FRAME_SHORT * IMAGE_HEIGHT // ÃÖ´ë ¶óÀμö #define MAX_IMAGE_LINE_LONG MAX_IMAGE_FRAME_LONG * IMAGE_HEIGHT // ÃÖ´ë ¶óÀμö #define MAX_IMAGE_LINE MAX_IMAGE_LINE_LONG #define MAX_LIMIT_LINE (MAX_IMAGE_FRAME - 1) * IMAGE_HEIGHT #define MAX_IMAGE_LINE_MARGIN ((MAX_IMAGE_FRAME+50) * IMAGE_HEIGHT) //(150 * IMAGE_HEIGHT) // ÃÖ´ë ¶óÀμö #define ALIGN_4BYTE(width) (width + 3)/4*4 #define PI 3.14159265358979323846 #define ToRadian(degree) ( (degree) * (PI/180.0) ) #define ToDegree(radian) ( (radian) * (180.0/PI) ) struct _ST_GDI_ITEM { COLORREF colorWhite; COLORREF colorRed; COLORREF colorYellow; COLORREF colorGreen; COLORREF colorBlue; COLORREF colorBlack; COLORREF colorLightGray; COLORREF colorDarkGray; COLORREF colorGray; COLORREF colorTitle; COLORREF colorLightBlue; COLORREF colorViolet; COLORREF colorLightYellow; COLORREF colorOrange; COLORREF colorLightRed; COLORREF colorLightGreen; COLORREF colorBrown; COLORREF colorSky; CBrush brushBk; CBrush brushDarkGray; CBrush brushWhite; CBrush brushBlue; CBrush brushLightBlue; CBrush brushBlack; CBrush brushRed; CBitmap BkBitmap; CBrush BrushBkPattern; }; typedef struct _INSPECTFULLIMAGE_BUFFER { int iCamIdx; int iScanIdx; LPBYTE pImage; CSize szImage; _INSPECTFULLIMAGE_BUFFER() { pImage = NULL; Reset(); } void Reset() { iCamIdx = iScanIdx = -1; if(pImage != NULL) delete[] pImage; pImage=NULL; szImage = CSize(0,0); } void Clear() { if(pImage == NULL || szImage.cx <= 0 || szImage.cy <= 0) return; ZeroMemory(pImage,sizeof(BYTE)*szImage.cx*szImage.cy); } void SetSize(CSize szRe) { if(pImage != NULL && szRe.cx <= szImage.cx && szRe.cy <= szImage.cy) { Clear(); return; } if(pImage != NULL) delete[] pImage,pImage=NULL; szImage = szRe; pImage = new BYTE[szImage.cx*szImage.cy]; Clear(); } } INSPECTFULLIMAGE_BUFFER, *pINSPECTFULLIMAGE_BUFFER; // For Recipe Edit.. #define ZOOM_RANGE 20 #define ZOOM_RATIO (1.0/(((double)ZOOM_RANGE+2.0)/2.0)) enum eViewCmdSide {eRcp_SideRD_A=0, eRcp_SideRD_B, eRcp_SideRD_C, eRcp_SideRD_D,eRcp_SideRD_A_DN,eRcp_SideRD_B_DN,eRcp_SideRD_C_DN,eRcp_SideRD_D_DN,eRcp_SideRD_End}; enum eViewCmdInsType { eRcp_InsType_Chip=0, eRcp_InsType_Crack, eRcp_InsType_Burr, eRcp_InsType_Chamfer, eRcp_InsType_In_Chip, eRcp_InsType_In_Crack, eRcp_InsType_In_Burr, eRcp_InsType_In_Chamfer, eRcp_InsType_TopCorner, eRcp_InsType_BotCorner }; static CString g_strInsType[10] = { _T("Chip"), _T("Crack"), _T("Burr"), _T("Chamfer"), _T("In_Chip"), _T("In_Crack"), _T("In_Burr"), _T("In_Chamfer"), _T("Top_Corner"), _T("Bot_Corner"), }; enum eSideInsType { eSideInsType_Chip=0, eSideInsType_Crack, eSideInsType_Burr, eSideInsType_Chamfer, eSideInsType_In_Chip, eSideInsType_In_Crack, eSideInsType_In_Burr, eSideInsType_In_Chamfer, eSideInsType_Total }; #define MAX_SIDE_INSPECT_TYPE 8 struct WSSendData { //=======================´ý¶¨========================== //uint8_t operation; // ²Ù×÷·û (1×Ö½Ú) //uint8_t operand; // ²Ù×÷Êý (1×Ö½Ú) //uint16_t blockNumber; // ͼÏñ¿é±àºÅ (2×Ö½ÚÎÞ·ûºÅÕûÊý) //uint32_t dataOffset; // Êý¾ÝÆ«ÒÆ (4×Ö½ÚÎÞ·ûºÅÕûÊý) //===================================================== uint8_t nCheckType = 0; // ¼ì²âÀàÐÍ uint8_t nRecipe = 0; // Åä·½ uint8_t nLineType = 0; // Ïß±ðÀàÐÍ uint8_t nIndex = 0; // ͼƬÐòºÅ uint8_t nFrameIdx = 0; // Ö¡ÐòºÅ uint8_t nScanIdx = 0; // ²à±ð uint8_t nNGType = 0; // NG ÀàÐÍ uint8_t nPosition = 0; // λÖà uint8_t nState = 0; // ״̬ uint16_t nEdgeX = 0; // X·½Ïò±ßÔµ×ø±ê uint16_t nEdgeY = 0; // X·½Ïò±ßÔµ×ø±ê uint16_t nNPointY = 0; // Y·½ÏòNGÇøÓò×ø±ê uint16_t nWidth = 0; // ͼÏñ¿í¶È uint16_t nHeight = 0; // ͼÏñ¸ß¶È double dTimeStamp = 0.0; // ʱ¼ä´Á uint16_t nLeft = 0; // ÔÚԭͼµÄλÖà uint16_t nTop = 0; // ÔÚԭͼµÄλÖà std::string strSN = ""; // ÐòÁкŠstd::vector image = {}; // ͼÏñÊý¾Ý (¶þ½øÖÆÊý¾Ý) }; struct WSReceiveData { // ¶¨ÒåÒ»¸ö±íʾNGλÖõĽṹÌå struct NGPosition { uint8_t nNGType = 0; // NG ÀàÐÍ uint16_t nLeft = 0; // ÔÚԭͼµÄλÖà uint16_t nTop = 0; // ÔÚԭͼµÄλÖà uint16_t nRight = 0; // ÔÚԭͼµÄλÖà uint16_t nBottom = 0; // ÔÚԭͼµÄλÖà }; uint8_t nRecipe = 0; // Åä·½ uint8_t nLineType = 0; // Ïß±ðÀàÐÍ uint8_t nIndex = 0; // ͼƬÐòºÅ uint8_t nFrameIdx = 0; // Ö¡ÐòºÅ uint8_t nScanIdx = 0; // ²à±ð std::string strSN = ""; // ÐòÁкŠdouble dTimeStamp = 0.0; // ʱ¼ä´Á uint8_t nGNum = 0; // NG ÊýÁ¿ std::vector ngPosArray = {}; // NG λÖÃÊý×é }; #endif // GLOBAL_DEFINE_H