From 8a3ab64a65da226636743be07c4bee63f50da25d Mon Sep 17 00:00:00 2001 From: patrick.xu <patrick.xu@broconcentric.com> Date: 星期六, 06 三月 2021 11:35:20 +0800 Subject: [PATCH] 1. 解决软件异常崩溃问题 --- src/Bro.UI.Device.Winform/MotionCard/CtrlMotionCardIOStatus.cs | 47 +++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 43 insertions(+), 4 deletions(-) diff --git a/src/Bro.UI.Device.Winform/MotionCard/CtrlMotionCardIOStatus.cs b/src/Bro.UI.Device.Winform/MotionCard/CtrlMotionCardIOStatus.cs index 13762cf..e47edce 100644 --- a/src/Bro.UI.Device.Winform/MotionCard/CtrlMotionCardIOStatus.cs +++ b/src/Bro.UI.Device.Winform/MotionCard/CtrlMotionCardIOStatus.cs @@ -10,6 +10,8 @@ using Bro.Common.Model; using Bro.UI.Model.Winform; using static Bro.Common.Helper.EnumHelper; +using Bro.Common.Interface; +using Bro.Common.Base; namespace Bro.UI.Device.Winform { @@ -20,17 +22,43 @@ public CtrlMotionCardIOStatus() { InitializeComponent(); + InitIOEvent(); + } + private IDevice Device { get; set; } + + protected MotionCardBase MotionCard + { + get => Device as MotionCardBase; } - - public CtrlMotionCardIOStatus(List<IOItem> monitorValues) + public CtrlMotionCardIOStatus(IDevice device) { InitializeComponent(); - _monitorValues = monitorValues; + Device = device; + InitIOEvent(); + } + + private void InitIOEvent() + { + foreach (var ctr in groupBoxIOOut.Controls) + { + if (ctr is IOIndicatorCtrl ioOut) + { + ioOut.Cursor = Cursors.Hand; + ioOut.OnIODoubleClick += IoOut_DoubleClick; + } + } + } + + private void IoOut_DoubleClick(string name, bool isOn) + { + var index = Convert.ToInt16(name.Substring(5)); + MotionCard.WriteOutput(index, isOn ? IOValue.FALSE : IOValue.TRUE); } private void RefreshIOStatus(object sender, EventArgs e) { + _monitorValues = MotionCard.MonitorValues; foreach (var ioItem in _monitorValues) { if (ioItem.IOType == Common.Helper.EnumHelper.IOType.INPUT) @@ -39,6 +67,7 @@ if (ioInArray != null && ioInArray.Length == 1) { var ioIn = ioInArray[0] as IOIndicatorCtrl; + ioIn.IsOn = ioItem.Value == IOValue.TRUE; } } @@ -48,10 +77,20 @@ if (ioOutArray != null && ioOutArray.Length == 1) { var ioOut = ioOutArray[0] as IOIndicatorCtrl; - ioOut.IsOn = ioItem.Value == IOValue.TRUE; + + if (MotionCard.IConfig.IsOutputReversed) + { + ioOut.IsOn = ioItem.Value == IOValue.TRUE; + } + else + { + ioOut.IsOn = ioItem.Value == IOValue.FALSE; + } } } } + + this.Invalidate(); } } } -- Gitblit v1.8.0