添加项目文件。
This commit is contained in:
36
CapMachine.Wpf/Models/ChartConfig.cs
Normal file
36
CapMachine.Wpf/Models/ChartConfig.cs
Normal file
@@ -0,0 +1,36 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Media;
|
||||
|
||||
namespace CapMachine.Wpf.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// 曲线的配置
|
||||
/// </summary>
|
||||
public class ChartConfig
|
||||
{
|
||||
public List<Color> ListColor = new List<Color>()
|
||||
{
|
||||
Colors.White,
|
||||
Colors.Red,
|
||||
Colors.Blue,
|
||||
Colors.Green,
|
||||
Colors.Orange,
|
||||
Colors.Brown,
|
||||
Colors.Lime,
|
||||
Colors.LightBlue,
|
||||
Colors.Yellow,
|
||||
Colors.BurlyWood,
|
||||
Colors.Gold,
|
||||
Colors.Magenta,
|
||||
Colors.MediumVioletRed,
|
||||
Colors.MintCream,
|
||||
Colors.Cornsilk,
|
||||
};
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
63
CapMachine.Wpf/Models/ChartLvRtData.cs
Normal file
63
CapMachine.Wpf/Models/ChartLvRtData.cs
Normal file
@@ -0,0 +1,63 @@
|
||||
using Prism.Mvvm;
|
||||
|
||||
namespace CapMachine.Wpf.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// 曲线图表 ListView的实时数据信息
|
||||
/// </summary>
|
||||
public class ChartLvRtData : BindableBase
|
||||
{
|
||||
|
||||
private string? _Name;
|
||||
/// <summary>
|
||||
/// 名称
|
||||
/// </summary>
|
||||
public string? Name
|
||||
{
|
||||
get { return _Name; }
|
||||
set { _Name = value; RaisePropertyChanged(); }
|
||||
}
|
||||
|
||||
private double _Value;
|
||||
/// <summary>
|
||||
/// 值
|
||||
/// </summary>
|
||||
public double Value
|
||||
{
|
||||
get { return _Value; }
|
||||
set { _Value = value; RaisePropertyChanged(); }
|
||||
}
|
||||
|
||||
private double _Max;
|
||||
/// <summary>
|
||||
/// Max
|
||||
/// </summary>
|
||||
public double Max
|
||||
{
|
||||
get { return _Max; }
|
||||
set { _Max = value; RaisePropertyChanged(); }
|
||||
}
|
||||
|
||||
private double _Min;
|
||||
/// <summary>
|
||||
/// Min
|
||||
/// </summary>
|
||||
public double Min
|
||||
{
|
||||
get { return _Min; }
|
||||
set { _Min = value; RaisePropertyChanged(); }
|
||||
}
|
||||
|
||||
|
||||
private string? _Unit;
|
||||
/// <summary>
|
||||
/// 单位
|
||||
/// </summary>
|
||||
public string? Unit
|
||||
{
|
||||
get { return _Unit; }
|
||||
set { _Unit = value; RaisePropertyChanged(); }
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
250
CapMachine.Wpf/Models/ChartRtSeries.cs
Normal file
250
CapMachine.Wpf/Models/ChartRtSeries.cs
Normal file
@@ -0,0 +1,250 @@
|
||||
using Arction.Wpf.Charting;
|
||||
using Arction.Wpf.Charting.Annotations;
|
||||
using Arction.Wpf.Charting.Axes;
|
||||
using Arction.Wpf.Charting.Series3D;
|
||||
using Arction.Wpf.Charting.SeriesXY;
|
||||
using Arction.Wpf.Charting.Views.ViewXY;
|
||||
using ImTools;
|
||||
using Prism.Mvvm;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Xml.Linq;
|
||||
|
||||
namespace CapMachine.Wpf.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// 曲线实时系列模型
|
||||
/// </summary>
|
||||
public class ChartRtSeries:BindableBase
|
||||
{
|
||||
public ChartRtSeries(AxisY axisY, LightningChart lightningChart, string SeriesName)
|
||||
{
|
||||
//var CreateAxisY = new AxisY();
|
||||
//CreateAxisY.Title.Text = Name;
|
||||
//CreateAxisY.Title.AllowDragging = false;
|
||||
//CreateAxisY.SetRange(0, 100);
|
||||
//CreateAxisY.MajorGrid.Visible = false;
|
||||
////取消滚轮缩放
|
||||
//CreateAxisY.ZoomingEnabled = false;
|
||||
|
||||
//模型赋值
|
||||
LightningChartInstance = lightningChart;
|
||||
ChartAxisY = axisY;
|
||||
ChartAxisX = lightningChart.ViewXY.XAxes[0];
|
||||
Name = SeriesName;
|
||||
|
||||
Unit = "℃";
|
||||
|
||||
//判断别重复,因为可能共用Y轴的信息
|
||||
//绑定lightningChart
|
||||
lightningChart.ViewXY.YAxes.Add(axisY);
|
||||
|
||||
ChartPointLineSeries = new PointLineSeries(lightningChart.ViewXY, lightningChart.ViewXY.XAxes[0], axisY);
|
||||
ChartPointLineSeries.Title.Text = SeriesName;
|
||||
//绑定lightningChart
|
||||
lightningChart.ViewXY.PointLineSeries.Add(ChartPointLineSeries);
|
||||
}
|
||||
|
||||
///// <summary>
|
||||
///// 名称
|
||||
///// </summary>
|
||||
//public string? Name { get; set; }
|
||||
|
||||
///// <summary>
|
||||
///// 值
|
||||
///// </summary>
|
||||
//public double Value { get; set; }
|
||||
|
||||
///// <summary>
|
||||
///// Max
|
||||
///// </summary>
|
||||
//public double Max { get; set; }
|
||||
|
||||
///// <summary>
|
||||
///// Min
|
||||
///// </summary>
|
||||
//public double Min { get; set; }
|
||||
|
||||
///// <summary>
|
||||
///// 单位
|
||||
///// </summary>
|
||||
//public string? Unit { get; set; }
|
||||
|
||||
private string? _Name;
|
||||
/// <summary>
|
||||
/// 名称
|
||||
/// </summary>
|
||||
public string? Name
|
||||
{
|
||||
get { return _Name; }
|
||||
set { _Name = value; RaisePropertyChanged(); }
|
||||
}
|
||||
|
||||
private double _Value;
|
||||
/// <summary>
|
||||
/// 值
|
||||
/// </summary>
|
||||
public double Value
|
||||
{
|
||||
get { return _Value; }
|
||||
set { _Value = value; RaisePropertyChanged(); }
|
||||
}
|
||||
|
||||
private double _Max;
|
||||
/// <summary>
|
||||
/// Max
|
||||
/// </summary>
|
||||
public double Max
|
||||
{
|
||||
get { return _Max; }
|
||||
set { _Max = value; RaisePropertyChanged(); }
|
||||
}
|
||||
|
||||
private double _Min;
|
||||
/// <summary>
|
||||
/// Min
|
||||
/// </summary>
|
||||
public double Min
|
||||
{
|
||||
get { return _Min; }
|
||||
set { _Min = value; RaisePropertyChanged(); }
|
||||
}
|
||||
|
||||
|
||||
private string? _Unit;
|
||||
/// <summary>
|
||||
/// 单位
|
||||
/// </summary>
|
||||
public string? Unit
|
||||
{
|
||||
get { return _Unit; }
|
||||
set { _Unit = value; RaisePropertyChanged(); }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 曲线
|
||||
/// </summary>
|
||||
public PointLineSeries? ChartPointLineSeries { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Y轴
|
||||
/// </summary>
|
||||
public AxisY? ChartAxisY { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// X轴
|
||||
/// </summary>
|
||||
public AxisX? ChartAxisX { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// LightningChart 实例
|
||||
/// </summary>
|
||||
public LightningChart LightningChartInstance { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// X轴滚动
|
||||
/// </summary>
|
||||
private bool ScrollEnable = true;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Chart图表X轴的跨度-秒
|
||||
/// </summary>
|
||||
private int ChartXDateTimeRange = 3600;
|
||||
|
||||
/// <summary>
|
||||
/// 增加数据
|
||||
/// </summary>
|
||||
public void AddValue(double Data)
|
||||
{
|
||||
//foreach (var item in lightningChart1.ViewXY.PointLineSeries)
|
||||
//{
|
||||
//Disable updates, to prevent several extra refreshes
|
||||
LightningChartInstance.BeginUpdate();
|
||||
|
||||
//Array for 1 point
|
||||
SeriesPoint[] points = new SeriesPoint[1];
|
||||
|
||||
//Convert 'Now' to X value
|
||||
var _previousX = LightningChartInstance.ViewXY.XAxes[0].DateTimeToAxisValue(DateTime.Now);
|
||||
points[0].X = _previousX;
|
||||
points[0].Y = Data;
|
||||
//Add the new point into end of first PointLineSeries
|
||||
ChartPointLineSeries.AddPoints(points, false);
|
||||
|
||||
ChartPointLineSeries.DeletePointsBeforeX(_previousX - ChartXDateTimeRange);
|
||||
//item.DeletePointsBeforeX(_previousX - 100);
|
||||
|
||||
if (ScrollEnable)
|
||||
{
|
||||
LightningChartInstance.ViewXY.XAxes[0].ScrollPosition = _previousX;
|
||||
}
|
||||
|
||||
|
||||
//Allow updates again, and update
|
||||
LightningChartInstance.EndUpdate();
|
||||
|
||||
//}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Solve value from series data points array. Accurate method, but slower than SolveValueCoarse
|
||||
/// </summary>
|
||||
/// <param name="series">Series</param>
|
||||
/// <param name="xValue">X value</param>
|
||||
/// <param name="yValue">Output Y value</param>
|
||||
/// <returns>Success status</returns>
|
||||
private bool SolveValueAccurate(PointLineSeries series, double xValue, out double yValue)
|
||||
{
|
||||
AxisY axisY = LightningChartInstance.ViewXY.YAxes[series.AssignYAxisIndex];
|
||||
yValue = 0;
|
||||
|
||||
LineSeriesValueSolveResult result = series.SolveYValueAtXValue(xValue);
|
||||
if (result.SolveStatus == LineSeriesSolveStatus.OK)
|
||||
{
|
||||
//PointLineSeries may have two or more points at same X value. If so, center it between min and max
|
||||
yValue = (result.YMax + result.YMin) / 2.0;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Solve value from screen coordinates. Faster method, but not less accurateValue than SolveValueAccurate
|
||||
/// </summary>
|
||||
/// <param name="series">Series</param>
|
||||
/// <param name="xValue">X value</param>
|
||||
/// <param name="yValue">Output Y value</param>
|
||||
/// <returns>Success status</returns>
|
||||
private bool SolveValueCoarse(PointLineSeries series, double xValue, out double yValue)
|
||||
{
|
||||
AxisY axisY = LightningChartInstance.ViewXY.YAxes[series.AssignYAxisIndex];
|
||||
float coordX = LightningChartInstance.ViewXY.XAxes[0].ValueToCoord(xValue);
|
||||
float coordY;
|
||||
yValue = 0;
|
||||
|
||||
LineSeriesCoordinateSolveResult result = series.SolveYCoordAtXCoord(coordX);
|
||||
if (result.SolveStatus == LineSeriesSolveStatus.OK)
|
||||
{
|
||||
coordY = (result.CoordBottom + result.CoordTop) / 2f;
|
||||
if (axisY.CoordToValue((int)Math.Round(coordY), out yValue) == false)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
48
CapMachine.Wpf/Models/ChartRtValue.cs
Normal file
48
CapMachine.Wpf/Models/ChartRtValue.cs
Normal file
@@ -0,0 +1,48 @@
|
||||
using Arction.Wpf.Charting.Axes;
|
||||
using Arction.Wpf.Charting.SeriesXY;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace CapMachine.Wpf.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// 曲线实时数据模型
|
||||
/// </summary>
|
||||
public class ChartRtValue
|
||||
{
|
||||
public ChartRtValue()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 名称
|
||||
/// </summary>
|
||||
public string? Name { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 值
|
||||
/// </summary>
|
||||
public double Value { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Max
|
||||
/// </summary>
|
||||
public double Max { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Min
|
||||
/// </summary>
|
||||
public double Min { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 单位
|
||||
/// </summary>
|
||||
public string? Unit { get; set; }
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
57
CapMachine.Wpf/Models/ChartSelectDto.cs
Normal file
57
CapMachine.Wpf/Models/ChartSelectDto.cs
Normal file
@@ -0,0 +1,57 @@
|
||||
using Prism.Mvvm;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace CapMachine.Wpf.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// 曲线选择数据
|
||||
/// </summary>
|
||||
public class ChartSelectDto : BindableBase
|
||||
{
|
||||
/// <summary>
|
||||
/// Id
|
||||
/// </summary>
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 序号
|
||||
/// </summary>
|
||||
public int Index { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 名称
|
||||
/// </summary>
|
||||
public string? Name { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 分类
|
||||
/// </summary>
|
||||
public string? Category { get; set; }
|
||||
|
||||
|
||||
///// <summary>
|
||||
///// Y轴
|
||||
///// </summary>
|
||||
//public string? YAxis { get; set; }
|
||||
|
||||
private ChartYAxisDto _YAxis=new ChartYAxisDto();
|
||||
/// <summary>
|
||||
/// Y轴
|
||||
/// </summary>
|
||||
public ChartYAxisDto YAxis
|
||||
{
|
||||
get { return _YAxis; }
|
||||
set { _YAxis = value; RaisePropertyChanged(); }
|
||||
}
|
||||
|
||||
///// <summary>
|
||||
///// Y轴
|
||||
///// </summary>
|
||||
//public ChartYAxisData? YAxis { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
36
CapMachine.Wpf/Models/ChartSrcData.cs
Normal file
36
CapMachine.Wpf/Models/ChartSrcData.cs
Normal file
@@ -0,0 +1,36 @@
|
||||
using Prism.Mvvm;
|
||||
|
||||
namespace CapMachine.Wpf.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// 曲线数据源信息
|
||||
/// </summary>
|
||||
public class ChartSrcData:BindableBase
|
||||
{
|
||||
/// <summary>
|
||||
/// 序号
|
||||
/// </summary>
|
||||
public int Index { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 名称
|
||||
/// </summary>
|
||||
public string? Name { get; set; }
|
||||
|
||||
private bool _Selected;
|
||||
/// <summary>
|
||||
/// 选中
|
||||
/// </summary>
|
||||
public bool Selected
|
||||
{
|
||||
get { return _Selected; }
|
||||
set { _Selected = value; RaisePropertyChanged(); }
|
||||
}
|
||||
|
||||
|
||||
///// <summary>
|
||||
///// 选中
|
||||
///// </summary>
|
||||
//public bool? Selected { get; set; }
|
||||
}
|
||||
}
|
||||
44
CapMachine.Wpf/Models/ChartYAxisDto.cs
Normal file
44
CapMachine.Wpf/Models/ChartYAxisDto.cs
Normal file
@@ -0,0 +1,44 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace CapMachine.Wpf.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// Y轴标尺
|
||||
/// </summary>
|
||||
public class ChartYAxisDto
|
||||
{
|
||||
/// <summary>
|
||||
/// Id
|
||||
/// </summary>
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 序号
|
||||
/// </summary>
|
||||
public int Index { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 标尺名称
|
||||
/// </summary>
|
||||
public string? Name { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Max
|
||||
/// </summary>
|
||||
public double Max { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Min
|
||||
/// </summary>
|
||||
public double Min { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 单位
|
||||
/// </summary>
|
||||
public string? Unit { get; set; }
|
||||
}
|
||||
}
|
||||
328
CapMachine.Wpf/Models/Meter/MeterRtDataModel.cs
Normal file
328
CapMachine.Wpf/Models/Meter/MeterRtDataModel.cs
Normal file
@@ -0,0 +1,328 @@
|
||||
using CapMachine.Model;
|
||||
using HslCommunication;
|
||||
using Prism.Mvvm;
|
||||
|
||||
namespace CapMachine.Wpf.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// 仪表实时数据
|
||||
/// </summary>
|
||||
public class MeterRtDataModel : BindableBase
|
||||
{
|
||||
public delegate void MeterStepTrackDelegate(string MeterName, int NextStep);
|
||||
public event MeterStepTrackDelegate MeterStepTrackEvent;
|
||||
|
||||
/// <summary>
|
||||
/// 实例化函数
|
||||
/// </summary>
|
||||
public MeterRtDataModel()
|
||||
{
|
||||
ListProStepExecuteInfo = new List<ProStepExecute>();
|
||||
ListQuickProStepExecuteInfo = new List<QuickProStepExecute>();
|
||||
QuickRunTimeInfo = new QuickRunTime();
|
||||
QuickNextMeterStep = new QuickProStepExecute();
|
||||
RunTimeInfo = new MeterRunTime();
|
||||
NextMeterStep = new ProStepExecute();
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 仪表类型
|
||||
/// </summary>
|
||||
public MeterType MeterTypeInfo { get; set; }
|
||||
|
||||
|
||||
private int _MeterStepTrack;
|
||||
/// <summary>
|
||||
/// 步骤追踪
|
||||
/// </summary>
|
||||
public int MeterStepTrack
|
||||
{
|
||||
get
|
||||
{
|
||||
return _MeterStepTrack;
|
||||
}
|
||||
set
|
||||
{
|
||||
|
||||
if (value != _MeterStepTrack)//步骤改动
|
||||
{
|
||||
_MeterStepTrack = value;
|
||||
//MeterStepTrackEvent(MeterName, value);//开始动作
|
||||
}
|
||||
|
||||
_MeterStepTrack = value;
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
/////////////////仪表实时数据///////////////////
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
#region 仪表实时数据
|
||||
/// <summary>
|
||||
/// 通信结果长度连续值
|
||||
/// </summary>
|
||||
private OperateResult<Int16[]> _RtOperateResultContinuousData;
|
||||
public OperateResult<Int16[]> RtOperateResultContinuousData
|
||||
{
|
||||
get { return _RtOperateResultContinuousData; }
|
||||
set { _RtOperateResultContinuousData = value; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 通信结果PV值
|
||||
/// </summary>
|
||||
private OperateResult<Int16> _RtOperateResultPV;
|
||||
public OperateResult<Int16> RtOperateResultPV
|
||||
{
|
||||
get { return _RtOperateResultPV; }
|
||||
set { _RtOperateResultPV = value; }
|
||||
}
|
||||
private double _RtPV;
|
||||
/// <summary>
|
||||
/// 实时值PV
|
||||
/// </summary>
|
||||
public double RtPV
|
||||
{
|
||||
get { return _RtPV; }
|
||||
set { _RtPV = value; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 通信结果MV值
|
||||
/// </summary>
|
||||
private OperateResult<Int16> _RtOperateResultMV;
|
||||
public OperateResult<Int16> RtOperateResultMV
|
||||
{
|
||||
get { return _RtOperateResultMV; }
|
||||
set { _RtOperateResultMV = value; }
|
||||
}
|
||||
|
||||
private double _RtMV;
|
||||
/// <summary>
|
||||
/// 实时值MV
|
||||
/// </summary>
|
||||
public double RtMV
|
||||
{
|
||||
get { return _RtMV; }
|
||||
set { _RtMV = value; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 通信结果SV值
|
||||
/// </summary>
|
||||
private OperateResult<Int16> _RtOperateResultSV;
|
||||
public OperateResult<Int16> RtOperateResultSV
|
||||
{
|
||||
get { return _RtOperateResultSV; }
|
||||
set { _RtOperateResultSV = value; }
|
||||
}
|
||||
|
||||
private double _RtSV;
|
||||
/// <summary>
|
||||
/// 实时值SV
|
||||
/// </summary>
|
||||
public double RtSV
|
||||
{
|
||||
get { return _RtSV; }
|
||||
set { _RtSV = value; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// PV值的地址
|
||||
/// </summary>
|
||||
public string RtAddressPV;
|
||||
|
||||
/// <summary>
|
||||
/// MV值的地址
|
||||
/// </summary>
|
||||
public string RtAddressMV;
|
||||
|
||||
/// <summary>
|
||||
/// SV值的地址
|
||||
/// </summary>
|
||||
public string RtAddressSV;
|
||||
|
||||
/// <summary>
|
||||
/// MV值的UI展示名称
|
||||
/// </summary>
|
||||
public string RtMVUIControlIndex;
|
||||
|
||||
/// <summary>
|
||||
/// PV值的UI展示名称
|
||||
/// </summary>
|
||||
public string RtPVUIControlIndex;
|
||||
|
||||
/// <summary>
|
||||
/// SV值的UI展示名称
|
||||
/// </summary>
|
||||
public string RtSVUIControlIndex;
|
||||
|
||||
/// <summary>
|
||||
/// UI展示名称标题
|
||||
/// </summary>
|
||||
public string RtUIControlTitle;
|
||||
|
||||
/// <summary>
|
||||
/// UI展示名称控件
|
||||
/// </summary>
|
||||
public string RtUIControlTitleIndex;
|
||||
|
||||
#endregion
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////
|
||||
/////////////////仪表整体信息///////////////////
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
#region 仪表整体信息
|
||||
/// <summary>
|
||||
/// 仪表连接状态
|
||||
/// </summary>
|
||||
public bool LinkState { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 仪表名称
|
||||
/// </summary>
|
||||
public string MeterName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 仪表站号
|
||||
/// </summary>
|
||||
public byte Station { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 最大值
|
||||
/// </summary>
|
||||
public double MaxValue { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 最小值
|
||||
/// </summary>
|
||||
public double MinValue { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 精度
|
||||
/// </summary>
|
||||
public Int16 Accuracy { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 单位
|
||||
/// </summary>
|
||||
public string Unit { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 采样周期
|
||||
/// </summary>
|
||||
public int SamplingPeriod { get; set; }
|
||||
|
||||
#endregion
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
/////////////////仪表程序使能//////////////////
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
/// <summary>
|
||||
/// 当前仪表使能状态
|
||||
/// 根据程序步骤里面有没有涉及到本仪表的步骤个数
|
||||
/// </summary>
|
||||
public bool MeterEnableState = false;
|
||||
|
||||
/// <summary>
|
||||
/// 当前仪表使能状态
|
||||
///需要在执行时发送数据给PLC
|
||||
/// </summary>
|
||||
public string MeterEnableStatePLCAddress = string.Empty;
|
||||
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
/////////////////程序段//////////////////////////
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
/// <summary>
|
||||
/// 程序段和程序步骤执行具体方法
|
||||
/// </summary>
|
||||
public List<ProStepExecute> ListProStepExecuteInfo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 快速设置程序段和程序步骤执行具体方法
|
||||
/// </summary>
|
||||
public List<QuickProStepExecute> ListQuickProStepExecuteInfo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 仪表当前步骤执行时间信息
|
||||
/// </summary>
|
||||
public MeterRunTime RunTimeInfo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Quick仪表当前步骤执行时间信息
|
||||
/// </summary>
|
||||
public QuickRunTime QuickRunTimeInfo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 仪表当前步骤是否存在下一步
|
||||
/// </summary>
|
||||
public bool IsExistMeterNextStep { get; set; } = false;
|
||||
|
||||
/// <summary>
|
||||
/// 仪表下一步具体程序步骤
|
||||
/// </summary>
|
||||
public ProStepExecute NextMeterStep { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Quick仪表下一步具体程序步骤
|
||||
/// </summary>
|
||||
public QuickProStepExecute QuickNextMeterStep { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Quick仪表【当前步骤】具体程序步骤
|
||||
/// 给看步骤是否变化使用
|
||||
/// </summary>
|
||||
public QuickProStepExecute QuickCurrentMeterStep { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 当前程序段名称
|
||||
/// </summary>
|
||||
public string CurrentProName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 当前程序段步骤
|
||||
/// </summary>
|
||||
public int CurrentProStep { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 当前程序段时间长
|
||||
/// </summary>
|
||||
public int CurrentProTimeSum { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 当前程序段开始时间
|
||||
/// </summary>
|
||||
public DateTime CurrentProStartTime { set; get; }
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
/////////////////仪表步骤数据///////////////////
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
/// <summary>
|
||||
/// 当前仪表步骤
|
||||
/// </summary>
|
||||
public int CurrentMeterStep { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 当前仪表步骤时间长
|
||||
/// </summary>
|
||||
public int CurrentMeterTimeSum { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 当前仪表开始时间
|
||||
/// </summary>
|
||||
public DateTime CurrentMeterStartTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 当前仪表步骤剩余时间
|
||||
/// </summary>
|
||||
public int CurrentMeterRemainTime { get; set; }
|
||||
}
|
||||
}
|
||||
80
CapMachine.Wpf/Models/Meter/MeterRunTime.cs
Normal file
80
CapMachine.Wpf/Models/Meter/MeterRunTime.cs
Normal file
@@ -0,0 +1,80 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace CapMachine.Wpf.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// Kp表单步跟踪其运行时间跟踪信息
|
||||
/// </summary>
|
||||
public class MeterRunTime
|
||||
{
|
||||
public delegate void RunTimeCallSglDelegate(string ProName, string MeterName, int MeterStep);
|
||||
public event RunTimeCallSglDelegate RunTimeCallSglEvent;
|
||||
|
||||
/// <summary>
|
||||
/// 是否启用
|
||||
/// </summary>
|
||||
public bool RunEnable { get; set; } = false;
|
||||
|
||||
/// <summary>
|
||||
/// 当前仪表名称
|
||||
/// </summary>
|
||||
public string MeterName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 当前程序段名称
|
||||
/// </summary>
|
||||
public string ProName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 当前仪表程序步骤
|
||||
/// </summary>
|
||||
public int MeterStep { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 当前步骤开始运行时间
|
||||
/// </summary>
|
||||
public DateTime StartDateTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 当前步骤结束运行时间
|
||||
/// </summary>
|
||||
public DateTime EndDateTime { get; set; }
|
||||
|
||||
|
||||
private DateTime currentDateTime;
|
||||
/// <summary>
|
||||
/// 当前时间
|
||||
/// </summary>
|
||||
public DateTime CurrentDateTime
|
||||
{
|
||||
get
|
||||
{
|
||||
return currentDateTime;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (RunEnable == true && value.ToString("yyyy-MM-dd HH:mm:ss") == EndDateTime.ToString("yyyy-MM-dd HH:mm:ss"))
|
||||
{
|
||||
currentDateTime = value;
|
||||
//时间到了触发下载新的步骤
|
||||
RunTimeCallSglEvent(ProName, MeterName, MeterStep);
|
||||
//RunEnable = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
currentDateTime = value;
|
||||
RunTime = (int)(currentDateTime - StartDateTime).TotalSeconds;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 当前步骤已经运行时长-秒
|
||||
/// </summary>
|
||||
public int RunTime { get; set; }
|
||||
}
|
||||
}
|
||||
18
CapMachine.Wpf/Models/Meter/MeterType.cs
Normal file
18
CapMachine.Wpf/Models/Meter/MeterType.cs
Normal file
@@ -0,0 +1,18 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace CapMachine.Wpf.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// 仪表类型
|
||||
/// </summary>
|
||||
public enum MeterType
|
||||
{
|
||||
KP=1,
|
||||
CP=2,
|
||||
DP=3
|
||||
}
|
||||
}
|
||||
85
CapMachine.Wpf/Models/Meter/QuickRunTime.cs
Normal file
85
CapMachine.Wpf/Models/Meter/QuickRunTime.cs
Normal file
@@ -0,0 +1,85 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace CapMachine.Wpf.Models
|
||||
{
|
||||
public class QuickRunTime
|
||||
{
|
||||
public delegate void RunTimeCallSglDelegate(string ProName, string MeterName, int MeterStep);
|
||||
public event RunTimeCallSglDelegate RunTimeCallSglEvent;
|
||||
|
||||
/// <summary>
|
||||
/// 是否启用
|
||||
/// </summary>
|
||||
public bool RunEnable { get; set; } = false;
|
||||
|
||||
/// <summary>
|
||||
/// RunTimeCallSglEvent 是否注册关联方法
|
||||
/// </summary>
|
||||
public bool EventRegister { get; set; } = false;
|
||||
|
||||
/// <summary>
|
||||
/// 当前仪表名称
|
||||
/// </summary>
|
||||
public string MeterName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 当前程序段名称
|
||||
/// </summary>
|
||||
public string ProName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 当前仪表程序步骤
|
||||
/// </summary>
|
||||
public int MeterStep { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 当前步骤开始运行时间
|
||||
/// </summary>
|
||||
public DateTime StartDateTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 当前步骤结束运行时间
|
||||
/// </summary>
|
||||
public DateTime EndDateTime { get; set; }
|
||||
|
||||
|
||||
private DateTime currentDateTime;
|
||||
/// <summary>
|
||||
/// 当前时间
|
||||
/// </summary>
|
||||
public DateTime CurrentDateTime
|
||||
{
|
||||
get
|
||||
{
|
||||
return currentDateTime;
|
||||
}
|
||||
set
|
||||
{
|
||||
//value.ToString("yyyy-MM-dd HH:mm:ss") == EndDateTime.ToString("yyyy-MM-dd HH:mm:ss")
|
||||
if (RunEnable == true && value >= EndDateTime)
|
||||
{
|
||||
currentDateTime = value;
|
||||
RunEnable = false;
|
||||
//时间到了触发下载新的步骤
|
||||
//RunTimeCallSglEvent(ProName, MeterName, MeterStep);
|
||||
RunTimeCallSglEvent.BeginInvoke(ProName, MeterName, MeterStep, null, null);
|
||||
//RunEnable = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
currentDateTime = value;
|
||||
RunTime = (int)(currentDateTime - StartDateTime).TotalSeconds;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 当前步骤已经运行时长-秒
|
||||
/// </summary>
|
||||
public int RunTime { get; set; }
|
||||
}
|
||||
}
|
||||
60
CapMachine.Wpf/Models/NavigationItem.cs
Normal file
60
CapMachine.Wpf/Models/NavigationItem.cs
Normal file
@@ -0,0 +1,60 @@
|
||||
using Prism.Mvvm;
|
||||
using System.Collections.ObjectModel;
|
||||
|
||||
namespace CapMachine.Wpf.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// 菜单功能模型
|
||||
/// </summary>
|
||||
public class NavigationItem : BindableBase
|
||||
{
|
||||
public NavigationItem(
|
||||
string icon,
|
||||
string name,
|
||||
string pageName,
|
||||
ObservableCollection<NavigationItem> items = null)
|
||||
{
|
||||
Icon = icon;
|
||||
Name = name;
|
||||
PageName = pageName;
|
||||
Items = items;
|
||||
}
|
||||
|
||||
private string name;
|
||||
private string icon;
|
||||
private ObservableCollection<NavigationItem> items;
|
||||
|
||||
/// <summary>
|
||||
/// 图标
|
||||
/// </summary>
|
||||
public string Icon
|
||||
{
|
||||
get { return icon; }
|
||||
set { icon = value; RaisePropertyChanged(); }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 菜单名称
|
||||
/// </summary>
|
||||
public string Name
|
||||
{
|
||||
get { return name; }
|
||||
set { name = value; RaisePropertyChanged(); }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 菜单导航的页面
|
||||
/// </summary>
|
||||
public string PageName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 导航菜单列表
|
||||
/// 菜单子项
|
||||
/// </summary>
|
||||
public ObservableCollection<NavigationItem> Items
|
||||
{
|
||||
get { return items; }
|
||||
set { items = value; RaisePropertyChanged(); }
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user