From 81480d62561dcb75a1fc968814ace1368fe5181b Mon Sep 17 00:00:00 2001 From: wells.liu <wells.liu@broconcentric.com> Date: 星期四, 16 七月 2020 11:57:08 +0800 Subject: [PATCH] Merge branch 'master' of http://gitblit.broconcentric.com:8088/r/M071 --- src/Bro.Common.Device/DeviceBase/MotionCardBase.cs | 82 ++++++++++++++++++++++++++++++++--------- 1 files changed, 64 insertions(+), 18 deletions(-) diff --git a/src/Bro.Common.Device/DeviceBase/MotionCardBase.cs b/src/Bro.Common.Device/DeviceBase/MotionCardBase.cs index 1ff6cd5..f5214fe 100644 --- a/src/Bro.Common.Device/DeviceBase/MotionCardBase.cs +++ b/src/Bro.Common.Device/DeviceBase/MotionCardBase.cs @@ -20,7 +20,26 @@ { 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); + } + + protected override void Start() + { + Task.Run(() => + { + Monitor(); + }); + } public abstract List<AxisInfo> GetCurrentAxisInfo(params string[] axisName); public abstract void Monitor(); public abstract ResponseMessage MoveToPoint(IOperationConfig opConfig); @@ -99,9 +118,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(bool isResumeMoving); + #endregion } public class MotionCardInitialConfigBase : InitialConfigBase, IMonitorConfig @@ -109,7 +140,7 @@ [Category("鏉垮崱閰嶇疆")] [DisplayName("鍗″彿")] [Description("CardNum锛氬崱鍙�")] - public int CardNum { get; set; } + public int CardNum { get; set; } = 1; [Category("鏉垮崱閰嶇疆")] [DisplayName("鍒濆閰嶇疆鏂囦欢璺緞")] @@ -151,6 +182,10 @@ [TypeConverter(typeof(CollectionCountConvert))] [Editor(typeof(ComplexCollectionEditor<IODefinition>), typeof(UITypeEditor))] public List<IODefinition> IODefinitionCollection { get; set; } = new List<IODefinition>(); + + [Category("IO閰嶇疆")] + [Description("true锛氳緭鍑哄彇鍙� false锛氳緭鍑轰笉鍙栧弽")] + public bool IsOutputReversed { get; set; } = true; #region IMonitorConfig [Category("鐩戝惉璁剧疆")] @@ -237,40 +272,51 @@ [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))] [Editor(typeof(MovingOpsCollectionEditor), typeof(UITypeEditor))] public List<MovingOption> MovingOps { get; set; } = new List<MovingOption>(); + + [Category("3.杩愬姩寤舵椂")] + [Description("鎿嶄綔鍓嶅欢鏃讹紝鍗曚綅ms")] + public int DelayBefore { get; set; } = 0; + + [Category("3.杩愬姩寤舵椂")] + [Description("鎿嶄綔鍚庡欢鏃讹紝鍗曚綅ms")] + public int DelayAfter { get; set; } = 0; public string MotionCardId = ""; @@ -378,13 +424,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 +457,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 +468,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