From ae0d9092bc828a5260c4f506c976c32b7bb2feab Mon Sep 17 00:00:00 2001
From: C3032 <C3032@BC3032>
Date: 星期六, 20 十二月 2025 14:11:59 +0800
Subject: [PATCH] 优化相机设置和异常处理逻辑
---
LB_VisionProcesses/Cameras/2DCameraForm.cs | 103 ++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 97 insertions(+), 6 deletions(-)
diff --git a/LB_VisionProcesses/Cameras/2DCameraForm.cs b/LB_VisionProcesses/Cameras/2DCameraForm.cs
index 958dada..252b28f 100644
--- a/LB_VisionProcesses/Cameras/2DCameraForm.cs
+++ b/LB_VisionProcesses/Cameras/2DCameraForm.cs
@@ -37,9 +37,9 @@
{
InitializeComponent();
//浼犲叆鐩告満鍙ユ焺鍚庣鐢ㄨ繛鎺�/鏂紑鎸夐敭
- this.btnOpen.Enabled = false;
- this.btnClose.Enabled = false;
- this.cmbBrand.Enabled = false;
+ //this.btnOpen.Enabled = false;
+ //this.btnClose.Enabled = false;
+ //this.cmbBrand.Enabled = false;
this.panel_Picture.Controls.Clear();
this.dicCameras = dicCameras;
@@ -203,6 +203,7 @@
int Index = cmbBrand.FindString(camera.Brand.ToString()); ;
cmbBrand.Text = camera.Brand.ToString();
cmbBrand.SelectedIndex = Index;
+ this.btnEdit.Enabled = true;
}
}
@@ -236,6 +237,7 @@
camera.ImageGrabbed -= GetImageBllComplete;
camera.ImageGrabbed += GetImageBllComplete;
MessageBox.Show(camera.SN + "鎵撳紑鎴愬姛");
+ this.btnEdit.Enabled = true;
}
}
else
@@ -282,6 +284,67 @@
{
if (camera == null)
return;
+
+ using (Form editForm = new Form())
+ {
+ editForm.Text = "楂樼骇鍙傛暟璁剧疆 - " + camera.SN;
+ editForm.Size = new System.Drawing.Size(400, 500);
+ editForm.StartPosition = FormStartPosition.CenterParent;
+ editForm.FormBorderStyle = FormBorderStyle.SizableToolWindow;
+
+ PropertyGrid pg = new PropertyGrid();
+ pg.Dock = DockStyle.Fill;
+ pg.SelectedObject = new CameraAdvancedSettings(camera);
+
+ editForm.Controls.Add(pg);
+ editForm.ShowDialog();
+ }
+ }
+
+ /// <summary>
+ /// 鐩告満楂樼骇璁剧疆鍖呰绫�
+ /// </summary>
+ public class CameraAdvancedSettings
+ {
+ private BaseCamera _camera;
+ public CameraAdvancedSettings(BaseCamera camera)
+ {
+ _camera = camera;
+ }
+
+ [System.ComponentModel.Category("瑙﹀彂璁剧疆"), System.ComponentModel.Description("瑙﹀彂婧�")]
+ public TriggerSource TriggerSource
+ {
+ get { _camera.GetTriggerMode(out _, out TriggerSource s); return s; }
+ set { _camera.GetTriggerMode(out TriggerMode m, out _); _camera.SetTriggerMode(m, value); }
+ }
+
+ [System.ComponentModel.Category("瑙﹀彂璁剧疆"), System.ComponentModel.Description("瑙﹀彂鏋佹��")]
+ public TriggerPolarity TriggerPolarity
+ {
+ get { _camera.GetTriggerPolarity(out TriggerPolarity p); return p; }
+ set { _camera.SetTriggerPolarity(value); }
+ }
+
+ [System.ComponentModel.Category("瑙﹀彂璁剧疆"), System.ComponentModel.Description("瑙﹀彂寤舵椂(us)")]
+ public double TriggerDelay
+ {
+ get { _camera.GetTriggerDelay(out double d); return d; }
+ set { _camera.SetTriggerDelay(value); }
+ }
+
+ [System.ComponentModel.Category("瑙﹀彂璁剧疆"), System.ComponentModel.Description("瑙﹀彂婊ゆ尝(us)")]
+ public double TriggerFilter
+ {
+ get { _camera.GetTriggerFliter(out double f); return f; }
+ set { _camera.SetTriggerFliter(value); }
+ }
+
+ [System.ComponentModel.Category("鍥惧儚璁剧疆"), System.ComponentModel.Description("鑷姩鐧藉钩琛�")]
+ public void AutoBalanceWhite()
+ {
+ _camera.AutoBalanceWhite();
+ }
}
/// <summary>
@@ -516,9 +579,25 @@
if (res == DialogResult.Yes) //淇濆瓨VPP
{
+ TriggerSource actualSource = TriggerSource.Line0;
+ TriggerPolarity polarity = TriggerPolarity.RisingEdge;
+ double delay = 0;
+ double filter = 0;
+
+ if (camera != null)
+ {
+ camera.GetTriggerMode(out _, out actualSource);
+ camera.GetTriggerPolarity(out polarity);
+ camera.GetTriggerDelay(out delay);
+ camera.GetTriggerFliter(out filter);
+ }
+
camConfig.Params.Inputs.Add("鐩告満SN", cmbSN.Text);
camConfig.Params.Inputs.Add("瑙﹀彂妯″紡", TriggerMode.On);
- camConfig.Params.Inputs.Add("瑙﹀彂鏂瑰紡", radioButtonSoft.Checked ? TriggerSource.Software : TriggerSource.Line0);
+ camConfig.Params.Inputs.Add("瑙﹀彂鏂瑰紡", radioButtonSoft.Checked ? TriggerSource.Software : actualSource);
+ camConfig.Params.Inputs.Add("瑙﹀彂鏋佹��", polarity);
+ camConfig.Params.Inputs.Add("瑙﹀彂寤舵椂", delay);
+ camConfig.Params.Inputs.Add("瑙﹀彂娑堟姈", filter);
camConfig.Params.Inputs.Add("鏄惁鏈湴鍙栧浘", ckbLocalTest.Checked);
camConfig.Params.Inputs.Add("鏈湴鍙栧浘璺緞", cmbImagesPath.Items.Cast<string>().ToList());
camConfig.Params.Inputs.Add("鏄惁澶辫触閲嶆柊鍙栧浘", ckbRegrab.Checked);
@@ -547,10 +626,11 @@
camera.ImageGrabbed -= GetImageBllComplete;
camera.StopGrabbing();
+ camera.GetTriggerMode(out _, out TriggerSource actualSource);
if (radioButtonSoft.Checked)
camera.SetTriggerMode(TriggerMode.On, TriggerSource.Software);
else
- camera.SetTriggerMode(TriggerMode.On, TriggerSource.Line0);
+ camera.SetTriggerMode(TriggerMode.On, actualSource);
camera.StartGrabbing();
}
@@ -620,10 +700,21 @@
if (camera == null)
return;
+
+ camera.GetTriggerMode(out _, out TriggerSource currentSource);
+
if (radioButtonSoft.Checked)
+ {
camera.SetTriggerMode(TriggerMode.On, TriggerSource.Software);
+ }
else
- camera.SetTriggerMode(TriggerMode.On, TriggerSource.Line0);
+ {
+ // 濡傛灉褰撳墠宸茬粡鏄‖浠惰Е鍙戞簮锛屽垯淇濇寔锛涘惁鍒欓粯璁ine0
+ if (currentSource == TriggerSource.Software)
+ camera.SetTriggerMode(TriggerMode.On, TriggerSource.Line0);
+ else
+ camera.SetTriggerMode(TriggerMode.On, currentSource);
+ }
}
System.Windows.Forms.ToolTip ToolTip = new System.Windows.Forms.ToolTip();
--
Gitblit v1.9.3