From 993f7a5e7075b1e66d307e2b300b1f7054895e1f Mon Sep 17 00:00:00 2001
From: C3032 <C3032@BC3032>
Date: 星期六, 20 十二月 2025 15:36:20 +0800
Subject: [PATCH] 增强相机界面和图像处理逻辑
---
LB_VisionProcesses/Cameras/HRCamera.cs | 31 ++++++++++-----
LB_SmartVision/Forms/Pages/CameraPage/CameraForm.cs | 2
LB_VisionProcesses/Cameras/2DCameraForm.cs | 31 ++++++++++++---
3 files changed, 46 insertions(+), 18 deletions(-)
diff --git a/LB_SmartVision/Forms/Pages/CameraPage/CameraForm.cs b/LB_SmartVision/Forms/Pages/CameraPage/CameraForm.cs
index 24c3194..bec33a9 100644
--- a/LB_SmartVision/Forms/Pages/CameraPage/CameraForm.cs
+++ b/LB_SmartVision/Forms/Pages/CameraPage/CameraForm.cs
@@ -43,7 +43,7 @@
this.Text = camera.SN;
//璁剧疆鍝佺墝
-
+ uiComboBoxBrand.Text = camera.Brand.ToString();
onlinePictureBox = new UserPictureBox(uiGroupBoxImage);
this.uiGroupBoxImage.Controls.Clear();
diff --git a/LB_VisionProcesses/Cameras/2DCameraForm.cs b/LB_VisionProcesses/Cameras/2DCameraForm.cs
index 252b28f..7081cd6 100644
--- a/LB_VisionProcesses/Cameras/2DCameraForm.cs
+++ b/LB_VisionProcesses/Cameras/2DCameraForm.cs
@@ -107,6 +107,12 @@
cmbSN.Text = SN;
cmbSN.SelectedIndex = Index;
+ // 濡傛灉娌℃壘鍒扮储寮曪紙鍙兘鏄柊澧炵殑锛夛紝鎵嬪姩瑙﹀彂涓�娆¢�昏緫浠ユ洿鏂癠I
+ if (Index == -1)
+ {
+ cmbSN_SelectedIndexChanged(null, null);
+ }
+
ckbLocalTest.Checked = Convert.ToBoolean(camConfig.Params.Inputs["鏄惁鏈湴鍙栧浘"].ToString());
ckbUpParams.Checked = Convert.ToBoolean(camConfig.Params.Inputs["鏄惁姣忔鍐欏叆鍙傛暟"].ToString());
ckbRegrab.Checked = Convert.ToBoolean(camConfig.Params.Inputs["鏄惁澶辫触閲嶆柊鍙栧浘"].ToString());
@@ -195,15 +201,26 @@
camera = dicCameras[cmbSN.Text];
//璇存槑鐩告満宸茬粡鍒濆鍖栨垚鍔�
- if (camera != null && camera.isGrabbing)
+ if (camera != null)
{
- camera.ImageGrabbed -= GetImageBllComplete;
- camera.ImageGrabbed += GetImageBllComplete;
+ int Index = cmbBrand.FindString(camera.Brand.ToString());
+ if (Index >= 0)
+ {
+ cmbBrand.Text = camera.Brand.ToString();
+ cmbBrand.SelectedIndex = Index;
+ }
- int Index = cmbBrand.FindString(camera.Brand.ToString()); ;
- cmbBrand.Text = camera.Brand.ToString();
- cmbBrand.SelectedIndex = Index;
- this.btnEdit.Enabled = true;
+ if (camera.isGrabbing)
+ {
+ camera.ImageGrabbed -= GetImageBllComplete;
+ camera.ImageGrabbed += GetImageBllComplete;
+ this.btnEdit.Enabled = true;
+ }
+ // 濡傛灉鐩告満瀛樺湪浜庡瓧鍏镐腑锛岃鏄庢槸宸茶繛鎺ョ殑璁惧锛屽厑璁哥紪杈�
+ else if (dicCameras != null && dicCameras.ContainsKey(camera.SN))
+ {
+ this.btnEdit.Enabled = true;
+ }
}
}
diff --git a/LB_VisionProcesses/Cameras/HRCamera.cs b/LB_VisionProcesses/Cameras/HRCamera.cs
index 8c12123..f707aca 100644
--- a/LB_VisionProcesses/Cameras/HRCamera.cs
+++ b/LB_VisionProcesses/Cameras/HRCamera.cs
@@ -858,29 +858,38 @@
/// </summary>
private void GrabThreadProc()
{
- IMVDefine.IMV_Frame frame = new IMVDefine.IMV_Frame();
-
while (_threadRunning)
{
+ IMVDefine.IMV_Frame frame = new IMVDefine.IMV_Frame();
try
{
// 鑾峰彇鍥惧儚甯�
- int result = _camera.IMV_GetFrame(ref frame, 100);
+ int result = _camera.IMV_GetFrame(ref frame, 1000);
if (result == IMVDefine.IMV_OK)
{
// 澶勭悊鍥惧儚甯�
ProcessFrame(frame);
}
- else if (result != 0x80000001) // 瓒呮椂閿欒浠g爜
+ else
{
- // 闈炶秴鏃堕敊璇�
- System.Diagnostics.Debug.WriteLine($"鑾峰彇鍥惧儚甯уけ璐ワ紝閿欒鐮侊細{result}");
+ // 鍗充娇鑾峰彇澶辫触锛屼篃灏濊瘯閲婃斁甯э紝闃叉SDK鍐呴儴缂撳瓨娉勯湶
+ // 娉ㄦ剰锛歠rame鏄瘡娆℃柊寤虹殑锛屽鏋淕etFrame娌″~鍏咃紝杩欓噷閲婃斁搴旇鏄畨鍏ㄧ殑锛堣SDK瀹炵幇鑰屽畾锛�
+ var tempFrame = frame;
+ _camera.IMV_ReleaseFrame(ref tempFrame);
+
+ if ((uint)result != 0x80000001 && result != -119 && result != -102) // 瓒呮椂閿欒浠g爜
+ {
+ // 闈炶秴鏃堕敊璇�
+ System.Diagnostics.Debug.WriteLine($"鑾峰彇鍥惧儚甯уけ璐ワ紝閿欒鐮侊細{result}");
+ Thread.Sleep(10); // 鍑洪敊鏃剁◢浣滅瓑寰�
+ }
}
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine($"閲囬泦绾跨▼寮傚父锛歿ex.Message}");
+ Thread.Sleep(10);
}
Thread.Sleep(1);
@@ -907,15 +916,17 @@
// 鏇存柊鍥炶皟鍥惧儚
CallBackImg = bitmap;
}
-
- // 閲婃斁甯�
- var tempFrame = frame;
- _camera.IMV_ReleaseFrame(ref tempFrame);
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine($"澶勭悊鍥惧儚甯уけ璐ワ細{ex.Message}");
}
+ finally
+ {
+ // 纭繚鏃犺濡備綍閮介噴鏀惧抚锛岄槻姝㈢紦瀛樺崰婊�
+ var tempFrame = frame;
+ _camera.IMV_ReleaseFrame(ref tempFrame);
+ }
}
/// <summary>
--
Gitblit v1.9.3