Files

137 lines
4.8 KiB
C#
Raw Permalink Normal View History

using MainShell.Common;
using MainShell.Hardware;
using MwFramework.Controls.UIControl;
using MwFramework.Device;
using MwFramework.ManagerService;
using Stylet;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.ComponentModel.Composition;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MainShell.ParaSetting.Model
{
[Export(typeof(IParameter))]
public class SpeedSetting : ParameterBase
{
[Export(typeof(IParameter))]
public class SpeedParaSysSetting : ParameterBase
{
[WatchValue("速度参数")]
public SpeedTypeItemCollection SpeedTypeItemCollection { get; set; } = new SpeedTypeItemCollection();
public SpeedType CurrentSpeedType { get; set; } = SpeedType.Low;
public override void Copy(IParameter source)
{
if (source is SpeedParaSysSetting setting)
{
ReflectionExtension.Copy(SpeedTypeItemCollection, setting.SpeedTypeItemCollection);
CurrentSpeedType = setting.CurrentSpeedType;
}
}
}
public class SpeedTypeItemCollection : PropertyChangedBase, IParameterItem
{
private ObservableCollection<SpeedTypeItem> _speedTypeItemList = new ObservableCollection<SpeedTypeItem>();
[WatchValue("SpeedTypeItemList")]
public ObservableCollection<SpeedTypeItem> SpeedTypeItemList
{
get { return _speedTypeItemList; }
set { if (_speedTypeItemList != value) { _speedTypeItemList = value; OnPropertyChanged(nameof(SpeedTypeItemList)); } }
}
private SpeedTypeItem _currentSelectSpeedTypeItemList = new SpeedTypeItem();
public SpeedTypeItem CurrentSelectSpeedTypeItemList
{
get { return _currentSelectSpeedTypeItemList; }
set { if (_currentSelectSpeedTypeItemList != value) { _currentSelectSpeedTypeItemList = value; OnPropertyChanged(nameof(CurrentSelectSpeedTypeItemList)); } }
}
public IParameterItem Clone()
{
return this.MemberwiseClone() as IParameterItem;
}
}
public class SpeedTypeItem : PropertyChangedBase, IParameterItem
{
private string _axisName;
[WatchValue("轴名称")]
public string AxisName
{
get { return _axisName; }
set { SetAndNotify(ref _axisName, value); }
}
private double _speed = 10.0;
[WatchValue("速度")]
public double Speed
{
get { return _speed; }
set { if (_speed != value) { _speed = value; OnPropertyChanged(nameof(Speed)); } }
}
private double _acc = 100.0;
[WatchValue("加速度")]
public double Acc
{
get { return _acc; }
set { if (_acc != value) { _acc = value; OnPropertyChanged(nameof(Acc)); } }
}
private double _dec = 100.0;
[WatchValue("减速度")]
public double Dec
{
get { return _dec; }
set { if (_dec != value) { _dec = value; OnPropertyChanged(nameof(Dec)); } }
}
private double _jerk = 1000.0;
[WatchValue("加加速度")]
public double Jerk
{
get { return _jerk; }
set { if (_jerk != value) { _jerk = value; OnPropertyChanged(nameof(Jerk)); } }
}
private double _lowPercent = 20;
[WatchValue("低速")]
public double LowPercent
{
get { return _lowPercent; }
set { LimitPercent(ref value); SetAndNotify(ref _lowPercent, value); }
}
private double _medianPercent = 50;
[WatchValue("中速")]
public double MedianPercent
{
get { return _medianPercent; }
set { LimitPercent(ref value); SetAndNotify(ref _medianPercent, value); }
}
private double _highPercent = 100;
[WatchValue("高速")]
public double HighPercent
{
get { return _highPercent; }
set { LimitPercent(ref value); SetAndNotify(ref _highPercent, value); }
}
private void LimitPercent(ref double percent)
{
if (percent < 0) percent = 1;
else if (percent > 100) percent = 100;
}
public IParameterItem Clone()
{
return this.MemberwiseClone() as IParameterItem;
}
}
}
}