From ebcc1d53f14112363bbf539bcaf0202aadcdc9d7 Mon Sep 17 00:00:00 2001
From: C3032 <1057644574@qq.com>
Date: 星期一, 13 四月 2026 12:58:58 +0800
Subject: [PATCH] 2D取图计数功能完成

---
 LB_VisionProcesses/Processes/TyreCounter/TyreCounterProcessEdit.cs |  161 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 161 insertions(+), 0 deletions(-)

diff --git a/LB_VisionProcesses/Processes/TyreCounter/TyreCounterProcessEdit.cs b/LB_VisionProcesses/Processes/TyreCounter/TyreCounterProcessEdit.cs
new file mode 100644
index 0000000..e93c114
--- /dev/null
+++ b/LB_VisionProcesses/Processes/TyreCounter/TyreCounterProcessEdit.cs
@@ -0,0 +1,161 @@
+using LB_VisionProcesses.Alogrithms;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace LB_VisionProcesses.Processes
+{
+    /// <summary>
+    /// 杞儙璁℃暟宸ュ叿缂栬緫鍣�
+    /// </summary>
+    public partial class TyreCounterProcessEdit : TAlgorithmEdit
+    {
+        DataTable DataTableInputs = new DataTable();
+        DataTable DataTableOutputs = new DataTable();
+
+        public TyreCounterProcessEdit(TyreCounterProcess subject = null)
+        {
+            InitializeComponent();
+            if (subject == null)
+                subject = new TyreCounterProcess();
+
+            this.Subject = subject;
+        }
+
+        private void TyreCounterProcessEdit_Load(object sender, EventArgs e)
+        {
+            LoadParas();
+        }
+
+        /// <summary>
+        /// 鍔犺浇鍙傛暟
+        /// </summary>
+        public override void LoadParas()
+        {
+            if (Subject is TyreCounterProcess counter)
+            {
+                // 鍔犺浇閰嶇疆鍙傛暟
+                numericUpDownImagesPerTyre.Value = counter.ImagesPerTyre;
+                comboBoxJudgeRule.SelectedItem = counter.JudgeRule.ToString();
+                checkBoxAutoReset.Checked = counter.AutoReset;
+
+                // 鍔犺浇缁熻淇℃伅
+                UpdateStatistics();
+
+                // 缁戝畾杈撳叆鍙傛暟
+                DataTableInputs.Columns.Add("Key", typeof(string));
+                DataTableInputs.Columns.Add("Value", typeof(object));
+                DataTableInputs.Rows.Clear();
+
+                var inputs = new Dictionary<string, object>
+                {
+                    { "ImagesPerTyre", counter.ImagesPerTyre },
+                    { "JudgeRule", counter.JudgeRule.ToString() },
+                    { "AutoReset", counter.AutoReset }
+                };
+
+                foreach (var item in inputs)
+                    DataTableInputs.Rows.Add(item.Key, item.Value);
+
+                dataGridInputs.DataSource = DataTableInputs;
+
+                // 缁戝畾杈撳嚭鍙傛暟
+                DataTableOutputs.Columns.Add("Key", typeof(string));
+                DataTableOutputs.Columns.Add("Value", typeof(object));
+                DataTableOutputs.Rows.Clear();
+
+                var outputs = new Dictionary<string, object>
+                {
+                    { "CurrentTyreID", counter.CurrentTyreID },
+                    { "CurrentImageIndex", counter.CurrentImageIndex },
+                    { "IsTyreComplete", counter.IsTyreComplete },
+                    { "TyreResult", counter.TyreResult },
+                    { "TyreTotal", counter.TyreTotal },
+                    { "TyreOK", counter.TyreOK },
+                    { "TyreNG", counter.TyreNG },
+                    { "TyreRateOK", counter.TyreRateOK }
+                };
+
+                foreach (var item in outputs)
+                    DataTableOutputs.Rows.Add(item.Key, item.Value);
+
+                dataGridOutputs.DataSource = DataTableOutputs;
+
+                // 璁剧疆鐘舵�佹爮
+                lblResult.Text = $"缁撴灉: {(counter.Result ? "OK" : "NG")}";
+                lblResult.ForeColor = counter.Result ? Color.LightGreen : Color.LightCoral;
+                lblMsg.Text = counter.Msg;
+            }
+        }
+
+        /// <summary>
+        /// 鏇存柊缁熻淇℃伅鏄剧ず
+        /// </summary>
+        private void UpdateStatistics()
+        {
+            if (Subject is TyreCounterProcess counter)
+            {
+                txtCurrentTyreID.Text = counter.CurrentTyreID.ToString();
+                txtCurrentImageIndex.Text = $"{counter.CurrentImageIndex}/{counter.ImagesPerTyre}";
+                txtTyreTotal.Text = counter.TyreTotal.ToString();
+                txtTyreOK.Text = counter.TyreOK.ToString();
+                txtTyreNG.Text = counter.TyreNG.ToString();
+                txtTyreRateOK.Text = $"{counter.TyreRateOK:F2}%";
+            }
+        }
+
+        /// <summary>
+        /// 鏇存柊杈撳叆鍙傛暟
+        /// </summary>
+        public override void UpdataInputs()
+        {
+            if (Subject is TyreCounterProcess counter)
+            {
+                counter.ImagesPerTyre = (int)numericUpDownImagesPerTyre.Value;
+                counter.JudgeRule = (TyreJudgeRule)Enum.Parse(typeof(TyreJudgeRule), comboBoxJudgeRule.SelectedItem?.ToString() ?? "AnyNG");
+                counter.AutoReset = checkBoxAutoReset.Checked;
+
+                // 鏇存柊杈撳叆鍙傛暟琛�
+                Subject.Params.Inputs["ImagesPerTyre"] = counter.ImagesPerTyre;
+                Subject.Params.Inputs["JudgeRule"] = counter.JudgeRule.ToString();
+                Subject.Params.Inputs["AutoReset"] = counter.AutoReset;
+            }
+        }
+
+        private void btnSave_Click(object sender, EventArgs e)
+        {
+            UpdataInputs();
+            lblMsg.Text = "鍙傛暟宸蹭繚瀛�";
+            lblMsg.ForeColor = Color.LightGreen;
+        }
+
+        private void btnReset_Click(object sender, EventArgs e)
+        {
+            if (Subject is TyreCounterProcess counter)
+            {
+                counter.ResetTyreCount();
+                UpdateStatistics();
+                LoadParas();
+                lblMsg.Text = "璁℃暟鍣ㄥ凡閲嶇疆";
+                lblMsg.ForeColor = Color.LightGreen;
+            }
+        }
+
+        private void btnRun_Click(object sender, EventArgs e)
+        {
+            UpdataInputs();
+            Subject.Run();
+            UpdateStatistics();
+            LoadParas();
+            lblResult.Text = $"缁撴灉: {(Subject.Result ? "OK" : "NG")}";
+            lblResult.ForeColor = Subject.Result ? Color.LightGreen : Color.LightCoral;
+            lblMsg.Text = Subject.Msg;
+        }
+    }
+}

--
Gitblit v1.9.3