#ifndef GLOBAL_DEFINE_H
|
#define GLOBAL_DEFINE_H
|
|
#include <map>
|
#include <list>
|
#include <vector>
|
#include <functional>
|
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<void(BYTE)> _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<char> 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<NGPosition> ngPosArray = {}; // NG 位置数组
|
};
|
|
#endif // GLOBAL_DEFINE_H
|