From 2379434200219132ee252f12d47a1e5efd160f42 Mon Sep 17 00:00:00 2001
From: mrDarker <mr.darker@163.com>
Date: 星期三, 06 八月 2025 15:32:44 +0800
Subject: [PATCH] 1. 实时扫描界面新添两个相机(侧面检)

---
 EdgeInspector_App/View/ViewMain_LiveCam.h   |    8 +-
 EdgeInspector_App/View/FrameImg.cpp         |    6 +
 EdgeInspector_App/EdgeInspector_App.rc      |    0 
 EdgeInspector_App/Define/Global_Define.h    |    2 
 EdgeInspector_App/View/ViewMain_LiveCam.cpp |  172 +++++++++++++++++++-----------------------
 EdgeInspector_App/MainFrm.cpp               |   25 +++---
 EdgeInspector_App/resource.h                |    8 +
 7 files changed, 107 insertions(+), 114 deletions(-)

diff --git a/EdgeInspector_App/Define/Global_Define.h b/EdgeInspector_App/Define/Global_Define.h
index 11f2cbe..ff34171 100644
--- a/EdgeInspector_App/Define/Global_Define.h
+++ b/EdgeInspector_App/Define/Global_Define.h
@@ -14,7 +14,7 @@
 #define UM_UPDATE_RECIPE							WM_USER + 5
 #define	UM_SEND_MESSAGE_MAIN_DLG					WM_USER + 6
 
-#define	MAX_CAMERA_COUNT			4
+#define	MAX_CAMERA_COUNT			6
 #define MAX_SCAN_COUNT				2
 #define MAX_DIMENSION_COUNT			12
 #define MAX_STAGE_HAND_COUNT		2
