// ChipInspectDlg.cpp : ʵÏÖÎļþ
|
//
|
|
#include "stdafx.h"
|
#include "BlVisionPro.h"
|
#include "ChipInspectDlg.h"
|
#include "afxdialogex.h"
|
#include "VisionBufferPro.h"
|
#include "FileRecipe.h"
|
#include "InChipDotProcess.h"
|
|
// CChipInspectDlg ¶Ô»°¿ò
|
|
IMPLEMENT_DYNAMIC(CChipInspectDlg, CDialogEx)
|
|
CChipInspectDlg::CChipInspectDlg(CWnd* pParent /*=NULL*/)
|
: CDialogEx(IDD_DIALOG_CHIP_INSPECT, pParent)
|
, m_imageIndex(1)
|
, m_nMinX(0)
|
, m_nMaxX(0)
|
, m_nEdgeChipThres(20)
|
{
|
m_display = NULL;
|
m_ptMouseUp.x = 0;
|
m_ptMouseUp.y = 0;
|
}
|
|
CChipInspectDlg::~CChipInspectDlg()
|
{
|
if (NULL != m_display) {
|
ClsDisplay_Free(m_display);
|
m_display = NULL;
|
}
|
}
|
|
void CChipInspectDlg::DoDataExchange(CDataExchange* pDX)
|
{
|
CDialogEx::DoDataExchange(pDX);
|
DDX_Control(pDX, IDC_COMBO_SIDE_INDEX_INCHIP, m_combSide);
|
DDX_Text(pDX, IDC_EDIT_IMAGE_INDEX_INCHIP, m_imageIndex);
|
DDX_Text(pDX, IDC_EDIT_INCHIP_MINX, m_nMinX);
|
DDX_Text(pDX, IDC_EDIT_INCHIP_MAXX, m_nMaxX);
|
DDX_Text(pDX, IDC_EDIT_EDGE_THRES_INCHIP, m_nEdgeChipThres);
|
}
|
|
|
BEGIN_MESSAGE_MAP(CChipInspectDlg, CDialogEx)
|
ON_WM_CLOSE()
|
ON_BN_CLICKED(IDC_BUTTON_GET_IMAGE_INCHIP, &CChipInspectDlg::OnBnClickedButtonGetImageInchip)
|
ON_BN_CLICKED(IDC_BUTTON_PROCESS_INCHIP, &CChipInspectDlg::OnBnClickedButtonProcessInchip)
|
END_MESSAGE_MAP()
|
|
|
// CChipInspectDlg ÏûÏ¢´¦Àí³ÌÐò
|
|
|
BOOL CChipInspectDlg::PreTranslateMessage(MSG* pMsg)
|
{
|
// TODO: ÔÚ´ËÌí¼ÓרÓôúÂëºÍ/»òµ÷ÓûùÀà
|
if (pMsg->message == WM_KEYDOWN) {
|
if ((pMsg->wParam == VK_RETURN) || (pMsg->wParam == VK_ESCAPE)) {
|
return TRUE;
|
}
|
}
|
|
return CDialogEx::PreTranslateMessage(pMsg);
|
}
|
|
|
BOOL CChipInspectDlg::OnInitDialog()
|
{
|
CDialogEx::OnInitDialog();
|
|
// TODO: ÔÚ´ËÌí¼Ó¶îÍâµÄ³õʼ»¯
|
InitDisplay();
|
|
InitUiParam();
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
// Òì³£: OCX ÊôÐÔÒ³Ó¦·µ»Ø FALSE
|
}
|
|
|
void CChipInspectDlg::OnClose()
|
{
|
// TODO: ÔÚ´ËÌí¼ÓÏûÏ¢´¦Àí³ÌÐò´úÂëºÍ/»òµ÷ÓÃĬÈÏÖµ
|
|
CDialogEx::OnClose();
|
}
|
|
void CChipInspectDlg::InitDisplay(void) {
|
/* code */
|
m_display = ClsDisplay_Create();
|
if (nullptr != m_display) {
|
CRect rect;
|
CWnd * pDispWnd = GetDlgItem(IDC_STATIC_IMAGE_INCHIP);
|
pDispWnd->GetWindowRect(rect);
|
m_display->OpenWindow((__int64)pDispWnd->m_hWnd, rect.Width(), rect.Height());
|
m_display->SetOperFlag(SELECT_OPER_FLAG);
|
m_display->SetDraw("fill", DISP_OBJECT);
|
m_display->SetColor("red", DISP_OBJECT);
|
|
m_display->SetDraw("fill", DISP_REGION);
|
m_display->SetColor("red", DISP_REGION);
|
|
m_display->SetDraw("fill", DISP_CROSS);
|
m_display->SetColor("green", DISP_CROSS);
|
|
m_display->SetDraw("fill", DISP_SELECT);
|
m_display->SetColor("red", DISP_SELECT);
|
|
std::string color = ClsVision::Rgb2Color(0, 0, 100);
|
m_display->SetBackgroundColor(color);
|
m_display->SetOperatorCallback([&](int msgEvent, int x, int y, double rate, int pixel) ->void {
|
MouseEventProc(msgEvent, x, y); //1. ±íʾɨÃè
|
});
|
}
|
}
|
|
void CChipInspectDlg::MouseEventProc(int msgEvent, int x, int y) {
|
/* code */
|
BOOL isChange = FALSE;
|
if (LEFT_MOUSE_BUTTON_UP == msgEvent) {
|
m_ptMouseUp.x = x;
|
m_ptMouseUp.y = y;
|
isChange = TRUE;
|
}
|
|
CString msg;
|
msg.Format(_T("Pose: (%d, %d)"), m_ptMouseUp.x, m_ptMouseUp.y);
|
std::string str = CFileRecipe::toString(msg);
|
if (isChange) {
|
m_display->ClearWindow();
|
m_display->DispImage();
|
}
|
m_display->DispMessage(30, 30, str, "blue", "false");
|
}
|
|
void CChipInspectDlg::OnBnClickedButtonGetImageInchip()
|
{
|
// TODO: ÔÚ´ËÌí¼Ó¿Ø¼þ֪ͨ´¦Àí³ÌÐò´úÂë
|
UpdateData(TRUE);
|
|
int nSide = m_combSide.GetCurSel();
|
DimensionDir eDir = (DimensionDir)nSide;
|
if (!CVisionBufferPro::getIndexImage(eDir, &m_display->GetImage(), m_imageIndex)) return;
|
|
m_display->ClearWindow();
|
m_display->DispImage();
|
}
|
|
void CChipInspectDlg::InitUiParam(void) {
|
/* code */
|
m_combSide.InsertString(0, _T("TopA"));
|
m_combSide.InsertString(1, _T("TopB"));
|
m_combSide.InsertString(2, _T("TopC"));
|
m_combSide.InsertString(3, _T("TopD"));
|
m_combSide.InsertString(4, _T("DotA"));
|
m_combSide.InsertString(5, _T("DotB"));
|
m_combSide.InsertString(6, _T("DotC"));
|
m_combSide.InsertString(7, _T("DotD"));
|
m_combSide.SetCurSel(0);
|
}
|
|
|
void CChipInspectDlg::OnBnClickedButtonProcessInchip()
|
{
|
// TODO: ÔÚ´ËÌí¼Ó¿Ø¼þ֪ͨ´¦Àí³ÌÐò´úÂë
|
UpdateData(TRUE);
|
|
int nSide = m_combSide.GetCurSel();
|
DimensionDir eDir = (DimensionDir)nSide;
|
CInChipDotProcess *dot = new CInChipDotProcess(eDir);
|
|
Point2I ptStart, ptEnd;
|
ptStart.x = m_nMinX;
|
ptStart.y = 0;
|
ptEnd.x = m_nMaxX;
|
ptEnd.y = 1023;
|
dot->m_threshold = m_nEdgeChipThres;
|
dot->Execute(eDir, m_imageIndex, ptStart, ptEnd);
|
|
delete dot;
|
dot = NULL;
|
}
|