From 1491846b4736bc2e79604086acfd8544aa3ba384 Mon Sep 17 00:00:00 2001 From: wells.liu <wells.liu@broconcentric.com> Date: 星期一, 07 九月 2020 12:09:46 +0800 Subject: [PATCH] Merge branch 'master' of http://gitblit.broconcentric.com:8088/r/M071 --- src/Bro.Device.GTSCard/GTSCardConfig.cs | 606 ------------------------------------------------------ 1 files changed, 7 insertions(+), 599 deletions(-) diff --git a/src/Bro.Device.GTSCard/GTSCardConfig.cs b/src/Bro.Device.GTSCard/GTSCardConfig.cs index 5c843a4..570b849 100644 --- a/src/Bro.Device.GTSCard/GTSCardConfig.cs +++ b/src/Bro.Device.GTSCard/GTSCardConfig.cs @@ -1,618 +1,26 @@ 锘縰sing Bro.Common.Base; using Bro.Common.Helper; using Bro.Common.Interface; -using Bro.Common.Model; -using Newtonsoft.Json; -using System; -using System.Collections.Generic; -using System.Collections.ObjectModel; +using Bro.UI.Device.Winform; using System.ComponentModel; -using System.Configuration; -using System.Drawing.Design; -using System.Linq; -using System.Threading; -using static Bro.Common.Helper.EnumHelper; namespace Bro.Device.GTSCard { [Device("GTSCard", "鍥洪珮鏉垮崱", EnumHelper.DeviceAttributeType.OperationConfig)] - public class GTSCardOperationConfig : OperationConfigBase, IComplexDisplay + public class GTSCardOperationConfig : MotionCardOperationConfigBase { - [Category("鏉垮崱杩愬姩閰嶇疆")] - [DisplayName("杩愬姩閰嶇疆闆嗗悎")] - [Description("MovingOps锛氳繍鍔ㄩ厤缃泦鍚�")] - [TypeConverter(typeof(CollectionCountConvert))] - [Editor(typeof(ComplexCollectionEditor<MovingOption>), typeof(UITypeEditor))] - public ObservableCollection<MovingOption> MovingOps { get; set; } = new ObservableCollection<MovingOption>(); - - public string GetDisplayText() - { - return MovingOps.Count() == 0 ? "--" : string.Join(";", MovingOps.Select(m => m.GetDisplayText())); - } } - [Device("GTSCard", "鍥洪珮鏉垮崱", EnumHelper.DeviceAttributeType.OperationConfig)] - public class GTSCardInitialConfig : InitialConfigBase, IMonitorConfig + [Device("GTSCard", "鍥洪珮鏉垮崱", EnumHelper.DeviceAttributeType.InitialConfig)] + public class GTSCardInitialConfig : MotionCardInitialConfigBase { - [Category("鏉垮崱閰嶇疆")] - [DisplayName("鍗″彿")] - [Description("CardNum锛氬崱鍙�")] - public int CardNum { get; set; } - - [Category("鏉垮崱閰嶇疆")] - [DisplayName("鍒濆閰嶇疆鏂囦欢璺緞")] - [Description("InitialConfigFilePath锛氬垵濮嬮厤缃枃浠惰矾寰�")] - [Editor(typeof(FileDialogEditor), typeof(UITypeEditor))] - public string InitialConfigFilePath { get; set; } - - [Category("杞撮厤缃�")] - [DisplayName("杞存暟閲�")] - [Description("AxisNum锛氳酱鏁伴噺")] - public int AxisNum { get; set; } = 2; - - [Category("杞撮厤缃�")] - [DisplayName("杞撮厤缃俊鎭泦鍚�")] - [Description("AxisSettings锛氳酱閰嶇疆淇℃伅闆嗗悎")] - [TypeConverter(typeof(CollectionCountConvert))] - [Editor(typeof(ComplexCollectionEditor<AxisSetting>), typeof(UITypeEditor))] - public List<AxisSetting> AxisSettings { get; set; } = new List<AxisSetting>(); - - [Category("杞撮厤缃�")] - [DisplayName("杞撮�熷害姣旂巼")] - [Description("AxisVelocityRatio锛氳酱閫熷害姣旂巼")] - public double AxisVelocityRatio { get; set; } = 1; - - [Category("寤舵椂閰嶇疆")] - [DisplayName("鍔ㄤ綔瀹屾垚鍚庡欢杩�")] - [Description("ActionAfterDelay锛氬姩浣滃畬鎴愬悗寤惰繜")] - public int ActionAfterDelay { get; set; } = 100; - - [Category("璀︽姤閰嶇疆")] - [Description("WarningSetCollection锛氳鎶ラ厤缃垪琛�")] - [DisplayName("璀︽姤閰嶇疆")] - [TypeConverter(typeof(CollectionCountConvert))] - [Editor(typeof(WarningSetsEditor), typeof(UITypeEditor))] - public List<IWarningSet> WarningSetCollection { get; set; } = new List<IWarningSet>(); - - #region IMonitorConfig - [Category("鐩戝惉璁剧疆")] - [Description("MonitorSetCollection锛氱洃鍚搷浣滈厤缃泦鍚�")] - [DisplayName("鐩戝惉閰嶇疆")] - [TypeConverter(typeof(CollectionCountConvert))] - [Editor(typeof(ComplexCollectionEditor<MotionCardMonitorSet>), typeof(UITypeEditor))] - public List<IMonitorSet> MonitorSetCollection { get; set; } = new List<IMonitorSet>(); - - [Category("鐩戝惉璁剧疆")] - [Description("true锛氬惎鍔ㄧ洃鍚� false锛氬叧闂洃鍚�")] - [DisplayName("鐩戝惉鍚敤")] - public bool IsEnableMonitor { get; set; } = true; - - [Category("鐩戝惉璁剧疆")] - [Description("鎵弿闂撮殧鏃堕棿锛屽崟浣嶏細ms")] - [DisplayName("鎵弿闂撮殧")] - public int MonitorInterval { get; set; } = 10; - - [Category("鐩戝惉璁剧疆")] - [Description("瓒呮椂璁剧疆锛屽崟浣嶏細ms")] - [DisplayName("鐩戝惉瓒呮椂")] - public int MonitorTimeout { get; set; } = 500; - - //[Category("浜嬩欢鍦板潃璁剧疆")] - //[Description("浜嬩欢寮�濮嬪湴鍧�锛孭LC鐨勫疄闄呭瘎瀛樺櫒鍦板潃銆傚崄杩涘埗锛屼笉鍖呭惈鍔熻兘鐮併��")] - //[DisplayName("鐩戝惉寮�濮嬪湴鍧�")] - //public int EventStartAddress { get; set; } = 8000; - - //[Category("浜嬩欢鍦板潃璁剧疆")] - //[Description("浜嬩欢鍦板潃闀垮害锛屾渶澶ч暱搴�128")] - //[DisplayName("鐩戝惉闀垮害")] - //public int EventLength { get; set; } = 120; - - public List<IMonitorSet> GetAllMonitorSet() - { - WarningSetCollection.ForEach(m => m.Source = this.Name); - - MonitorSetCollection.ForEach(m => m.SourceDevice = this.Id); - return MonitorSetCollection; - } - #endregion - - //#region IMotion Related - //[Category("杩愬姩閰嶇疆")] - //[Description("杩愬姩杞寸姸鎬侀泦鍚�")] - //[DisplayName("杩愬姩杞寸姸鎬侀泦鍚�")] - //[TypeConverter(typeof(CollectionCountConvert))] - //[Editor(typeof(ComplexCollectionEditor<PLCMotionDefinition_State>), typeof(UITypeEditor))] - //public List<PLCMotionDefinition_State> MotionStateCollection { get; set; } = new List<PLCMotionDefinition_State>(); - //#endregion } - /// <summary> - /// 杞撮厤缃� - /// </summary> - public class AxisSetting : IComplexDisplay + [Device("GTSCard", "鍥洪珮鏉垮崱", EnumHelper.DeviceAttributeType.RunCtrl)] + public class GTSCardRunCtrl : CtrlMotionCardRunBase { - [Category("杞撮厤缃�")] - [DisplayName("杞村彿绱㈠紩")] - [Description("AxisIndex锛氳酱鍙风储寮�")] - public int AxisIndex { get; set; } - - [Category("杞撮厤缃�")] - [DisplayName("杞村悕绉�")] - [Description("AxisName锛氳酱鍚嶇О")] - public string AxisName { get; set; } - - [Category("杞撮厤缃�")] - [DisplayName("杞存槸鍚﹀惎鐢�")] - [Description("IsAxisEnabled锛氳酱鏄惁鍚敤")] - public bool IsAxisEnabled { get; set; } = false; - - [Category("鎹㈢畻閰嶇疆")] - [DisplayName("鑴夊啿鏁版崲绠楁瘮渚�")] - [Description("鑴夊啿鏁板拰鍏朵粬璁¢噺鍗曚綅鐨勬崲绠楁瘮渚嬶紝渚嬪璁剧疆涓�1000锛岃〃绀�1000涓剦鍐茬瓑浜�1uint")] - public int PulseRatio { get; set; } = 1; - - [Category("閫熷害閰嶇疆")] - [DisplayName("榛樿閫熷害鍙傛暟")] - [Description("VelocityPara锛氶粯璁ら�熷害鍙傛暟")] - [TypeConverter(typeof(ComplexObjectConvert))] - [Editor(typeof(PropertyObjectEditor), typeof(UITypeEditor))] - public VelocityPara VelocityPara { get; set; } = new VelocityPara(); - - [Category("鍥炲師鐐硅缃�")] - [DisplayName("鍥炲師鐐规ā寮�")] - [Description("HomeMode锛氬洖鍘熺偣妯″紡銆�0锛氫竴鑸ā寮� 1锛氭瀬闄愰檺浣嶆ā寮� 2锛氬閮ㄨЕ鍙戞ā寮�")] - public int HomeMode { get; set; } = 0; - - [Category("鍥炲師鐐硅缃�")] - [DisplayName("鍥炲師鐐规柟鍚�")] - [Description("IsHomePositive锛氬洖鍘熺偣鏂瑰悜銆� true锛氭鏂瑰悜寮�濮� false锛氳礋鏂瑰悜寮�濮�")] - public bool IsHomePositive { get; set; } = true; - - [Category("鍥炲師鐐硅缃�")] - [DisplayName("鏄惁鑷姩鍥炲師鐐�")] - [Description("IsAutoGoHome锛氭槸鍚﹁嚜鍔ㄥ洖鍘熺偣銆� true锛氭槸 false锛氬惁")] - public bool IsAutoGoHome { get; set; } = false; - - [Category("瓒呮椂璁剧疆")] - [DisplayName("鍥炲師鐐硅秴鏃�")] - [Description("TimeOutHome锛氬洖鍘熺偣瓒呮椂锛屽崟浣嶆绉�")] - public int TimeOutHome { get; set; } = 30000; - - [Category("瓒呮椂璁剧疆")] - [DisplayName("杩愬姩瓒呮椂")] - [Description("TimeOutMove锛氳繍鍔ㄨ秴鏃讹紝鍗曚綅姣")] - public int TimeOutMove { get; set; } = 10000; - - [Category("寮�闂幆璁剧疆")] - [DisplayName("鏄惁浣跨敤Cmmd鍥為")] - [Description("IsUseCmmdPosition锛氭槸鍚︿娇鐢–mmd鍥為")] - public bool IsUseCmmdPosition { get; set; } = false; - - [Category("寮�闂幆璁剧疆")] - [DisplayName("鏄惁浣跨敤鏉垮崱鍙嶉鍋滄淇″彿")] - [Description("IsUseMDNStopSignal锛氭槸鍚︿娇鐢ㄦ澘鍗″弽棣堝仠姝俊鍙�")] - public bool IsUseMDNStopSignal { get; set; } = false; - - [Category("寮�闂幆璁剧疆")] - [DisplayName("鏄惁鍚敤鎶ヨ")] - [Description("IsUseWarning锛氭槸鍚﹀惎鐢ㄦ姤璀�")] - public bool IsUseWarning { get; set; } = false; - - [Category("鏆傚仠閰嶇疆")] - [DisplayName("鏄惁鍚敤绔嬪嵆鏆傚仠")] - [Description("IsImmediatePause锛氭槸鍚﹀惎鐢ㄧ珛鍗虫殏鍋�")] - public bool IsImmediatePause { get; set; } = false; - - [Category("鏆傚仠閰嶇疆")] - [DisplayName("杞翠綅缃浜庡尯闂村唴鏃堕�傜敤鐨勬殏鍋滄搷浣�")] - [Description("ImmediatePauseSections锛氬綋杞翠綅缃浜庡尯闂村唴鏃堕�傜敤鐨勬殏鍋滄搷浣�")] - [TypeConverter(typeof(CollectionCountConvert))] - [Editor(typeof(ComplexCollectionEditor<Section>), typeof(UITypeEditor))] - public List<Section> ImmediatePauseSections { get; set; } = new List<Section>(); - - public string GetDisplayText() - { - return AxisIndex + "-" + AxisName + "-" + (IsAxisEnabled ? "鍚敤" : "绂佺敤"); - } - } - - /// <summary> - /// 浣嶇疆瀵硅薄 - /// </summary> - public class Section : IComplexDisplay - { - [Category("鏆傚仠鍖洪棿")] - [DisplayName("璧峰浣嶇疆")] - [Description("StartPosition锛氳捣濮嬩綅缃�")] - public int StartPosition { get; set; } - - [Category("鏆傚仠鍖洪棿")] - [DisplayName("缁撴潫浣嶇疆")] - [Description("EndPosition锛氱粨鏉熶綅缃�")] - public int EndPosition { get; set; } - - public string GetDisplayText() - { - return $"{StartPosition}--{EndPosition}"; - } - } - - /// <summary> - /// 閫熷害鍙傛暟瀵硅薄 - /// </summary> - public class VelocityPara - { - [Category("閫熷害閰嶇疆")] - [DisplayName("閫熷害")] - [Description("Velocity锛氶�熷害,涓�0鏃惰〃绀轰笉淇敼褰撳墠璁剧疆")] - public double Velocity { get; set; } = 0; - - [Category("閫熷害閰嶇疆")] - [DisplayName("鍔犻�熷害")] - [Description("Acc锛氬姞閫熷害,涓�0鏃惰〃绀轰笉淇敼褰撳墠璁剧疆")] - public double Acc { get; set; } = 1; - - [Category("閫熷害閰嶇疆")] - [DisplayName("鍑忛�熷害")] - [Description("鍑忛�熷害,涓�0鏃惰〃绀轰笉淇敼褰撳墠璁剧疆")] - public double Dec { get; set; } = 1; - } - - /// <summary> - /// 鍥炲師鐐瑰弬鏁板璞� - /// </summary> - public class GoHomePara - { - [Category("鍥炲師鐐瑰弬鏁�")] - [DisplayName("鍥炲師鐐规柟寮�")] - [Description("HomeMode锛氬洖鍘熺偣鏂瑰紡 锛圚OME_MODE_LIMIT = 10; HOME_MODE_LIMIT_HOME = 11; HOME_MODE_LIMIT_INDEX = 12; HOME_MODE_LIMIT_HOME_INDEX = 13;HOME_MODE_HOME = 20;HOME_MODE_HOME_INDEX = 22;HOME_MODE_INDEX = 30;")] - public short HomeMode { get; set; } = 11; - - [Category("鍥炲師鐐瑰弬鏁�")] - [DisplayName("鍥炲師鐐规柟鍚�")] - [Description("HomeDir锛�1 姝e悜锛�-1 璐熷悜")] - public short HomeDir { get; set; } = 1; - - [Category("鍥炲師鐐瑰弬鏁�")] - [DisplayName("鍥炲師鐐规柟鍚�")] - [Description("HomeDir锛�1 姝e悜锛�-1 璐熷悜")] - public short Edge { get; set; } = 0; - - [Category("鍥炲師鐐瑰弬鏁�")] - [DisplayName("鍥炲師鐐规渶浣庨�熷害")] - [Description("LowVelocity锛氶�熷害,涓�0鏃惰〃绀轰笉淇敼褰撳墠璁剧疆")] - public double LowVelocity { get; set; } = 50; - - - [Category("鍥炲師鐐瑰弬鏁�")] - [DisplayName("鍥炲師鐐规渶楂橀�熷害")] - [Description("HighVelocity锛氶�熷害,涓�0鏃惰〃绀轰笉淇敼褰撳墠璁剧疆")] - public double HighVelocity { get; set; } = 50; - - [Category("鍥炲師鐐瑰弬鏁�")] - [DisplayName("鎼滄悳璺濈")] - [Description("SearchHomeDistance锛氭悳鎼滆窛绂�")] - public int SearchHomeDistance { get; set; } = 9999999; - - [Category("鍥炲師鐐瑰弬鏁�")] - [DisplayName("鍋忕Щ璺濈")] - [Description("HomeOffset锛氬亸绉昏窛绂�")] - public int HomeOffset { get; set; } = 0; - - [Category("鍥炲師鐐瑰弬鏁�")] - [DisplayName("璺宠繃姝ラ暱")] - [Description("EscapeStep锛氳烦杩囨闀�")] - public int EscapeStep { get; set; } = 1000; - - } - - /// <summary> - /// 杩愬姩瀵硅薄 - /// </summary> - public class MovingOption : INotifyPropertyChanged, IComplexDisplay - { - private int axisIndex = 0; - [Category("杩愬姩閰嶇疆")] - [DisplayName("杩愬姩杞寸储寮�")] - [Description("AxisIndex锛氳繍鍔ㄨ酱绱㈠紩")] - [TypeConverter(typeof(AxisIndexConvert))] - public int AxisIndex - { - get => axisIndex; - set - { - if (axisIndex != value) - { - axisIndex = value; - PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("AxisIndex")); - } - axisIndex = value; - } - } - - private MotorMoveMode moveMode = MotorMoveMode.Normal; - [Category("杩愬姩閰嶇疆")] - [DisplayName("杩愬姩妯″紡")] - [Description("MoveMode锛氳繍鍔ㄦā寮�")] - public MotorMoveMode MoveMode - { - get => moveMode; - set - { - if (moveMode != value) - { - moveMode = value; - PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("MoveMode")); - } - - moveMode = value; - } - } - - private bool isAbsolute = true; - [Category("杩愬姩閰嶇疆")] - [DisplayName("鏄惁缁濆杩愬姩")] - [Description("IsAbsolute锛氭槸鍚︾粷瀵硅繍鍔�")] - public bool IsAbsolute - { - get => isAbsolute; - set - { - if (isAbsolute != value) - { - isAbsolute = value; - PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("IsAbsolute")); - } - - isAbsolute = value; - } - } - - private int destination = 0; - [Category("杩愬姩閰嶇疆")] - [DisplayName("鐩殑鍦�")] - [Description("Destination锛氱洰鐨勫湴")] - public int Destination - { - get => destination; - set - { - if (destination != value) - { - destination = value; - PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Destination")); - } - - destination = value; - } - } - - private VelocityPara velocityPara = new VelocityPara(); - [Category("杩愬姩閰嶇疆")] - [DisplayName("閫熷害鍙傛暟")] - [Description("VelocityPara锛氶�熷害鍙傛暟")] - [TypeConverter(typeof(ComplexObjectConvert))] - [Editor(typeof(PropertyObjectEditor), typeof(UITypeEditor))] - public VelocityPara VelocityPara - { - get => velocityPara; - set - { - velocityPara = value; - PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("VelocityPara")); - } - } - - private GoHomePara goHomePara = new GoHomePara(); - [Category("杩愬姩閰嶇疆")] - [DisplayName("鍥炲師鐐瑰弬鏁�")] - [Description("GoHomePara锛氶�熷害鍙傛暟")] - [TypeConverter(typeof(ComplexObjectConvert))] - [Editor(typeof(PropertyObjectEditor), typeof(UITypeEditor))] - public GoHomePara GoHomePara - { - get => goHomePara; - set - { - goHomePara = value; - PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("GoHomePara")); - } - } - - internal List<AxisSetting> _axisSettingList = new List<AxisSetting>(); - public void SetAxisSetting(List<AxisSetting> settings) - { - if (settings != null) - _axisSettingList = settings; - } - - public string GetDisplayText() - { - string axisName = AxisIndex.ToString(); - var axisSet = _axisSettingList.FirstOrDefault(a => a.AxisIndex == AxisIndex); - if (axisSet != null) - { - axisName += ("-" + axisSet.AxisName); - } - return axisName + "," + MoveMode.ToString() + "," + (IsAbsolute ? "Abs" : "Rel") + "," + Destination; - } - public event PropertyChangedEventHandler PropertyChanged; - } - - public class AxisIndexConvert : TypeConverter - { - Dictionary<int, string> _indexNameDict = new Dictionary<int, string>(); - - public override bool GetStandardValuesSupported(ITypeDescriptorContext context) - { - return true; - } - - public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context) - { - MovingOption mo = context.Instance as MovingOption; - - _indexNameDict = mo._axisSettingList.ToDictionary(a => a.AxisIndex, a => a.AxisIndex + "-" + a.AxisName); - - return new StandardValuesCollection(_indexNameDict.Keys); - } - - public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) - { - if (sourceType == typeof(string)) - { - return true; - } - return base.CanConvertFrom(context, sourceType); - } - - public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object v) - { - if (v is string) - { - foreach (var indexName in _indexNameDict) - { - if (indexName.Value == v.ToString()) - { - return indexName.Key; - } - } - return Convert.ToInt32(v); - } - return base.ConvertFrom(context, culture, v); - } - - public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object v, Type destinationType) - { - if (destinationType == typeof(string)) - { - if (_indexNameDict.ContainsKey(Convert.ToInt32(v))) - { - return _indexNameDict[Convert.ToInt32(v)]; - } - } - return base.ConvertTo(context, culture, v, destinationType); - } - - public override bool GetStandardValuesExclusive(ITypeDescriptorContext context) - { - return false; - } - } - - public class AxisConflictSet : IComplexDisplay - { - [Category("1.杞村啿绐佹潯浠�")] - [Description("杞村啿绐佹潯浠讹紝婊¤冻鍏ㄩ儴鏉′欢鏃惰酱杩愬姩闇�瑕佹鏌ュ啿绐�")] - [TypeConverter(typeof(CollectionCountConvert))] - [Editor(typeof(ComplexCollectionEditor<AxisLimit>), typeof(UITypeEditor))] - public List<AxisLimit> AxisOptions { get; set; } = new List<AxisLimit>(); - - [Category("1.杞村啿绐佹潯浠�")] - [Description("IO鍐茬獊鏉′欢锛屾弧瓒冲叏閮ㄦ潯浠舵椂杞磋繍鍔ㄩ渶瑕佹鏌ュ啿绐�")] - [TypeConverter(typeof(CollectionCountConvert))] - [Editor(typeof(ComplexCollectionEditor<IOLimit>), typeof(UITypeEditor))] - public List<IOLimit> IOOptions { get; set; } = new List<IOLimit>(); - - [Category("2.杞村啿绐侀檺鍒�")] - [Description("杞村啿绐侀檺鍒讹紝杞磋繍鍔ㄥ厑璁稿尯闂�")] - [TypeConverter(typeof(CollectionCountConvert))] - [Editor(typeof(ComplexCollectionEditor<AxisLimit>), typeof(UITypeEditor))] - public List<AxisLimit> AxisLimits { get; set; } = new List<AxisLimit>(); - - [Category("2.杞村啿绐侀檺鍒�")] - [Description("IO鍏佽鏉′欢锛屽厑璁歌緭鍑虹殑IO")] - [TypeConverter(typeof(CollectionCountConvert))] - [Editor(typeof(ComplexCollectionEditor<IOLimit>), typeof(UITypeEditor))] - public List<IOLimit> IOOutputs { get; set; } = new List<IOLimit>(); - - [Category("3.杞村啿绐佸惎鐢�")] - [Description("true锛氬惎鐢ㄨ酱鍐茬獊闄愬埗 false锛氫笉鍚敤杞村啿绐侀檺鍒�")] - public bool IsEnabled { get; set; } = true; - - public string GetDisplayText() - { - string optionStr = "Options:" + String.Join(";", AxisOptions.Select(a => a.GetDisplayText())); - string limitStr = "Limits:" + String.Join(";", AxisLimits.Select(a => a.GetDisplayText())); - - return optionStr + "|" + limitStr; - } - } - - public class AxisLimit : IComplexDisplay - { - [Category("1.杞村彿")] - [Description("1.杞村彿")] - public int AxisIndex { get; set; } - - [Category("2.杞存渶灏忛檺鍒�")] - [Description("2.杞存渶灏忛檺鍒�")] - public int LimitMin { get; set; } - - [Category("3.杞存渶澶ч檺鍒�")] - [Description("3.杞存渶澶ч檺鍒�")] - public int LimitMax { get; set; } - - private int currentPosition = 0; - [Browsable(false)] - [JsonIgnore] - public int CurrentPosition - { - get => currentPosition; - set - { - if (currentPosition != value) - { - if (value >= LimitMin && value <= LimitMax) - { - IsInLimit = true; - } - else - { - IsInLimit = false; - } - } - - currentPosition = value; - } - } - - [Browsable(false)] - [JsonIgnore] - public bool IsInLimit { get; set; } - - public string GetDisplayText() - { - return String.Format("Index:{0},{1}->{2}", AxisIndex, LimitMin, LimitMax); - } - } - - public class IOLimit : IComplexDisplay - { - [Category("1.IO闄愬埗")] - [Description("IO绱㈠紩")] - public int IOIndex { get; set; } - - [Category("1.IO闄愬埗")] - [Description("IO闄愬埗鍊笺�傝緭鍏ュ垽鏂椂璇ュ�间綔涓哄惎鐢ㄥ垽鏂�硷紝杈撳嚭鍒ゆ柇鏃惰鍊间綔涓哄厑璁歌緭鍑哄��")] - public bool IOSignal { get; set; } - - public string GetDisplayText() - { - return IOIndex + "--" + IOSignal.ToString(); - } - } - - public class AxisMovingStay - { - public int Position { get; set; } - - public int Velocity { get; set; } - - public AutoResetEvent MoveHandle { get; set; } = new AutoResetEvent(false); - - public AutoResetEvent MoveSendHandle { get; set; } = new AutoResetEvent(false); + public GTSCardRunCtrl(IDevice device) : base(device) { } } } -- Gitblit v1.8.0