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 |   21 +++++++++++++++------
 1 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/src/Bro.UI.Device.Winform/MotionCard/CtrlMotionCardIOStatus.cs b/src/Bro.UI.Device.Winform/MotionCard/CtrlMotionCardIOStatus.cs
index 9a26301..e47edce 100644
--- a/src/Bro.UI.Device.Winform/MotionCard/CtrlMotionCardIOStatus.cs
+++ b/src/Bro.UI.Device.Winform/MotionCard/CtrlMotionCardIOStatus.cs
@@ -31,11 +31,10 @@
             get => Device as MotionCardBase;
         }
 
-        public CtrlMotionCardIOStatus(IDevice device, List<IOItem> monitorValues)
+        public CtrlMotionCardIOStatus(IDevice device)
         {
             InitializeComponent();
             Device = device;
-            _monitorValues = monitorValues;
             InitIOEvent();
         }
 
@@ -51,14 +50,15 @@
             }
         }
 
-        private void IoOut_DoubleClick(string desc, bool isOn)
+        private void IoOut_DoubleClick(string name, bool isOn)
         {
-            var index = Convert.ToInt16(desc.Substring(3));
-            MotionCard.WriteOutput(index, isOn ? IOValue.TRUE : IOValue.FALSE);
+            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)
@@ -67,6 +67,7 @@
                     if (ioInArray != null && ioInArray.Length == 1)
                     {
                         var ioIn = ioInArray[0] as IOIndicatorCtrl;
+
                         ioIn.IsOn = ioItem.Value == IOValue.TRUE;
                     }
                 }
@@ -76,7 +77,15 @@
                     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;
+                        }
                     }
                 }
             }

--
Gitblit v1.8.0