diff --git a/EdgeInspector_App/EdgeInspector_App.rc b/EdgeInspector_App/EdgeInspector_App.rc
index 14866ad..c061963 100644
--- a/EdgeInspector_App/EdgeInspector_App.rc
+++ b/EdgeInspector_App/EdgeInspector_App.rc
Binary files differ
diff --git a/EdgeInspector_App/MainFrm.cpp b/EdgeInspector_App/MainFrm.cpp
index 9ffc2e9..c80f5fc 100644
--- a/EdgeInspector_App/MainFrm.cpp
+++ b/EdgeInspector_App/MainFrm.cpp
@@ -550,20 +550,18 @@
 
 BOOL CMainFrame::IV2M_SetLiveGrabCommand(DimensionDir eDim,BOOL bStop)
 {
-	if (IsScanNow())
-	{
+	if (IsScanNow()) {
 		g_pLog->DisplayMessage(_T("Doing Inspection"));
 		return TRUE;
 	}
 
 	// 4/13 MiniLED
-	if(eDim < DIMENSION_A || eDim > DIMENSION_D)
+	if (eDim < DIMENSION_A || eDim > DIMENSION_D_RIP) {
 		return FALSE;
+	}
 
 	g_pLog->DisplayMessage(_T("Live Cam %d Start : Main"),(int)eDim);	
-
 	BOOL bRet = SetLiveGrabCommand(eDim,bStop);
-
 	g_pLog->DisplayMessage(_T("Live Cam %d End : Main"),(int)eDim);
 
 	return bRet;
@@ -571,16 +569,18 @@
 
 LPBYTE CMainFrame::IV2M_GetGrabBufferByDimension(DimensionDir eDim,int iVline)
 {
-	// 	if(IsScanNow())
-	// 	{
-	// 		g_pLog->DisplayMessage(_T("Doing Inspection"));
-	// 		return NULL;
-	// 	}	
+	//if (IsScanNow()) {
+	//	g_pLog->DisplayMessage(_T("Doing Inspection"));
+	//	return NULL;
+	//}
 
-	if(eDim < DIMENSION_A || eDim > DIMENSION_D_DN)
+	if (eDim < DIMENSION_A || eDim > DIMENSION_D_RIP) {
 		return NULL;
-	if(iVline < 0)
+	}
+
+	if (iVline < 0) {
 		return NULL;
+	}
 
 	return GetGrabBuffer(eDim,iVline);
 }
@@ -612,7 +612,6 @@
 #ifndef _DEBUG
 		SetSlashText(GLOBAL_DEFINE::emShow, _T(""), RGB(0,0,0));
 #endif
-
 		SetSlashText(GLOBAL_DEFINE::emText, _T("Image Loading Start"), RGB(0,0,0));
 
 		if(iSide > -1)
diff --git a/EdgeInspector_App/View/FrameImg.cpp b/EdgeInspector_App/View/FrameImg.cpp
index f836b31..fc051ef 100644
--- a/EdgeInspector_App/View/FrameImg.cpp
+++ b/EdgeInspector_App/View/FrameImg.cpp
@@ -9,7 +9,11 @@
 #include "EdgeInspector_App.h"
 #include "Global_Define.h"
 
-const TCHAR* PANEL_SIDE_NAME[] = {_T("A_TOP"), _T("B_TOP"), _T("C_TOP"), _T("D_TOP"),_T("A_BOT"), _T("B_BOT"), _T("C_BOT"), _T("D_BOT")};
+const TCHAR* PANEL_SIDE_NAME[] = {
+	_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("A RIP"), _T("B RIP"), _T("C RIP"), _T("D RIP")
+};
 
 // CFrameImg
 IMPLEMENT_DYNAMIC(CFrameImg, CStatic)
diff --git a/EdgeInspector_App/View/ViewMain_LiveCam.cpp b/EdgeInspector_App/View/ViewMain_LiveCam.cpp
index d3b6ac5..9348880 100644
--- a/EdgeInspector_App/View/ViewMain_LiveCam.cpp
+++ b/EdgeInspector_App/View/ViewMain_LiveCam.cpp
@@ -17,8 +17,7 @@
 	m_IV2M = NULL;
 	m_pGlassData = NULL;
 	m_pHardware = NULL;
-	for(int i=0;i<MAX_CAMERA_COUNT;i++)
-	{
+	for (int i = 0; i < MAX_CAMERA_COUNT; i++) {
 		m_dZoom[i] = 1;
 	}
 }
@@ -29,16 +28,18 @@
 
 void CViewMain_LiveCam::DoDataExchange(CDataExchange* pDX)
 {
-	DDX_Control(pDX, IDC_SCROLLBAR1			, m_ctrlScrollH[0]);
-	DDX_Control(pDX, IDC_SCROLLBAR2			, m_ctrlScrollH[1]);
-	DDX_Control(pDX, IDC_SCROLLBAR3			, m_ctrlScrollH[2]);
-	DDX_Control(pDX, IDC_SCROLLBAR4			, m_ctrlScrollH[3]);
+	DDX_Control(pDX, IDC_SCROLLBAR1, m_ctrlScrollH[0]);
+	DDX_Control(pDX, IDC_SCROLLBAR2, m_ctrlScrollH[1]);
+	DDX_Control(pDX, IDC_SCROLLBAR3, m_ctrlScrollH[2]);
+	DDX_Control(pDX, IDC_SCROLLBAR4, m_ctrlScrollH[3]);
+	DDX_Control(pDX, IDC_SCROLLBAR5, m_ctrlScrollH[4]);
+	DDX_Control(pDX, IDC_SCROLLBAR6, m_ctrlScrollH[5]);
 
 	CDialogEx::DoDataExchange(pDX);
 }
 		
 BEGIN_MESSAGE_MAP(CViewMain_LiveCam, CDialogEx)
-	ON_MESSAGE(WM_LIVE_IMG_UPDATE	, OnLiveImgUpDate)
+	ON_MESSAGE(WM_LIVE_IMG_UPDATE, OnLiveImgUpDate)
 	ON_WM_HSCROLL()
 	ON_WM_TIMER()
 	ON_WM_MOUSEWHEEL()	
@@ -55,10 +56,8 @@
 // CViewLiveCam 鐨嬬煫鐦� 璐稿簻鎵佹稘鑱績.
 int  CViewMain_LiveCam::GetIndex(int nSide)
 {
-	int  nIndex = 0;
-
-	if(m_pHardware != NULL)
-	{
+	int nIndex = 0;
+	if(m_pHardware != NULL) {
 		nIndex = m_pHardware->GetCameraIndexToDimension((DimensionDir)nSide);
 	}
 
@@ -69,17 +68,23 @@
 {
 	m_pHardware = pHW;
 
-	int nSide,i;
-	LPBYTE		plpBuf = NULL;
-	for(i = 0 ; i < 4 ; i++)
-	{
+	int nSide, i;
+	LPBYTE plpBuf = NULL;
+	for(i = 0 ; i < 6 ; i++) {
 		nSide = LiveGetSideIdx(i);
 
 		m_frameImg[i].SetSide(nSide);
 
 		plpBuf = NULL;
-		if(m_IV2M != NULL)
-			plpBuf = m_IV2M->IV2M_GetGrabBufferByDimension((DimensionDir)nSide,0);
+		if (m_IV2M != NULL) {
+			plpBuf = m_IV2M->IV2M_GetGrabBufferByDimension((DimensionDir)nSide, 0);
+		}
+
+		CCameraSettings* pCamera = m_pHardware->GetCameraSettings(i, 0);
+		if (pCamera != nullptr) {
+			m_frameImg[i].SetImgSize(pCamera->m_FrameSize.cx, pCamera->m_FrameSize.cy);
+		}
+
 		m_frameImg[i].SetImage(plpBuf);
 		m_frameImg[i].SetGlassData(m_pGlassData);	
 	}
@@ -89,21 +94,19 @@
 {	
 	UpdateData(FALSE);
 
-	CRect rc[4];
-	int i =0;
-
-
+	CRect rc[6];
 	GetDlgItem(IDC_STATIC_CAM1)->GetWindowRect(rc[0]);
 	GetDlgItem(IDC_STATIC_CAM2)->GetWindowRect(rc[1]);
 	GetDlgItem(IDC_STATIC_CAM3)->GetWindowRect(rc[2]);
 	GetDlgItem(IDC_STATIC_CAM4)->GetWindowRect(rc[3]);
+	GetDlgItem(IDC_STATIC_CAM5)->GetWindowRect(rc[4]);
+	GetDlgItem(IDC_STATIC_CAM6)->GetWindowRect(rc[5]);
 		
-	for(i = 0 ; i < 4 ; i++)
-	{
-		ScreenToClient(rc[i]);		
+	for (int i = 0; i < 6; i++) {
+		ScreenToClient(rc[i]);
 		m_frameImg[i].InitBitMap();
-		
-		m_frameImg[i].Create(NULL,NULL,WS_VISIBLE | WS_CHILD,rc[i],this,0);			
+
+		m_frameImg[i].Create(NULL, NULL, WS_VISIBLE | WS_CHILD, rc[i], this, 0);
 
 		m_dZoom[i] = 1;
 		m_frameImg[i].SetZommMode(m_dZoom[i]);
@@ -116,28 +119,25 @@
 
 int CViewMain_LiveCam::LiveGetSideIdx(int nViewIndex)
 {
-	if(m_pHardware == NULL)
+	if (m_pHardware == nullptr) {
 		return 0;
-		
-	CCameraSettings *pCamera = NULL;
-
-	pCamera = m_pHardware->GetCameraSettings(nViewIndex,0);
-	if(pCamera == NULL)
+	}
+	
+	CCameraSettings* pCamera = m_pHardware->GetCameraSettings(nViewIndex, 0);
+	if (pCamera == nullptr) {
 		return 0;
+	}
 
 	return (int)pCamera->m_eDimension;
 }
 
 BOOL CViewMain_LiveCam::PreTranslateMessage(MSG* pMsg)
 {
-	if( pMsg->message == WM_KEYDOWN )
-	{
-		if(pMsg->wParam == VK_RETURN
-			|| pMsg->wParam == VK_ESCAPE )
-		{
+	if( pMsg->message == WM_KEYDOWN ) {
+		if(pMsg->wParam == VK_RETURN || pMsg->wParam == VK_ESCAPE) {
 			::TranslateMessage(pMsg);
 			::DispatchMessage(pMsg);
-			return TRUE;                    // DO NOT process further
+			return TRUE;
 		}
 	}
 
@@ -149,17 +149,17 @@
 	OnBnClickedBtnStop();
 	
 	int nDisplayFrame = 0;
-	if(m_nRdoSignal == 0)
-	{
+	if(m_nRdoSignal == 0) {
 		nDisplayFrame = 20;
 	}	
 
-	if(m_IV2M != NULL)
-	{
-		m_IV2M->IV2M_SetLiveGrabCommand((DimensionDir)LiveGetSideIdx(0),FALSE);
-		m_IV2M->IV2M_SetLiveGrabCommand((DimensionDir)LiveGetSideIdx(1),FALSE);
-		m_IV2M->IV2M_SetLiveGrabCommand((DimensionDir)LiveGetSideIdx(2),FALSE);
-		m_IV2M->IV2M_SetLiveGrabCommand((DimensionDir)LiveGetSideIdx(3),FALSE);
+	if(m_IV2M != NULL) {
+		m_IV2M->IV2M_SetLiveGrabCommand((DimensionDir)LiveGetSideIdx(0), FALSE);
+		m_IV2M->IV2M_SetLiveGrabCommand((DimensionDir)LiveGetSideIdx(1), FALSE);
+		m_IV2M->IV2M_SetLiveGrabCommand((DimensionDir)LiveGetSideIdx(2), FALSE);
+		m_IV2M->IV2M_SetLiveGrabCommand((DimensionDir)LiveGetSideIdx(3), FALSE);
+		m_IV2M->IV2M_SetLiveGrabCommand((DimensionDir)LiveGetSideIdx(4), FALSE);
+		m_IV2M->IV2M_SetLiveGrabCommand((DimensionDir)LiveGetSideIdx(5), FALSE);
 	}
 
 	SetTimer(1,100,NULL);	
@@ -167,8 +167,7 @@
 
 void CViewMain_LiveCam::OnTimer(UINT_PTR nIDEvent)
 {
-	for(int i = 0 ; i < 4 ; i++)
-	{
+	for(int i = 0 ; i < 6 ; i++) {
 		m_frameImg[i].ViewUpdate();
 	}
 
@@ -177,12 +176,13 @@
 
 void CViewMain_LiveCam::OnBnClickedBtnStop()
 {
-	if(m_IV2M != NULL)
-	{
-		m_IV2M->IV2M_SetLiveGrabCommand((DimensionDir)LiveGetSideIdx(0),TRUE);
-		m_IV2M->IV2M_SetLiveGrabCommand((DimensionDir)LiveGetSideIdx(1),TRUE);
-		m_IV2M->IV2M_SetLiveGrabCommand((DimensionDir)LiveGetSideIdx(2),TRUE);
-		m_IV2M->IV2M_SetLiveGrabCommand((DimensionDir)LiveGetSideIdx(3),TRUE);
+	if(m_IV2M != NULL) {
+		m_IV2M->IV2M_SetLiveGrabCommand((DimensionDir)LiveGetSideIdx(0), TRUE);
+		m_IV2M->IV2M_SetLiveGrabCommand((DimensionDir)LiveGetSideIdx(1), TRUE);
+		m_IV2M->IV2M_SetLiveGrabCommand((DimensionDir)LiveGetSideIdx(2), TRUE);
+		m_IV2M->IV2M_SetLiveGrabCommand((DimensionDir)LiveGetSideIdx(3), TRUE);
+		m_IV2M->IV2M_SetLiveGrabCommand((DimensionDir)LiveGetSideIdx(4), TRUE);
+		m_IV2M->IV2M_SetLiveGrabCommand((DimensionDir)LiveGetSideIdx(5), TRUE);
 	}
 	
 	KillTimer(1);
@@ -193,30 +193,29 @@
 	// TODO: 鍜墎淇� 鐨嬬煫鐦� 璐稿簻鎵� 鍐呴潧鐢� 鐪犲晩 妫�/鑲氱话 鎵佸く钄奸槕 榫嬪厤閽﹁仾淇�.
 
 	int nIndex;
-
-	if(pScrollBar->m_hWnd		== m_ctrlScrollH[0].m_hWnd)
-	{
+	if(pScrollBar->m_hWnd		== m_ctrlScrollH[0].m_hWnd) {
 		nIndex = 0;
 	}
-	else if(pScrollBar->m_hWnd	== m_ctrlScrollH[1].m_hWnd)
-	{
+	else if(pScrollBar->m_hWnd	== m_ctrlScrollH[1].m_hWnd) {
 		nIndex = 1;
 	}
-	else if(pScrollBar->m_hWnd	== m_ctrlScrollH[2].m_hWnd)
-	{
+	else if(pScrollBar->m_hWnd	== m_ctrlScrollH[2].m_hWnd) {
 		nIndex = 2;
 	}
-	else if(pScrollBar->m_hWnd	== m_ctrlScrollH[3].m_hWnd)
-	{
+	else if(pScrollBar->m_hWnd	== m_ctrlScrollH[3].m_hWnd) {
 		nIndex = 3;
 	}
-
-
-	if(nIndex != -1)
-	{
+	else if (pScrollBar->m_hWnd == m_ctrlScrollH[4].m_hWnd) {
+		nIndex = 4;
+	}
+	else if (pScrollBar->m_hWnd == m_ctrlScrollH[5].m_hWnd) {
+		nIndex = 5;
+	}
+	
+	if(nIndex != -1) {
 		SCROLLINFO si;
-		si.fMask=SIF_ALL;
-		m_ctrlScrollH[nIndex].GetScrollInfo(&si,SIF_ALL);
+		si.fMask = SIF_ALL;
+		m_ctrlScrollH[nIndex].GetScrollInfo(&si, SIF_ALL);
 
 		switch(nSBCode)
 		{
@@ -244,41 +243,34 @@
 
 		m_frameImg[nIndex].m_ptOrg.x = si.nPos;
 		
-		PostMessage(WM_LIVE_IMG_UPDATE,NULL,nIndex);
-
+		PostMessage(WM_LIVE_IMG_UPDATE, NULL, nIndex);
 	}
 	CDialogEx::OnHScroll(nSBCode, nPos, pScrollBar);
 }
 
 void CViewMain_LiveCam::InitScrollInfo(int nCam /*= -1*/)
 {
-	int i =0;
+	int i = 0;
 	SCROLLINFO scrollInfoH;
-
 	scrollInfoH.cbSize		= sizeof(SCROLLINFO);
 	scrollInfoH.fMask		= SIF_ALL;
 	scrollInfoH.nMin		= 1;
 	scrollInfoH.nPos		= 1;
 	scrollInfoH.nTrackPos	= 64;
-
-
 	scrollInfoH.nMax	= IMAGE_WIDTH;	
 
-	if(nCam == -1)
-	{
-		for(i = 0 ; i < 4 ; i++)
-		{
+	if(nCam == -1) {
+		for(i = 0 ; i < 6 ; i++) {
 			double dZoom = m_frameImg[i].GetZoomData();
-			scrollInfoH.nPage	= (int)(m_frameImg[i].m_WndRect.Width() / dZoom);
+			scrollInfoH.nPage = (int)(m_frameImg[i].m_WndRect.Width() / dZoom);
 
 			m_ctrlScrollH[i].SetScrollPos(0);
 			m_ctrlScrollH[i].SetScrollInfo(&scrollInfoH);
 		}
 	}
-	else
-	{
+	else {
 		double dZoom = m_frameImg[nCam].GetZoomData();
-		scrollInfoH.nPage	= (int)(m_frameImg[nCam].m_WndRect.Width() / dZoom);
+		scrollInfoH.nPage = (int)(m_frameImg[nCam].m_WndRect.Width() / dZoom);
 
 		m_ctrlScrollH[nCam].SetScrollPos(0);
 		m_ctrlScrollH[nCam].SetScrollInfo(&scrollInfoH);
@@ -288,7 +280,6 @@
 void CViewMain_LiveCam::OnBnClickedRdoSignal1()
 {
 	m_nRdoSignal = 0;
-
 	OnBnClickedBtnStop();
 }
 
@@ -299,8 +290,6 @@
 	OnBnClickedBtnStop();
 }
 
-
-
 void CViewMain_LiveCam::OnBnClickedBtnCamSnap()
 {
 	OnBnClickedBtnStop();
@@ -309,9 +298,7 @@
 LRESULT CViewMain_LiveCam::OnLiveImgUpDate(WPARAM wParam, LPARAM lParam)
 {
 	int nIndex  = int(lParam);	
-
 	m_frameImg[nIndex].ViewUpdate();
-
 	return 0;
 }
 
@@ -361,17 +348,14 @@
 
 void CViewMain_LiveCam::UpdateZoom(int nIndex)
 {
-	if(nIndex == -1)
-	{
-		for(int i = 0; i < MAX_CAMERA_COUNT;i++)
-		{
+	if(nIndex == -1) {
+		for(int i = 0; i < MAX_CAMERA_COUNT;i++) {
 			m_frameImg[i].SetZommMode(m_dZoom[i]);		
 			InitScrollInfo(-1);
 			m_frameImg[i].Invalidate(FALSE);
 		}	
 	}
-	else
-	{
+	else {
 		m_frameImg[nIndex].SetZommMode(m_dZoom[nIndex]);		
 		InitScrollInfo(nIndex);
 		m_frameImg[nIndex].Invalidate(FALSE);
diff --git a/EdgeInspector_App/View/ViewMain_LiveCam.h b/EdgeInspector_App/View/ViewMain_LiveCam.h
index d541afe..2a9c686 100644
--- a/EdgeInspector_App/View/ViewMain_LiveCam.h
+++ b/EdgeInspector_App/View/ViewMain_LiveCam.h
@@ -45,11 +45,11 @@
 	void			UpdateZoom(int nIndex);
 
 protected:
-	CFrameImg		m_frameImg[4];
-	CScrollBar		m_ctrlScrollH[4];	
+	CFrameImg				m_frameImg[6];
+	CScrollBar				m_ctrlScrollH[6];	
 	CHardwareSettings		*m_pHardware;
 	CGlass_Data				*m_pGlassData;
 	IViewInterface2Parent	*m_IV2M;
-	double			m_dZoom[MAX_CAMERA_COUNT];
-	int				m_nRdoSignal;
+	double					m_dZoom[MAX_CAMERA_COUNT];
+	int						m_nRdoSignal;
 };
diff --git a/EdgeInspector_App/resource.h b/EdgeInspector_App/resource.h
index c6d9a99..8f0eff7 100644
--- a/EdgeInspector_App/resource.h
+++ b/EdgeInspector_App/resource.h
@@ -446,6 +446,12 @@
 #define IDC_RDO_SIGNAL1                 1181
 #define IDC_CHECK_USE_SAVE_ALL_DMP      1181
 #define IDC_RDO_SIGNAL2                 1182
+#define IDC_STATIC_CAM5                 1183
+#define IDC_STATIC_APP_SIDE5            1184
+#define IDC_SCROLLBAR5                  1185
+#define IDC_STATIC_CAM6                 1186
+#define IDC_STATIC_APP_SIDE6            1187
+#define IDC_SCROLLBAR6                  1188
 #define IDC_NEWPPID_NAME_TITLE          1201
 #define IDC_EDIT_PPIDNEW_NAME           1202
 #define IDC_BUTTON_LINK                 1203
@@ -587,7 +593,7 @@
 // 
 #ifdef APSTUDIO_INVOKED
 #ifndef APSTUDIO_READONLY_SYMBOLS
-#define _APS_NEXT_RESOURCE_VALUE        328
+#define _APS_NEXT_RESOURCE_VALUE        329
 #define _APS_NEXT_COMMAND_VALUE         32771
 #define _APS_NEXT_CONTROL_VALUE         1071
 #define _APS_NEXT_SYMED_VALUE           310

--
Gitblit v1.9.3