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<DateTime, string, IDevice, IMonitorSet> OnMonitorInvoke;
|
public event Action<DateTime, IDevice, IWarningSet> OnMonitorAlarm;
|
|
public abstract List<AxisInfo> 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 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<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>();
|
|
[Category("IO配置")]
|
[Description("IO定义集合")]
|
[TypeConverter(typeof(CollectionCountConvert))]
|
[Editor(typeof(ComplexCollectionEditor<IODefinition>), typeof(UITypeEditor))]
|
public List<IODefinition> IODefinitionCollection { get; set; } = new List<IODefinition>();
|
|
#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;
|
|
public List<IMonitorSet> 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操作配置")]
|
[Description("IO预检查定义集合")]
|
[TypeConverter(typeof(CollectionCountConvert))]
|
[Editor(typeof(IORefrenceItemCollectionEditor),typeof(UITypeEditor))]
|
public List<IORefrenceItem> PreCheckIOCollection { get; set; } = new List<IORefrenceItem>();
|
|
[Category("IO操作配置")]
|
[Description("IO输出定义集合")]
|
[TypeConverter(typeof(CollectionCountConvert))]
|
public List<IORefrenceItem> IOOutputCollection { get; set; } = new List<IORefrenceItem>();
|
|
[Category("IO操作配置")]
|
[Description("IO确认定义集合")]
|
[TypeConverter(typeof(CollectionCountConvert))]
|
public List<IORefrenceItem> IOConfirmCollection { get; set; } = new List<IORefrenceItem>();
|
|
[Category("板卡运动配置")]
|
[DisplayName("运动配置集合")]
|
[Description("MovingOps:运动配置集合")]
|
[TypeConverter(typeof(CollectionCountConvert))]
|
[Editor(typeof(ComplexCollectionEditor<MovingOption>), typeof(UITypeEditor))]
|
public List<MovingOption> MovingOps { get; set; } = new List<MovingOption>();
|
|
public string GetDisplayText()
|
{
|
throw new NotImplementedException();
|
}
|
}
|
|
|
}
|