using Bro.Common.Helper; using Bro.Common.Interface; using Bro.Common.Model; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing.Design; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Bro.Common.Base { public abstract class MotionCardBase : DeviceBase, IMonitor, IMotionCard { public event Action OnMonitorInvoke; public event Action OnMonitorAlarm; public abstract List GetCurrentAxisInfo(params string[] axisName); public abstract void Monitor(); public abstract ResponseMessage MoveToPoint(IOperationConfig opConfig); public abstract void ResetAlarm(); public abstract ResponseMessage Run(IOperationConfig config); public void ExcuteMonitorInvok(DateTime dateTime, string invokeDevice, IDevice device, IMonitorSet monitorSet) { OnMonitorInvoke?.BeginInvoke(dateTime, invokeDevice, device, monitorSet, null, null); } public void ExcuteMonitorAlarm(DateTime dateTime, IDevice device, IWarningSet warningSet) { OnMonitorAlarm?.BeginInvoke(dateTime, device, warningSet, null, null); } public virtual MotionCardInitialConfigBase IConfig { get { return InitialConfig as MotionCardInitialConfigBase; } } } public class MotionCardInitialConfigBase : InitialConfigBase, IMonitorConfig { [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; } = 4; [Category("轴配置")] [DisplayName("轴配置信息集合")] [Description("AxisSettings:轴配置信息集合")] [TypeConverter(typeof(CollectionCountConvert))] [Editor(typeof(ComplexCollectionEditor), typeof(UITypeEditor))] public List AxisSettings { get; set; } = new List(); [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 WarningSetCollection { get; set; } = new List(); [Category("IO配置")] [Description("IO定义集合")] [TypeConverter(typeof(CollectionCountConvert))] [Editor(typeof(ComplexCollectionEditor), typeof(UITypeEditor))] public List IODefinitionCollection { get; set; } = new List(); #region IMonitorConfig [Category("监听设置")] [Description("MonitorSetCollection:监听操作配置集合")] [DisplayName("监听配置")] [TypeConverter(typeof(CollectionCountConvert))] [Editor(typeof(ComplexCollectionEditor), typeof(UITypeEditor))] public List MonitorSetCollection { get; set; } = new List(); [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; public List GetAllMonitorSet() { WarningSetCollection.ForEach(m => m.Source = this.Name); MonitorSetCollection.ForEach(m => m.SourceDevice = this.Id); return MonitorSetCollection; } #endregion } public class MotionCardOperationConfigBase : OperationConfigBase, IComplexDisplay { [Category("IO操作配置")] [DisplayName("IO预检查定义集合")] [Description("IO预检查定义集合")] [TypeConverter(typeof(CollectionCountConvert))] [Editor(typeof(IORefrenceItemCollectionEditor), typeof(UITypeEditor))] public List PreCheckIOCollection { get; set; } = new List(); [Category("IO操作配置")] [DisplayName("IO输出定义集合")] [Description("IO输出定义集合")] [TypeConverter(typeof(CollectionCountConvert))] public List IOOutputCollection { get; set; } = new List(); [Category("IO操作配置")] [DisplayName("IO确认定义集合")] [Description("IO确认定义集合")] [TypeConverter(typeof(CollectionCountConvert))] public List IOConfirmCollection { get; set; } = new List(); [Category("板卡运动配置")] [DisplayName("运动配置集合")] [Description("MovingOps:运动配置集合")] [TypeConverter(typeof(CollectionCountConvert))] [Editor(typeof(ComplexCollectionEditor), typeof(UITypeEditor))] public List MovingOps { get; set; } = new List(); public string GetDisplayText() { throw new NotImplementedException(); } } }