From ca718bf67886ef08cfd22599d22d458b610c02aa Mon Sep 17 00:00:00 2001
From: xcd <834800634@qq.com>
Date: 星期五, 10 七月 2020 18:34:43 +0800
Subject: [PATCH] 板卡添加轴状态和轴报警信息输出

---
 src/Bro.Common.Device/DeviceBase/MotionCardBase.cs |   61 ++++++++++++++++++++++--------
 1 files changed, 44 insertions(+), 17 deletions(-)

diff --git a/src/Bro.Common.Device/DeviceBase/MotionCardBase.cs b/src/Bro.Common.Device/DeviceBase/MotionCardBase.cs
index 1ff6cd5..4e539a0 100644
--- a/src/Bro.Common.Device/DeviceBase/MotionCardBase.cs
+++ b/src/Bro.Common.Device/DeviceBase/MotionCardBase.cs
@@ -20,6 +20,18 @@
     {
         public event Action<DateTime, string, IDevice, IMonitorSet> OnMonitorInvoke;
         public event Action<DateTime, IDevice, IWarningSet> OnMonitorAlarm;
+        public event Action<int, string> OnAxisAlarmRaised;
+        public event Action<int, int, int> OnAxisStatusChanged;
+
+        public void AxisAlarmRaised(int axisIndex, string msg)
+        {
+            OnAxisAlarmRaised?.Invoke(axisIndex, msg);
+        }
+
+        public void AxisStatusChanged(int axisIndex, int preStatus, int curStatus)
+        {
+            OnAxisStatusChanged?.Invoke(axisIndex, preStatus, curStatus);
+        }
 
         public abstract List<AxisInfo> GetCurrentAxisInfo(params string[] axisName);
         public abstract void Monitor();
@@ -99,9 +111,21 @@
         /// <summary>
         /// 杞寸殑杩愬姩鐘舵�佸��
         /// </summary>
-        public List<AxisMovingStatus> AxisMovingOptionValues { get; set; } = new List<AxisMovingStatus>();
+        public List<AxisMovingStatus> AxisStatusList { get; set; } = new List<AxisMovingStatus>();
 
         public abstract void WriteOutput(short index, IOValue value);
+
+        #region ImmediatePause
+        /// <summary>
+        /// 鍚姩绔嬪嵆鏆傚仠
+        /// </summary>
+        public abstract void SetImmediatePause();
+
+        /// <summary>
+        /// 鎭㈠绔嬪嵆鏆傚仠
+        /// </summary>
+        public abstract void ResetImmediatePause();
+        #endregion
     }
 
     public class MotionCardInitialConfigBase : InitialConfigBase, IMonitorConfig
@@ -237,35 +261,38 @@
     [Device("MotionOperationSet", "杩愬姩鎿嶄綔閰嶇疆鍩虹被", EnumHelper.DeviceAttributeType.OperationConfig)]
     public class MotionCardOperationSet : IComplexDisplay
     {
-        [Category("IO鎿嶄綔閰嶇疆")]
-        [DisplayName("IO棰勬鏌ュ畾涔夐泦鍚�")]
+        [Category("1.IO鎿嶄綔閰嶇疆")]
+        [DisplayName("1.IO棰勬鏌�")]
         [Description("IO棰勬鏌ュ畾涔夐泦鍚�")]
         [TypeConverter(typeof(CollectionCountConvert))]
         [Editor(typeof(IORefrenceItemCollectionEditor), typeof(UITypeEditor))]
         public List<IORefrenceItem> PreCheckIOCollection { get; set; } = new List<IORefrenceItem>();
 
-        [Category("IO鎿嶄綔閰嶇疆")]
+        [Category("1.IO鎿嶄綔閰嶇疆")]
         [Description("瓒呮椂璁剧疆锛屽崟浣嶏細ms")]
-        [DisplayName("IO棰勬鏌ヨ秴鏃�")]
+        [DisplayName("2.IO棰勬鏌ヨ秴鏃�")]
         public int PreCheckIOTimeout { get; set; } = 0;
 
-        [Category("IO鎿嶄綔閰嶇疆")]
-        [DisplayName("IO杈撳嚭瀹氫箟闆嗗悎")]
+        [Category("1.IO鎿嶄綔閰嶇疆")]
+        [DisplayName("3.IO杈撳嚭")]
         [Description("IO杈撳嚭瀹氫箟闆嗗悎")]
         [TypeConverter(typeof(CollectionCountConvert))]
+        [Editor(typeof(IORefrenceItemCollectionEditor), typeof(UITypeEditor))]
         public List<IORefrenceItem> IOOutputCollection { get; set; } = new List<IORefrenceItem>();
 
-        [Category("IO鎿嶄綔閰嶇疆")]
-        [DisplayName("IO纭瀹氫箟闆嗗悎")]
+        [Category("1.IO鎿嶄綔閰嶇疆")]
+        [DisplayName("4.IO杈撳嚭纭")]
         [Description("IO纭瀹氫箟闆嗗悎")]
         [TypeConverter(typeof(CollectionCountConvert))]
+        [Editor(typeof(IORefrenceItemCollectionEditor), typeof(UITypeEditor))]
         public List<IORefrenceItem> IOConfirmCollection { get; set; } = new List<IORefrenceItem>();
-        [Category("IO鎿嶄綔閰嶇疆")]
+
+        [Category("1.IO鎿嶄綔閰嶇疆")]
         [Description("瓒呮椂璁剧疆锛屽崟浣嶏細ms")]
-        [DisplayName("IO纭瓒呮椂")]
+        [DisplayName("5.IO杈撳嚭纭瓒呮椂")]
         public int IOConfirmTimeout { get; set; } = 0;
 
-        [Category("鏉垮崱杩愬姩閰嶇疆")]
+        [Category("2.鏉垮崱杩愬姩閰嶇疆")]
         [DisplayName("杩愬姩閰嶇疆闆嗗悎")]
         [Description("MovingOps锛氳繍鍔ㄩ厤缃泦鍚�")]
         [TypeConverter(typeof(CollectionCountConvert))]
@@ -378,13 +405,13 @@
             if (itemType == typeof(IORefrenceItem))
             {
                 IORefrenceItem item = new IORefrenceItem();
-                if ((this.Context.Instance is IOperationConfig opConfig) && !string.IsNullOrWhiteSpace(opConfig.DeviceId))
+                if (this.Context.Instance is MotionCardOperationSet set)
                 {
                     using (var scope = GlobalVar.Container.BeginLifetimeScope())
                     {
                         List<IDevice> deviceList = scope.Resolve<List<IDevice>>();
 
-                        var device = deviceList.FirstOrDefault(u => u.Id == opConfig.DeviceId);
+                        var device = deviceList.FirstOrDefault(u => u.Id == set.MotionCardId);
 
                         if (device != null && (device is MotionCardBase motionCard))
                         {
@@ -411,9 +438,9 @@
 
         public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
         {
-            if (context.Instance is IOperationConfig opConfig)
+            if (context.Instance is MotionCardOperationSet set)
             {
-                if (string.IsNullOrWhiteSpace(opConfig.DeviceId))
+                if (string.IsNullOrWhiteSpace(set.MotionCardId))
                 {
                     return base.EditValue(context, provider, value);
                 }
@@ -422,7 +449,7 @@
                 {
                     List<IDevice> deviceList = scope.Resolve<List<IDevice>>();
 
-                    var device = deviceList.FirstOrDefault(u => u.Id == opConfig.DeviceId);
+                    var device = deviceList.FirstOrDefault(u => u.Id == set.MotionCardId);
 
                     if (device == null)
                     {

--
Gitblit v1.8.0