From 30458c0bca8066d98ca901b5065832a44a7e970e Mon Sep 17 00:00:00 2001 From: wells.liu <wells.liu@broconcentric.com> Date: 星期四, 16 七月 2020 15:47:22 +0800 Subject: [PATCH] 测量结果 查询+导出功能 --- src/Bro.M071.Process/UI/M071_MainForm.cs | 262 +++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 186 insertions(+), 76 deletions(-) diff --git a/src/Bro.M071.Process/UI/M071_MainForm.cs b/src/Bro.M071.Process/UI/M071_MainForm.cs index 582a85a..efadaed 100644 --- a/src/Bro.M071.Process/UI/M071_MainForm.cs +++ b/src/Bro.M071.Process/UI/M071_MainForm.cs @@ -32,6 +32,15 @@ plImage.Controls.Add(cvImage); tscEditLocation.Visible = tsmiShowEditor.Checked = false; + + this.Load += async (s, e) => + { + await Task.Delay(300); + + cvImage.SetScreenSize(); + cvImage.OnElementChangedHandle -= CvImage_OnElementChangedHandle; + cvImage.OnElementChangedHandle += CvImage_OnElementChangedHandle; + }; } public override void OnProcessUpdated() @@ -46,32 +55,42 @@ try { - Bitmap image = (Bitmap)Image.FromFile(Config.BackgroundImagePath); - cvImage.LoadImage(image); + this.Invoke(new Action(() => + { + try + { + Bitmap image = (Bitmap)Image.FromFile(Config.BackgroundImagePath); + cvImage.LoadImage(image); + cvImage.SetScreenSize(); + } + catch (Exception ex) + { + LogAsync(new LogMsg(DateTime.Now, "杞藉叆鑳屾櫙鍥惧紓甯�", ex.Message)); + return; + } + + cvImage.Elements.Clear(); + lvMeasures.Items.Clear(); + + txtBarcode.Enabled = !Config.IsBarcodeManualInputBlocked; + + Config.MeasurementUnitCollection.ForEach(u => + { + if (!u.IsEnabled) + return; + + var ele = new KeyIndicator(u.Id, u.DisplayLocation); + cvImage.Elements.Add(ele); + + ListViewItem item = new ListViewItem(u.GetDisplayText()); + item.Tag = u.Id; + lvMeasures.Items.Add(item); + }); + })); } catch (Exception ex) { - LogAsync(new LogMsg(DateTime.Now, "杞藉叆鑳屾櫙鍥惧紓甯�", ex.Message)); - return; } - - cvImage.Elements.Clear(); - lvMeasures.Items.Clear(); - Config.MeasurementUnitCollection.ForEach(u => - { - if (!u.IsEnabled) - return; - - var ele = new KeyIndicator(u.Id, u.DisplayLocation); - cvImage.Elements.Add(ele); - - ListViewItem item = new ListViewItem(u.GetDisplayText()); - item.Tag = u.Id; - lvMeasures.Items.Add(item); - }); - - if (txtBarcode.IsHandleCreated) - txtBarcode.BeginInvoke(new Action(() => txtBarcode.ReadOnly = Config.IsBarcodeManulInputBlocked)); Process_M071.OnClearBarcode -= M071_MainForm_OnClearBarcode; Process_M071.OnClearBarcode += M071_MainForm_OnClearBarcode; @@ -88,6 +107,17 @@ Process_M071.OnFullResetDone -= Process_M071_FullResetDone; Process_M071.OnFullResetDone += Process_M071_FullResetDone; + + Config.PropertyChanged -= Config_PropertyChanged; + Config.PropertyChanged += Config_PropertyChanged; + + Process_M071.OnElementUpdated -= Process_M071_OnElementUpdated; + Process_M071.OnElementUpdated += Process_M071_OnElementUpdated; + } + + private void Config_PropertyChanged(object sender, PropertyChangedEventArgs e) + { + txtBarcode.Enabled = !Config.IsBarcodeManualInputBlocked; } #region 鍥剧墖鍖哄彸閿彍鍗� @@ -106,13 +136,69 @@ tscEditLocation.Visible = tsmiShowEditor.Checked; tscEditLocation.BringToFront(); } + + private void tsmiRefreshLabels_Click(object sender, EventArgs e) + { + cvImage.Elements.Clear(); + lvMeasures.Items.Clear(); + + Config.MeasurementUnitCollection.ForEach(u => + { + if (!u.IsEnabled) + return; + + var ele = new KeyIndicator(u.Id, u.DisplayLocation); + cvImage.Elements.Add(ele); + + ListViewItem item = new ListViewItem(u.GetDisplayText()); + item.Tag = u.Id; + lvMeasures.Items.Add(item); + }); + + this.Invalidate(); + } #endregion #region 鏍囩缂栬緫鍖� + private async void CvImage_OnElementChangedHandle(Common.Interface.IShapeElement ele) + { + this.Invoke(new Action(() => + { + if (ele is KeyIndicator indicator) + { + if (indicator.State == ElementState.Selected) + { + foreach (ListViewItem item in lvMeasures.Items) + { + if (item.Tag.ToString() == indicator.ID) + { + item.Selected = true; + + lvMeasures.EnsureVisible(item.Index); + break; + } + } + } + } + })); + + await Task.Delay(100); + } + private void lvMeasures_SelectedIndexChanged(object sender, EventArgs e) { if (lvMeasures.SelectedItems.Count <= 0) return; + + foreach (ListViewItem item in lvMeasures.Items) + { + item.BackColor = SystemColors.Control; + } + + foreach (ListViewItem item in lvMeasures.SelectedItems) + { + item.BackColor = Color.Orange; + } var ele = cvImage.Elements.FirstOrDefault(u => u.ID == lvMeasures.SelectedItems[0].Tag.ToString()); propGridKeyIndicator.SelectedObject = ele; @@ -157,12 +243,33 @@ if (lvMeasures.SelectedItems.Count <= 0) return; + cvImage.Elements.ToList().ForEach(u => u.State = ElementState.Normal); var ele = cvImage.Elements.FirstOrDefault(u => u.ID == lvMeasures.SelectedItems[0].Tag.ToString()); if (ele != null) { ele.State = ElementState.Selected; - cvImage.Invalidate(); + //cvImage.Invalidate(); } + } + #endregion + + #region 鏍囩缁撴灉鏄剧ず + private async void Process_M071_OnElementUpdated(Common.Interface.IShapeElement obj) + { + if (obj is KeyIndicator keyIndicator) + { + this.Invoke(new Action(() => + { + var ele = cvImage.Elements.FirstOrDefault(u => u.ID == keyIndicator.ID); + + (ele as KeyIndicator).Text = keyIndicator.Text; + (ele as KeyIndicator).ResultState = keyIndicator.ResultState; + + this.Invalidate(); + })); + } + + await Task.Delay(100); } #endregion @@ -204,46 +311,54 @@ #region 鏈哄彴鐘舵�� private async void M071_MainForm_MachineStateChanged(MachineState state) { - lblMachineState.BeginInvoke(new Action(() => + if (lblMachineState.IsHandleCreated) { - switch (state) + lblMachineState.Invoke(new Action(() => { - case MachineState.Alarm: - btnStartMeasure.BackColor = lblMachineState.BackColor = Color.Red; - btnStartMeasure.ForeColor = lblMachineState.ForeColor = Color.White; - lblMachineState.Text = "璀︽姤"; + switch (state) + { + case MachineState.Alarm: + btnStartMeasure.BackColor = lblMachineState.BackColor = Color.Red; + btnStartMeasure.ForeColor = lblMachineState.ForeColor = Color.White; + lblMachineState.Text = "璀︽姤"; - btnStartMeasure.Enabled = false; - break; - case MachineState.Pause: - btnStartMeasure.BackColor = lblMachineState.BackColor = Color.Yellow; - btnStartMeasure.ForeColor = lblMachineState.ForeColor = Color.Black; - lblMachineState.Text = "鏆傚仠"; + btnStartMeasure.Text = "寮�濮嬫祴閲�"; + btnStartMeasure.Enabled = false; + break; + case MachineState.Pause: + btnStartMeasure.BackColor = lblMachineState.BackColor = Color.Yellow; + btnStartMeasure.ForeColor = lblMachineState.ForeColor = Color.Black; + lblMachineState.Text = "鏆傚仠"; - //btnStartMeasure.Text = "鏆傚仠娴嬮噺"; - btnStartMeasure.Enabled = true; - break; - case MachineState.Ready: - btnStartMeasure.BackColor = lblMachineState.BackColor = Color.Lime; - btnStartMeasure.ForeColor = lblMachineState.ForeColor = Color.White; - lblMachineState.Text = "灏辩华"; + btnStartMeasure.Text = "缁х画娴嬮噺"; + btnStartMeasure.Enabled = true; + break; + case MachineState.Ready: + btnStartMeasure.BackColor = lblMachineState.BackColor = Color.Lime; + btnStartMeasure.ForeColor = lblMachineState.ForeColor = Color.Black; + lblMachineState.Text = "灏辩华"; + + btnStartMeasure.Text = "寮�濮嬫祴閲�"; + btnStartMeasure.Enabled = true; + break; + case MachineState.Running: + btnStartMeasure.BackColor = lblMachineState.BackColor = Color.Transparent; + btnStartMeasure.ForeColor = lblMachineState.ForeColor = Color.DarkGreen; + lblMachineState.Text = "杩愯"; - btnStartMeasure.Enabled = true; - break; - case MachineState.Running: - btnStartMeasure.BackColor = lblMachineState.BackColor = Color.Lime; - btnStartMeasure.ForeColor = lblMachineState.ForeColor = Color.DarkGreen; - lblMachineState.Text = "杩愯"; + btnStartMeasure.Text = "鏆傚仠娴嬮噺"; + btnStartMeasure.Enabled = true; + break; + case MachineState.Unknown: + btnStartMeasure.BackColor = lblMachineState.BackColor = SystemColors.Control; + btnStartMeasure.ForeColor = lblMachineState.ForeColor = SystemColors.ControlText; + lblMachineState.Text = "鏈煡"; - btnStartMeasure.Enabled = true; - break; - case MachineState.Unknown: - btnStartMeasure.BackColor = lblMachineState.BackColor = SystemColors.Control; - btnStartMeasure.ForeColor = lblMachineState.ForeColor = SystemColors.ControlText; - lblMachineState.Text = "鏈煡"; - break; - } - })); + btnStartMeasure.Enabled = false; + break; + } + })); + } await Task.Delay(100); } @@ -276,7 +391,7 @@ lblProductionState.Text = "NG"; } - btnStartMeasure.Text = "寮�濮嬫祴閲�"; + //btnStartMeasure.Text = "寮�濮嬫祴閲�"; })); await Task.Delay(100); } @@ -290,6 +405,15 @@ lblProductionState.Text = "娴嬭瘯涓�"; lblCT.Text = ""; + + cvImage.Elements.ToList().ForEach(e => + { + if (e is KeyIndicator indicator) + { + indicator.Text = ""; + indicator.ResultState = null; + } + }); })); await Task.Delay(100); } @@ -299,9 +423,6 @@ private async void btnStartMeasure_Click(object sender, EventArgs e) { - btnStartMeasure.Enabled = false; - bool isBreak = false; - if (btnStartMeasure.Text == "寮�濮嬫祴閲�") { await Task.Run(() => @@ -312,31 +433,19 @@ } catch (Exception ex) { - isBreak = true; - LogAsync(DateTime.Now, "娴佺▼寮傚父", ex.Message); Process_M071.ExceptionRaisedInMonitor(ex); - - btnStartMeasure.Text = "寮�濮嬫祴閲�"; - } }); - - if (!isBreak) - btnStartMeasure.Text = "鏆傚仠娴嬮噺"; } else if (btnStartMeasure.Text == "缁х画娴嬮噺") { - Process_M071.SwitchJobStatus(new OperationConfigBase() { InputPara = new List<int>() { 0 } }, null, null); - btnStartMeasure.Text = "鏆傚仠娴嬮噺"; + Process_M071.SwitchJobStatus(new OperationConfigBase() { InputPara = new List<int>() { 10 } }, null, null); } else { - Process_M071.SwitchJobStatus(new OperationConfigBase() { InputPara = new List<int>() { 1 } }, null, null); - btnStartMeasure.Text = "缁х画娴嬮噺"; + Process_M071.SwitchJobStatus(new OperationConfigBase() { InputPara = new List<int>() { 11 } }, null, null); } - - btnStartMeasure.Enabled = true; } #region 澶嶄綅鎿嶄綔 @@ -357,7 +466,7 @@ Process_M071.Reset(null, null, null); } - Process_M071.ResetTimer.Change(-1, 1000 * 5); + Process_M071.ResetTimer.Change(1000 * 5, -1); } private void btnReset_MouseUp(object sender, MouseEventArgs e) @@ -365,5 +474,6 @@ Process_M071.ResetTimer.Change(-1, -1); } #endregion + } } -- Gitblit v1.8.0