From c9fb3178dc1765a89d76d3bf559bab7f8f0f439c Mon Sep 17 00:00:00 2001 From: 1536884497@qq.com <1536884497@qq.com> Date: 星期二, 23 三月 2021 16:27:23 +0800 Subject: [PATCH] 增加盲线检测的ROI --- src/Bro.M071.Process/UI/M071_MainForm.cs | 168 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 162 insertions(+), 6 deletions(-) diff --git a/src/Bro.M071.Process/UI/M071_MainForm.cs b/src/Bro.M071.Process/UI/M071_MainForm.cs index efadaed..8849ca7 100644 --- a/src/Bro.M071.Process/UI/M071_MainForm.cs +++ b/src/Bro.M071.Process/UI/M071_MainForm.cs @@ -1,13 +1,16 @@ 锘縰sing Bro.Common.Base; using Bro.Common.Helper; using Bro.UI.Model.Winform; +using Bro.UI.Model.Winform.UI; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; +using System.IO; using System.Linq; using System.Text; +using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; using static Bro.Common.Helper.EnumHelper; @@ -21,6 +24,9 @@ M071Config Config => Process?.IConfig as M071Config; M071Process Process_M071 => Process as M071Process; + System.Threading.Timer _refreshUITimer = null; + + public M071_MainForm() { InitializeComponent(); @@ -33,6 +39,7 @@ tscEditLocation.Visible = tsmiShowEditor.Checked = false; + _refreshUITimer = new System.Threading.Timer(OnRefreshUI, null, -1, -1); this.Load += async (s, e) => { await Task.Delay(300); @@ -40,6 +47,12 @@ cvImage.SetScreenSize(); cvImage.OnElementChangedHandle -= CvImage_OnElementChangedHandle; cvImage.OnElementChangedHandle += CvImage_OnElementChangedHandle; + + //timer1.Enabled = true; + + btnReset.Text = $"澶嶄綅锛堥暱鎸墈Config.FullResetRequiredDuration}绉掑ぇ澶嶄綅锛�"; + + lblCT.Text = tsslError.Text = ""; }; } @@ -86,6 +99,8 @@ item.Tag = u.Id; lvMeasures.Items.Add(item); }); + + lblOperator.Text = string.IsNullOrWhiteSpace(Process_M071.OperatorCode) ? "NotLogin" : Process_M071.OperatorCode; })); } catch (Exception ex) @@ -108,11 +123,25 @@ Process_M071.OnFullResetDone -= Process_M071_FullResetDone; Process_M071.OnFullResetDone += Process_M071_FullResetDone; + Process_M071.OnResetDone -= Process_M071_ResetDone; + Process_M071.OnResetDone += Process_M071_ResetDone; + Config.PropertyChanged -= Config_PropertyChanged; Config.PropertyChanged += Config_PropertyChanged; Process_M071.OnElementUpdated -= Process_M071_OnElementUpdated; Process_M071.OnElementUpdated += Process_M071_OnElementUpdated; + + Process_M071.OnCheckHintUpload = OnCheckHintUpload; + Process_M071.OnOperatorLogin = OnOperatorLogin; + } + + private void Process_M071_ResetDone() + { + lblCT.BeginInvoke(new Action(() => + { + lblCT.Text = ""; + })); } private void Config_PropertyChanged(object sender, PropertyChangedEventArgs e) @@ -254,8 +283,31 @@ #endregion #region 鏍囩缁撴灉鏄剧ず + + private void OnRefreshUI(object state) + { + cvImage.Invoke(new Action(() => Refresh())); + } + private async void Process_M071_OnElementUpdated(Common.Interface.IShapeElement obj) { + //this.Invoke(new Action(() => + //{ + // if (obj is KeyIndicator keyIndicator) + // { + // var ele = cvImage.Elements.FirstOrDefault(u => u.ID == keyIndicator.ID); + + // //(ele as KeyIndicator).Text = keyIndicator.Text; + // //(ele as KeyIndicator).ResultState = keyIndicator.ResultState; + // if (ele != null) + // { + // ele = keyIndicator; + // } + + // this.Invalidate(); + // } + //})); + if (obj is KeyIndicator keyIndicator) { this.Invoke(new Action(() => @@ -265,7 +317,8 @@ (ele as KeyIndicator).Text = keyIndicator.Text; (ele as KeyIndicator).ResultState = keyIndicator.ResultState; - this.Invalidate(); + //this.Invalidate(); + _refreshUITimer.Change(1000, -1); })); } @@ -284,10 +337,18 @@ { _barcode += keyStr.ToUpper(); } + else if (keyStr.Length == 2 && keyStr.StartsWith("D")) + { + _barcode += keyStr.Substring(1).ToUpper(); + } + else if (keyStr.StartsWith("NumPad")) + { + _barcode += keyStr.Replace("NumPad", ""); + } if (e.KeyValue == 13) { - txtBarcode.Text = _barcode; + Process_M071.BarCode = txtBarcode.Text = _barcode; _barcode = ""; } @@ -299,7 +360,7 @@ private void txtBarcode_TextChanged(object sender, EventArgs e) { - Process_M071.BarCode = txtBarcode.Text.Trim(); + //Process_M071.BarCode = txtBarcode.Text.Trim(); } private void M071_MainForm_OnClearBarcode() @@ -337,7 +398,7 @@ btnStartMeasure.BackColor = lblMachineState.BackColor = Color.Lime; btnStartMeasure.ForeColor = lblMachineState.ForeColor = Color.Black; lblMachineState.Text = "灏辩华"; - + btnStartMeasure.Text = "寮�濮嬫祴閲�"; btnStartMeasure.Enabled = true; break; @@ -384,11 +445,17 @@ lblProductionState.ForeColor = Color.White; lblProductionState.Text = "OK"; } - else + else if (result == 0) { lblProductionState.BackColor = Color.Red; lblProductionState.ForeColor = Color.White; lblProductionState.Text = "NG"; + } + else + { + lblProductionState.BackColor = Color.White; + lblProductionState.ForeColor = Color.Red; + lblProductionState.Text = "NA"; } //btnStartMeasure.Text = "寮�濮嬫祴閲�"; @@ -466,7 +533,7 @@ Process_M071.Reset(null, null, null); } - Process_M071.ResetTimer.Change(1000 * 5, -1); + Process_M071.ResetTimer.Change(1000 * Config.FullResetRequiredDuration, -1); } private void btnReset_MouseUp(object sender, MouseEventArgs e) @@ -475,5 +542,94 @@ } #endregion + private void timer1_Tick(object sender, EventArgs e) + { + //cvImage.Refresh(); + } + + private void lblOperator_DoubleClick(object sender, EventArgs e) + { + InputWindow inputFrm = new InputWindow("璇疯緭鍏ユ搷浣滃憳宸ュ彿"); + if (inputFrm.ShowDialog() == DialogResult.OK) + { + Process_M071.OperatorCode = inputFrm.Input; + } + } + + private void OnOperatorLogin(string operatorCode) + { + this.Invoke(new Action(() => + { + lblOperator.Text = operatorCode; + })); + } + + private async void OnCheckHintUpload(string hintMsg, bool isAlarm) + { + await Task.Run(() => + { + this.Invoke(new Action(() => + { + if (!string.IsNullOrWhiteSpace(hintMsg)) + { + stStripHint.Visible = true; + tsslError.Text = hintMsg; + + tsslError.BackColor = isAlarm ? Color.Red : Color.Green; + } + else + { + stStripHint.Visible = false; + tsslError.Text = ""; + } + })); + }); + } + + bool isStart = true; + private void button1_Click(object sender, EventArgs e) + { + Task.Run(async () => + { + try + { + for (int j = 0; j < 10000; j++) + { + int i = 0; + + if (isStart) + { + cvImage.Elements.ToList().ForEach(ele => + { + if (ele is KeyIndicator indicator) + { + indicator.Text = ""; + indicator.ResultState = null; + } + }); + } + else + { + cvImage.Elements.ToList().ForEach(ele => + { + if (ele is KeyIndicator indicator) + { + indicator.Text = (i++).ToString(); + indicator.ResultState = true; + } + }); + } + isStart = !isStart; + cvImage.BeginInvoke(new Action(() => Refresh())); + LogAsync(DateTime.Now, $"UI Refresh {j}", ""); + await Task.Delay(300); + } + } + catch (Exception ex) + { + } + + }); + } } } -- Gitblit v1.8.0