From c2da3f2d26079c9efba3961ef091a325d21d1c86 Mon Sep 17 00:00:00 2001
From: mrDarker <mr.darker@163.com>
Date: 星期三, 06 八月 2025 11:45:07 +0800
Subject: [PATCH] 1. 添加侧面检相机 2. 优化硬件配置中相机相关的功能
---
EdgeInspector_App/Recipe/HardwareSettings.h | 14 +-
EdgeInspector_App/View/ViewMain_HWSetting.cpp | 27 +++-
EdgeInspector_App/Define/Global_Define.h | 48 +++++----
EdgeInspector_App/Recipe/HardwareSettings.cpp | 181 +++++++++++++++++-------------------
4 files changed, 138 insertions(+), 132 deletions(-)
diff --git a/EdgeInspector_App/Define/Global_Define.h b/EdgeInspector_App/Define/Global_Define.h
index 20d9aac..11f2cbe 100644
--- a/EdgeInspector_App/Define/Global_Define.h
+++ b/EdgeInspector_App/Define/Global_Define.h
@@ -16,7 +16,7 @@
#define MAX_CAMERA_COUNT 4
#define MAX_SCAN_COUNT 2
-#define MAX_DIMENSION_COUNT 8
+#define MAX_DIMENSION_COUNT 12
#define MAX_STAGE_HAND_COUNT 2
#define MAX_FRAM_COUNT 200
@@ -44,7 +44,7 @@
#define MAX_PANEL_SIDE 4 // 鎼� 鑽�
#define UPDN_TYPE 2 // 鎯戠獚 闉嶆崬 涔愮话鐗堝揩 2 绐嶅敱鐖� 涔愮话鐗堝揩 1
-#define MAX_SIDE_COUNT 8
+#define MAX_SIDE_COUNT 12
#define MAX_CORNER_DIMENSION_MEASURE_COUNT 5
#define MAX_SIDE_DIMENSION_MEASURE_COUNT 16 // 寮ユ帾 Frame 鑽� 鐖舵��
@@ -88,7 +88,23 @@
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 DimensionDir {
+ DIMENSION_A=0,
+ DIMENSION_B,
+ DIMENSION_C,
+ DIMENSION_D,
+ DIMENSION_A_DN,
+ DIMENSION_B_DN,
+ DIMENSION_C_DN,
+ DIMENSION_D_DN,
+ DIMENSION_A_RIP,
+ DIMENSION_B_RIP,
+ DIMENSION_C_RIP,
+ DIMENSION_D_RIP,
+ 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};
@@ -101,29 +117,19 @@
enum Init_View_Command {VIEW_RECIPE=0,VIEW_SCANIMAGE};
};
-static CString g_SideName[] =
+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("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"),
_T("Unknown")
};
-static char g_cSideName[9][256] =
+static char g_cSideName[][256] =
{
- "A Top",
- "B Top",
- "C Top",
- "D Top",
- "A Bot",
- "B Bot",
- "C Bot",
- "D Bot",
+ "A Top", "B Top", "C Top", "D Top",
+ "A Bot", "B Bot", "C Bot", "D Bot",
+ "A RIP", "B RIP", "C RIP", "D RIP",
"Unknown"
};
diff --git a/EdgeInspector_App/Recipe/HardwareSettings.cpp b/EdgeInspector_App/Recipe/HardwareSettings.cpp
index e7f9f00..4cfde21 100644
--- a/EdgeInspector_App/Recipe/HardwareSettings.cpp
+++ b/EdgeInspector_App/Recipe/HardwareSettings.cpp
@@ -1138,84 +1138,97 @@
BOOL CHardwareSettings::SetCameraCount(int nCameraCount,int nScanCount)
{
- CCameraSettings *ptmpSet = NULL;
- int nBackCamCnt = 0,nBackScanCnt = 0;
- int iLoop;
-
- if(m_pCameraSettings != NULL)
- {
- if((m_nCameraCount*m_nScanCount) > 0)
- {
- ptmpSet = new CCameraSettings[m_nCameraCount*m_nScanCount];
-
- for(iLoop=0;iLoop<m_nCameraCount*m_nScanCount;iLoop++)
- {
- ptmpSet[iLoop] = m_pCameraSettings[iLoop];
- }
- nBackCamCnt = m_nCameraCount;
- nBackScanCnt = m_nScanCount;
- }
- delete[] m_pCameraSettings, m_pCameraSettings=NULL;
- }
-
- m_nCameraCount = nCameraCount;
- m_nScanCount = nScanCount;
-
- if(m_nCameraCount <= 0 || m_nScanCount <= 0)
+ if (nCameraCount <= 0 || nScanCount <= 0) {
return FALSE;
+ }
- m_pCameraSettings = new CCameraSettings[m_nCameraCount*m_nScanCount];
+ // 鍏堜繚瀛樻棫鐨勭浉鏈哄拰鎵弿鏁�
+ static int nOldCameraCount = m_nCameraCount;
+ static int nOldScanCount = m_nScanCount;
- int iCam,iScan;
-
- iLoop=0;
- for(iCam=0;iCam<m_nCameraCount;iCam++)
- {
- for(iScan=0;iScan<m_nScanCount;iScan++)
- {
- m_pCameraSettings[iLoop].m_iCamera = iCam;
- m_pCameraSettings[iLoop].m_iScan = iScan;
- iLoop++;
+ // 淇濆瓨鏃ц缃暟鎹�
+ CCameraSettings* pOldSettings = nullptr;
+ if (m_pCameraSettings != nullptr && nOldCameraCount > 0 && nOldScanCount > 0)
+ {
+ pOldSettings = new CCameraSettings[nOldCameraCount * nOldScanCount];
+ for (int i = 0; i < nOldCameraCount * nOldScanCount; ++i) {
+ pOldSettings[i] = m_pCameraSettings[i];
}
}
- if(ptmpSet != NULL)
- {
- for(iLoop=0;iLoop<nBackCamCnt*nBackScanCnt;iLoop++)
- {
- SetCameraSettings(&ptmpSet[iLoop]);
- }
- delete[] ptmpSet, ptmpSet=NULL;
+ // 鏇存柊鎴愬憳鍙橀噺
+ m_nCameraCount = nCameraCount;
+ m_nScanCount = nScanCount;
+
+ // 閲嶆柊鍒嗛厤鏂扮粨鏋�
+ int nNewCount = m_nCameraCount * m_nScanCount;
+ int nOldCount = nOldCameraCount * nOldScanCount;
+ if (m_pCameraSettings != nullptr) {
+ delete[] m_pCameraSettings;
+ m_pCameraSettings = nullptr;
}
+ m_pCameraSettings = new CCameraSettings[m_nCameraCount * m_nScanCount];
+
+ // 鍒濆鍖栨柊缁撴瀯
+ int iIndex = 0;
+ for (int iCam = 0; iCam < m_nCameraCount; ++iCam) {
+ for (int iScan = 0; iScan < m_nScanCount; ++iScan, ++iIndex) {
+ m_pCameraSettings[iIndex].m_iCamera = iCam;
+ m_pCameraSettings[iIndex].m_iScan = iScan;
+ }
+ }
+
+ // 鎷疯礉鍥炴棫璁剧疆
+ if (pOldSettings != nullptr) {
+ for (int iCam = 0; iCam < nOldCameraCount; ++iCam) {
+ for (int iScan = 0; iScan < nOldScanCount; ++iScan) {
+ if (iCam < m_nCameraCount && iScan < m_nScanCount) {
+ int nNewIndex = iCam * m_nScanCount + iScan;
+ int nOldIndex = iCam * nOldScanCount + iScan;
+
+ if (nNewIndex < nNewCount && nOldIndex < nOldCount)
+ {
+ SetCameraSettings(&pOldSettings[nOldIndex]);
+ }
+ }
+ }
+ }
+ delete[] pOldSettings;
+ }
+
+ // 鏇存柊鏃х殑鐩告満鍜屾壂鎻忔暟
+ nOldCameraCount = m_nCameraCount;
+ nOldScanCount = m_nScanCount;
return TRUE;
}
-CCameraSettings *CHardwareSettings::GetCameraSettings(int iCamera,int iScan)
+CCameraSettings* CHardwareSettings::GetCameraSettings(int iCamera,int iScan)
{
- if(iCamera >= m_nCameraCount || iScan >= m_nScanCount
- || m_nCameraCount <= 0 || m_nScanCount <= 0)
- return NULL;
-
- for(int iLoop=0;iLoop<m_nCameraCount*m_nScanCount;iLoop++)
- {
- if(m_pCameraSettings[iLoop].m_iCamera == iCamera && m_pCameraSettings[iLoop].m_iScan == iScan)
- return &m_pCameraSettings[iLoop];
+ if (nullptr == m_pCameraSettings || iCamera < 0 || iScan < 0) {
+ return nullptr;
}
- return NULL;
+ if (iCamera >= m_nCameraCount || iScan >= m_nScanCount) {
+ return nullptr;
+ }
+
+ int nIndex = iCamera * m_nScanCount + iScan;
+ return &m_pCameraSettings[nIndex];
}
BOOL CHardwareSettings::SetCameraSettings(CCameraSettings *pCamera)
{
- if(pCamera == NULL || m_nCameraCount <= 0 || m_nScanCount <= 0)
+ if (pCamera == nullptr || m_pCameraSettings == nullptr) {
return FALSE;
+ }
- CCameraSettings *pOrgCam = GetCameraSettings(pCamera->m_iCamera,pCamera->m_iScan);
- if(pOrgCam == NULL)
+ CCameraSettings* pTarget = GetCameraSettings(pCamera->m_iCamera, pCamera->m_iScan);
+ if (pTarget == nullptr) {
return FALSE;
+ }
- *pOrgCam = *pCamera;
+ *pTarget = *pCamera;
return TRUE;
}
@@ -1985,61 +1998,39 @@
return TRUE;
}
-
int CHardwareSettings::GetScanToDimension(DimensionDir eDir)
{
- int iScan,iFindScan;
- int iCam;
- CCameraSettings *pCamera;
-
- iFindScan = -1;
- for(iCam=0;iCam<GetCameraCount();iCam++)
- {
- for(iScan=0;iScan<GetScanCount();iScan++)
- {
- pCamera = GetCameraSettings(iCam,iScan);
- if(pCamera == NULL)
- continue;
-
- if(pCamera->m_eDimension == eDir)
- {
- iFindScan = iScan;
- break;
+ for (int iCam = 0; iCam < GetCameraCount(); ++iCam) {
+ for (int iScan = 0; iScan < GetScanCount(); ++iScan) {
+ CCameraSettings* pCamera = GetCameraSettings(iCam, iScan);
+ if (pCamera != nullptr && pCamera->m_eDimension == eDir) {
+ return iScan;
}
}
-
- if(iFindScan != -1)
- break;
}
- return iFindScan;
+ return -1;
}
-CAMERA_SCANDIR CHardwareSettings::GetScanToScanDir(int iCam,int iScan)
+CAMERA_SCANDIR CHardwareSettings::GetScanToScanDir(int iCam, int iScan)
{
- CCameraSettings *pCamera;
-
- pCamera = GetCameraSettings(iCam,iScan);
- if(pCamera == NULL)
+ CCameraSettings *pCamera = GetCameraSettings(iCam, iScan);
+ if (pCamera == nullptr) {
return SCANGLASS_NONE;
+ }
return pCamera->m_eScanDir;
}
int CHardwareSettings::GetCameraIndexToDimension(DimensionDir eDir)
{
- CCameraSettings *pCamera;
- int iCam,iScan;
+ if (m_pCameraSettings == nullptr) {
+ return -1;
+ }
- for(iCam=0;iCam<GetCameraCount();iCam++)
- {
- for(iScan=0;iScan<GetScanCount();iScan++)
- {
- pCamera = GetCameraSettings(iCam,iScan);
- if(pCamera == NULL)
- continue;
-
- if(pCamera->m_eDimension == eDir)
- {
+ for (int iCam = 0; iCam < GetCameraCount(); ++iCam) {
+ for (int iScan = 0; iScan < GetScanCount(); ++iScan) {
+ CCameraSettings* pCamera = GetCameraSettings(iCam, iScan);
+ if (pCamera && pCamera->m_eDimension == eDir) {
return iCam;
}
}
diff --git a/EdgeInspector_App/Recipe/HardwareSettings.h b/EdgeInspector_App/Recipe/HardwareSettings.h
index afb57c3..051ad0f 100644
--- a/EdgeInspector_App/Recipe/HardwareSettings.h
+++ b/EdgeInspector_App/Recipe/HardwareSettings.h
@@ -156,15 +156,15 @@
// Camera
public:
- int GetCameraCount(){return m_nCameraCount;}
- int GetScanCount(){return m_nScanCount;}
- BOOL SetCameraCount(int nCameraCount,int nScanCount);
- CCameraSettings *GetCameraSettings(){return m_pCameraSettings;}
- CCameraSettings *GetCameraSettings(int iCamera,int iScan);
- BOOL SetCameraSettings(CCameraSettings *pCamera);
+ int GetCameraCount() { return m_nCameraCount; }
+ int GetScanCount() { return m_nScanCount; }
+ BOOL SetCameraCount(int nCameraCount, int nScanCount);
+ CCameraSettings* GetCameraSettings() { return m_pCameraSettings; }
+ CCameraSettings* GetCameraSettings(int iCamera, int iScan);
+ BOOL SetCameraSettings(CCameraSettings* pCamera);
int GetScanToDimension(DimensionDir eDir);
- CAMERA_SCANDIR GetScanToScanDir(int iCam,int iScan);
+ CAMERA_SCANDIR GetScanToScanDir(int iCam, int iScan);
int GetCameraIndexToDimension(DimensionDir eDir);
// PLC
diff --git a/EdgeInspector_App/View/ViewMain_HWSetting.cpp b/EdgeInspector_App/View/ViewMain_HWSetting.cpp
index 888f978..f289452 100644
--- a/EdgeInspector_App/View/ViewMain_HWSetting.cpp
+++ b/EdgeInspector_App/View/ViewMain_HWSetting.cpp
@@ -375,7 +375,12 @@
CString str;
const TCHAR* SET_CAMERA_DIR[] = {_T("Top"),_T("Bottom")};
const TCHAR* SET_INS_DIR[] = {_T("Long"),_T("Short")};
- const TCHAR* SET_INS_DIMENSION[] = {_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* SET_INS_DIMENSION[] = {
+ _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")
+ };
+
CStringArray arrDir,arrInsDir,arrDimension;
CGridCellCombo *pCell;
@@ -384,7 +389,7 @@
arrDir.Add(SET_CAMERA_DIR[i]);
arrInsDir.Add(SET_INS_DIR[i]);
}
- for(i=0;i<8;i++)
+ for(i=0;i<12;i++)
{
arrDimension.Add(SET_INS_DIMENSION[i]);
}
@@ -447,13 +452,17 @@
switch(pCamera->m_eDimension)
{
case DIMENSION_A: str.Format(_T("%s"),SET_INS_DIMENSION[0]); break;
- case DIMENSION_B: str.Format(_T("%s"),SET_INS_DIMENSION[1]); break;
- case DIMENSION_C: str.Format(_T("%s"),SET_INS_DIMENSION[2]); break;
- case DIMENSION_D: str.Format(_T("%s"),SET_INS_DIMENSION[3]); break;
- case DIMENSION_A_DN: str.Format(_T("%s"),SET_INS_DIMENSION[4]); break;
- case DIMENSION_B_DN: str.Format(_T("%s"),SET_INS_DIMENSION[5]); break;
- case DIMENSION_C_DN: str.Format(_T("%s"),SET_INS_DIMENSION[6]); break;
- case DIMENSION_D_DN: str.Format(_T("%s"),SET_INS_DIMENSION[7]); break;
+ case DIMENSION_B: str.Format(_T("%s"),SET_INS_DIMENSION[1]); break;
+ case DIMENSION_C: str.Format(_T("%s"),SET_INS_DIMENSION[2]); break;
+ case DIMENSION_D: str.Format(_T("%s"),SET_INS_DIMENSION[3]); break;
+ case DIMENSION_A_DN: str.Format(_T("%s"),SET_INS_DIMENSION[4]); break;
+ case DIMENSION_B_DN: str.Format(_T("%s"),SET_INS_DIMENSION[5]); break;
+ case DIMENSION_C_DN: str.Format(_T("%s"),SET_INS_DIMENSION[6]); break;
+ case DIMENSION_D_DN: str.Format(_T("%s"),SET_INS_DIMENSION[7]); break;
+ case DIMENSION_A_RIP: str.Format(_T("%s"), SET_INS_DIMENSION[8]); break;
+ case DIMENSION_B_RIP: str.Format(_T("%s"), SET_INS_DIMENSION[9]); break;
+ case DIMENSION_C_RIP: str.Format(_T("%s"), SET_INS_DIMENSION[10]); break;
+ case DIMENSION_D_RIP: str.Format(_T("%s"), SET_INS_DIMENSION[11]); break;
default: str.Format(_T("%s"),_T("No")); break;
}
m_CameraGrid.SetItemText(iRow,iCol,str);
--
Gitblit v1.9.3