@@ -197,12 +197,12 @@ | |||||
<lvc:LineSeries | <lvc:LineSeries | ||||
Fill="Transparent" LineSmoothness="1" | Fill="Transparent" LineSmoothness="1" | ||||
PointGeometry="{x:Null}" | PointGeometry="{x:Null}" | ||||
Stroke="Tomato" StrokeThickness="2" | |||||
Stroke="Yellow" StrokeThickness="2" | |||||
Values="{Binding PartReferenceData.Temperature}" /> | Values="{Binding PartReferenceData.Temperature}" /> | ||||
<lvc:LineSeries | <lvc:LineSeries | ||||
Fill="Transparent" LineSmoothness="1" | Fill="Transparent" LineSmoothness="1" | ||||
PointGeometry="{x:Null}" | PointGeometry="{x:Null}" | ||||
Stroke="AliceBlue" StrokeThickness="2" | |||||
Stroke="Green" StrokeThickness="2" | |||||
Values="{Binding PartReferenceData.CondensateWaterTemperature}" /> | Values="{Binding PartReferenceData.CondensateWaterTemperature}" /> | ||||
</lvc:CartesianChart.Series> | </lvc:CartesianChart.Series> | ||||
<lvc:CartesianChart.AxisY> | <lvc:CartesianChart.AxisY> | ||||
@@ -229,6 +229,12 @@ | |||||
<Rectangle | <Rectangle | ||||
Width="20" Height="2" Margin="10,0,0,2" Fill="Blue" /> | Width="20" Height="2" Margin="10,0,0,2" Fill="Blue" /> | ||||
<TextBlock Foreground="White" Text="冷凝水罐温度" /> | <TextBlock Foreground="White" Text="冷凝水罐温度" /> | ||||
<Rectangle | |||||
Width="20" Height="2" Margin="10,0,0,2" Fill="Yellow" /> | |||||
<TextBlock Foreground="White" Text="反应釜温度_参考" /> | |||||
<Rectangle | |||||
Width="20" Height="2" Margin="10,0,0,2" Fill="Green" /> | |||||
<TextBlock Foreground="White" Text="冷凝水罐温度_参考" /> | |||||
</StackPanel> | </StackPanel> | ||||
</StackPanel> | </StackPanel> | ||||
@@ -243,20 +249,23 @@ | |||||
<lvc:LineSeries | <lvc:LineSeries | ||||
Fill="Transparent" LineSmoothness="1" | Fill="Transparent" LineSmoothness="1" | ||||
PointGeometry="{x:Null}" | PointGeometry="{x:Null}" | ||||
Stroke="#07F80C" StrokeThickness="2" | |||||
Stroke="Red" StrokeThickness="2" | |||||
Values="{Binding DataFeedback.SteamPressure}" /> | Values="{Binding DataFeedback.SteamPressure}" /> | ||||
<lvc:LineSeries | <lvc:LineSeries | ||||
Fill="Transparent" LineSmoothness="1" | Fill="Transparent" LineSmoothness="1" | ||||
PointGeometry="{x:Null}" | PointGeometry="{x:Null}" | ||||
Stroke="#FFFFFF" StrokeThickness="2" | |||||
Stroke="Blue" StrokeThickness="2" | |||||
Values="{Binding DataFeedback.ReactPressure}" /> | Values="{Binding DataFeedback.ReactPressure}" /> | ||||
<!--<lvc:LineSeries | |||||
Fill="Transparent" | |||||
LineSmoothness="1" | |||||
PointGeometry="{x:Null}" | |||||
Stroke="#423FFD" | |||||
StrokeThickness="2" | |||||
Values="{Binding DataFeedback.M102_Speed}" />--> | |||||
<lvc:LineSeries | |||||
Fill="Transparent" LineSmoothness="1" | |||||
PointGeometry="{x:Null}" | |||||
Stroke="Yellow" StrokeThickness="2" | |||||
Values="{Binding PartReferenceData.SteamPressure}" /> | |||||
<lvc:LineSeries | |||||
Fill="Transparent" LineSmoothness="1" | |||||
PointGeometry="{x:Null}" | |||||
Stroke="Green" StrokeThickness="2" | |||||
Values="{Binding PartReferenceData.ReactPressure}" /> | |||||
</lvc:CartesianChart.Series> | </lvc:CartesianChart.Series> | ||||
<lvc:CartesianChart.AxisY> | <lvc:CartesianChart.AxisY> | ||||
<lvc:Axis | <lvc:Axis | ||||
@@ -277,18 +286,18 @@ | |||||
</lvc:CartesianChart> | </lvc:CartesianChart> | ||||
<StackPanel Margin="0,10,0,0" Orientation="Horizontal"> | <StackPanel Margin="0,10,0,0" Orientation="Horizontal"> | ||||
<TextBlock Foreground="White" Text="压力曲线/MPa" /> | <TextBlock Foreground="White" Text="压力曲线/MPa" /> | ||||
<!--<Rectangle | |||||
Width="20" | |||||
Height="2" | |||||
Margin="10,0,0,2" | |||||
Fill="#423FFD" /> | |||||
<TextBlock Foreground="White" Text="物料罐转速" />--> | |||||
<Rectangle | <Rectangle | ||||
Width="20" Height="2" Margin="10,0,0,2" Fill="#F44F15" /> | |||||
Width="20" Height="2" Margin="10,0,0,2" Fill="Red" /> | |||||
<TextBlock Foreground="White" Text="反应釜蒸汽压力" /> | <TextBlock Foreground="White" Text="反应釜蒸汽压力" /> | ||||
<Rectangle | <Rectangle | ||||
Width="20" Height="2" Margin="10,0,0,2" Fill="#FFFFFF" /> | |||||
Width="20" Height="2" Margin="10,0,0,2" Fill="Blue" /> | |||||
<TextBlock Foreground="White" Text="反应釜压力" /> | <TextBlock Foreground="White" Text="反应釜压力" /> | ||||
<Rectangle | |||||
Width="20" Height="2" Margin="10,0,0,2" Fill="Yellow" /> | |||||
<TextBlock Foreground="White" Text="反应釜蒸汽压力_参考" /> | |||||
<Rectangle | |||||
Width="20" Height="2" Margin="10,0,0,2" Fill="Green" /> | |||||
<TextBlock Foreground="White" Text="反应釜压力_参考" /> | |||||
</StackPanel> | </StackPanel> | ||||
</StackPanel> | </StackPanel> | ||||
@@ -303,8 +312,13 @@ | |||||
<lvc:LineSeries | <lvc:LineSeries | ||||
Fill="Transparent" LineSmoothness="1" | Fill="Transparent" LineSmoothness="1" | ||||
PointGeometry="{x:Null}" | PointGeometry="{x:Null}" | ||||
Stroke="White" StrokeThickness="2" | |||||
Stroke="Red" StrokeThickness="2" | |||||
Values="{Binding DataFeedback.ProportionalValveOpening}" /> | Values="{Binding DataFeedback.ProportionalValveOpening}" /> | ||||
<lvc:LineSeries | |||||
Fill="Transparent" LineSmoothness="1" | |||||
PointGeometry="{x:Null}" | |||||
Stroke="Yellow" StrokeThickness="2" | |||||
Values="{Binding PartReferenceData.ProportionalValveOpening}" /> | |||||
</lvc:CartesianChart.Series> | </lvc:CartesianChart.Series> | ||||
<lvc:CartesianChart.AxisY> | <lvc:CartesianChart.AxisY> | ||||
<lvc:Axis MaxValue="110" MinValue="-10"> | <lvc:Axis MaxValue="110" MinValue="-10"> | ||||
@@ -324,8 +338,11 @@ | |||||
<StackPanel Margin="0,10,0,0" Orientation="Horizontal"> | <StackPanel Margin="0,10,0,0" Orientation="Horizontal"> | ||||
<TextBlock Foreground="White" Text="比例阀开度曲线" /> | <TextBlock Foreground="White" Text="比例阀开度曲线" /> | ||||
<Rectangle | <Rectangle | ||||
Width="20" Height="2" Margin="20,0,0,2" Fill="White" /> | |||||
Width="20" Height="2" Margin="20,0,0,2" Fill="Red" /> | |||||
<TextBlock Foreground="White" Text="蒸汽比例阀开度" /> | <TextBlock Foreground="White" Text="蒸汽比例阀开度" /> | ||||
<Rectangle | |||||
Width="20" Height="2" Margin="20,0,0,2" Fill="Yellow" /> | |||||
<TextBlock Foreground="White" Text="蒸汽比例阀开度_参考" /> | |||||
</StackPanel> | </StackPanel> | ||||
</StackPanel> | </StackPanel> | ||||
@@ -345,8 +362,18 @@ | |||||
<lvc:LineSeries | <lvc:LineSeries | ||||
Fill="Transparent" LineSmoothness="1" | Fill="Transparent" LineSmoothness="1" | ||||
PointGeometry="{x:Null}" | PointGeometry="{x:Null}" | ||||
Stroke="#F1C74B" StrokeThickness="2" | |||||
Stroke="Blue" StrokeThickness="2" | |||||
Values="{Binding DataFeedback.NegativePressureFlowRate}" /> | Values="{Binding DataFeedback.NegativePressureFlowRate}" /> | ||||
<lvc:LineSeries | |||||
Fill="Transparent" LineSmoothness="1" | |||||
PointGeometry="{x:Null}" | |||||
Stroke="Yellow" StrokeThickness="2" | |||||
Values="{Binding PartReferenceData.SteamFlowRate}" /> | |||||
<lvc:LineSeries | |||||
Fill="Transparent" LineSmoothness="1" | |||||
PointGeometry="{x:Null}" | |||||
Stroke="Green" StrokeThickness="2" | |||||
Values="{Binding PartReferenceData.NegativePressureFlowRate}" /> | |||||
</lvc:CartesianChart.Series> | </lvc:CartesianChart.Series> | ||||
<lvc:CartesianChart.AxisY> | <lvc:CartesianChart.AxisY> | ||||
<lvc:Axis LabelFormatter="{Binding doubleFormatter}"> | <lvc:Axis LabelFormatter="{Binding doubleFormatter}"> | ||||
@@ -369,8 +396,14 @@ | |||||
Width="20" Height="2" Margin="20,0,0,2" Fill="Red" /> | Width="20" Height="2" Margin="20,0,0,2" Fill="Red" /> | ||||
<TextBlock Foreground="White" Text="反应釜蒸汽流量" /> | <TextBlock Foreground="White" Text="反应釜蒸汽流量" /> | ||||
<Rectangle | <Rectangle | ||||
Width="20" Height="2" Margin="20,0,0,2" Fill="#F1C74B" /> | |||||
Width="20" Height="2" Margin="20,0,0,2" Fill="Blue" /> | |||||
<TextBlock Foreground="White" Text="负压流量" /> | <TextBlock Foreground="White" Text="负压流量" /> | ||||
<Rectangle | |||||
Width="20" Height="2" Margin="20,0,0,2" Fill="Yellow" /> | |||||
<TextBlock Foreground="White" Text="反应釜蒸汽流量_参考" /> | |||||
<Rectangle | |||||
Width="20" Height="2" Margin="20,0,0,2" Fill="Green" /> | |||||
<TextBlock Foreground="White" Text="负压流量_参考" /> | |||||
</StackPanel> | </StackPanel> | ||||
</StackPanel> | </StackPanel> | ||||
@@ -385,13 +418,23 @@ | |||||
<lvc:LineSeries | <lvc:LineSeries | ||||
Fill="Transparent" LineSmoothness="1" | Fill="Transparent" LineSmoothness="1" | ||||
PointGeometry="{x:Null}" | PointGeometry="{x:Null}" | ||||
Stroke="Blue" StrokeThickness="2" | |||||
Stroke="Red" StrokeThickness="2" | |||||
Values="{Binding DataFeedback.WeighingWaterTankWeight}" /> | Values="{Binding DataFeedback.WeighingWaterTankWeight}" /> | ||||
<lvc:LineSeries | <lvc:LineSeries | ||||
Fill="Transparent" LineSmoothness="1" | Fill="Transparent" LineSmoothness="1" | ||||
PointGeometry="{x:Null}" | PointGeometry="{x:Null}" | ||||
Stroke="Brown" StrokeThickness="2" | |||||
Stroke="Blue" StrokeThickness="2" | |||||
Values="{Binding DataFeedback.BrineTankWeight}" /> | Values="{Binding DataFeedback.BrineTankWeight}" /> | ||||
<lvc:LineSeries | |||||
Fill="Transparent" LineSmoothness="1" | |||||
PointGeometry="{x:Null}" | |||||
Stroke="Yellow" StrokeThickness="2" | |||||
Values="{Binding PartReferenceData.WeighingWaterTankWeight}" /> | |||||
<lvc:LineSeries | |||||
Fill="Transparent" LineSmoothness="1" | |||||
PointGeometry="{x:Null}" | |||||
Stroke="Green" StrokeThickness="2" | |||||
Values="{Binding PartReferenceData.BrineTankWeight}" /> | |||||
</lvc:CartesianChart.Series> | </lvc:CartesianChart.Series> | ||||
<lvc:CartesianChart.AxisY> | <lvc:CartesianChart.AxisY> | ||||
<lvc:Axis | <lvc:Axis | ||||
@@ -413,11 +456,17 @@ | |||||
<StackPanel Margin="0,10,0,0" Orientation="Horizontal"> | <StackPanel Margin="0,10,0,0" Orientation="Horizontal"> | ||||
<TextBlock Foreground="White" Text="重量曲线/kg" /> | <TextBlock Foreground="White" Text="重量曲线/kg" /> | ||||
<Rectangle | <Rectangle | ||||
Width="20" Height="2" Margin="20,0,0,2" Fill="Blue" /> | |||||
Width="20" Height="2" Margin="20,0,0,2" Fill="Red" /> | |||||
<TextBlock Foreground="White" Text="冷却水罐重量" /> | <TextBlock Foreground="White" Text="冷却水罐重量" /> | ||||
<Rectangle | <Rectangle | ||||
Width="20" Height="2" Margin="20,0,0,2" Fill="Brown" /> | |||||
Width="20" Height="2" Margin="20,0,0,2" Fill="Blue" /> | |||||
<TextBlock Foreground="White" Text="卤水罐重量" /> | <TextBlock Foreground="White" Text="卤水罐重量" /> | ||||
<Rectangle | |||||
Width="20" Height="2" Margin="20,0,0,2" Fill="Yellow" /> | |||||
<TextBlock Foreground="White" Text="冷却水罐重量_参考" /> | |||||
<Rectangle | |||||
Width="20" Height="2" Margin="20,0,0,2" Fill="Green" /> | |||||
<TextBlock Foreground="White" Text="卤水罐重量_参考" /> | |||||
</StackPanel> | </StackPanel> | ||||
</StackPanel> | </StackPanel> | ||||
@@ -432,8 +481,13 @@ | |||||
<lvc:LineSeries | <lvc:LineSeries | ||||
Fill="Transparent" LineSmoothness="1" | Fill="Transparent" LineSmoothness="1" | ||||
PointGeometry="{x:Null}" | PointGeometry="{x:Null}" | ||||
Stroke="White" StrokeThickness="2" | |||||
Stroke="Red" StrokeThickness="2" | |||||
Values="{Binding DataFeedback.CondensateWaterHumidity}" /> | Values="{Binding DataFeedback.CondensateWaterHumidity}" /> | ||||
<lvc:LineSeries | |||||
Fill="Transparent" LineSmoothness="1" | |||||
PointGeometry="{x:Null}" | |||||
Stroke="Yellow" StrokeThickness="2" | |||||
Values="{Binding PartReferenceData.CondensateWaterHumidity}" /> | |||||
</lvc:CartesianChart.Series> | </lvc:CartesianChart.Series> | ||||
<lvc:CartesianChart.AxisY> | <lvc:CartesianChart.AxisY> | ||||
<lvc:Axis MaxValue="110" MinValue="0"> | <lvc:Axis MaxValue="110" MinValue="0"> | ||||
@@ -453,8 +507,11 @@ | |||||
<StackPanel Margin="0,10,0,0" Orientation="Horizontal"> | <StackPanel Margin="0,10,0,0" Orientation="Horizontal"> | ||||
<TextBlock Foreground="White" Text="湿度曲线" /> | <TextBlock Foreground="White" Text="湿度曲线" /> | ||||
<Rectangle | <Rectangle | ||||
Width="20" Height="2" Margin="20,0,0,2" Fill="White" /> | |||||
Width="20" Height="2" Margin="20,0,0,2" Fill="Red" /> | |||||
<TextBlock Foreground="White" Text="冷凝水罐湿度" /> | <TextBlock Foreground="White" Text="冷凝水罐湿度" /> | ||||
<Rectangle | |||||
Width="20" Height="2" Margin="20,0,0,2" Fill="Yellow" /> | |||||
<TextBlock Foreground="White" Text="冷凝水罐湿度_参考" /> | |||||
</StackPanel> | </StackPanel> | ||||
</StackPanel> | </StackPanel> | ||||
@@ -469,8 +526,13 @@ | |||||
<lvc:LineSeries | <lvc:LineSeries | ||||
Fill="Transparent" LineSmoothness="1" | Fill="Transparent" LineSmoothness="1" | ||||
PointGeometry="{x:Null}" | PointGeometry="{x:Null}" | ||||
Stroke="White" StrokeThickness="2" | |||||
Stroke="Red" StrokeThickness="2" | |||||
Values="{Binding DataFeedback.ReactEncoderValue}" /> | Values="{Binding DataFeedback.ReactEncoderValue}" /> | ||||
<lvc:LineSeries | |||||
Fill="Transparent" LineSmoothness="1" | |||||
PointGeometry="{x:Null}" | |||||
Stroke="Yellow" StrokeThickness="2" | |||||
Values="{Binding PartReferenceData.ReactEncoderValue}" /> | |||||
</lvc:CartesianChart.Series> | </lvc:CartesianChart.Series> | ||||
<lvc:CartesianChart.AxisY> | <lvc:CartesianChart.AxisY> | ||||
<lvc:Axis MaxValue="400" MinValue="-10"> | <lvc:Axis MaxValue="400" MinValue="-10"> | ||||
@@ -490,8 +552,11 @@ | |||||
<StackPanel Margin="0,10,0,0" Orientation="Horizontal"> | <StackPanel Margin="0,10,0,0" Orientation="Horizontal"> | ||||
<TextBlock Foreground="White" Text="反应釜角度曲线" /> | <TextBlock Foreground="White" Text="反应釜角度曲线" /> | ||||
<Rectangle | <Rectangle | ||||
Width="20" Height="2" Margin="20,0,0,2" Fill="White" /> | |||||
Width="20" Height="2" Margin="20,0,0,2" Fill="Red" /> | |||||
<TextBlock Foreground="White" Text="反应釜编码器角度值" /> | <TextBlock Foreground="White" Text="反应釜编码器角度值" /> | ||||
<Rectangle | |||||
Width="20" Height="2" Margin="20,0,0,2" Fill="Yellow" /> | |||||
<TextBlock Foreground="White" Text="反应釜编码器角度值_参考" /> | |||||
</StackPanel> | </StackPanel> | ||||
</StackPanel> | </StackPanel> | ||||
@@ -18,6 +18,8 @@ using System.Windows.Navigation; | |||||
using System.Windows.Shapes; | using System.Windows.Shapes; | ||||
using ThingsGateway.Foundation.Core; | using ThingsGateway.Foundation.Core; | ||||
using BPASmartClient.Academy._50L; | using BPASmartClient.Academy._50L; | ||||
using ThingsGateway.Foundation.Extension.String; | |||||
using BPASmartClient.CustomResource.UserControls.MessageShow; | |||||
namespace BPASmartClient.Academy.View | namespace BPASmartClient.Academy.View | ||||
{ | { | ||||
@@ -38,11 +40,22 @@ namespace BPASmartClient.Academy.View | |||||
public PlotModel plotModel { get; set; } = new PlotModel(); | public PlotModel plotModel { get; set; } = new PlotModel(); | ||||
private void DataView_CLick(object sender, MouseButtonEventArgs e) | private void DataView_CLick(object sender, MouseButtonEventArgs e) | ||||
{ | { | ||||
var datas = SqliteOperate.GetInstance.QueryableById(PlcControl.GetInstance.id); | |||||
if (datas is null || datas.Count==0) | |||||
{ | |||||
NoticeDemoViewModel.OpenMsg(EnumPromptType.Error,App.MainWindow,"无数据","当前无曲线数据。"); | |||||
return; | |||||
} | |||||
ooo.Visibility = Visibility.Collapsed; | ooo.Visibility = Visibility.Collapsed; | ||||
double min = DateTimeAxis.ToDouble(System.DateTime.Now.AddMinutes(-10)); | |||||
double max = DateTimeAxis.ToDouble(System.DateTime.Now); | |||||
double maxrange = max - min; | |||||
CartesianChart liveCharts = sender as CartesianChart; | CartesianChart liveCharts = sender as CartesianChart; | ||||
double min = DateTimeAxis.ToDouble(DateTime.MinValue); | |||||
DateTime startTime = datas.Select(x => x.Createtime).Min(); | |||||
double max = DateTimeAxis.ToDouble(new DateTime((datas.Select(x=>x.Createtime).Max().AddMinutes(6) - startTime).Ticks)); | |||||
//double min = DateTimeAxis.ToDouble(DateTime.Now.AddMinutes(-10)); | |||||
//double max = DateTimeAxis.ToDouble(DateTime.Now); | |||||
double maxrange = max - min; | |||||
switch (liveCharts.ToolTip) | switch (liveCharts.ToolTip) | ||||
{ | { | ||||
@@ -51,27 +64,31 @@ namespace BPASmartClient.Academy.View | |||||
plotModel.Series.Clear(); | plotModel.Series.Clear(); | ||||
plotModel = new PlotModel() { Title = "温度曲线" }; | plotModel = new PlotModel() { Title = "温度曲线" }; | ||||
chartGrid.Visibility = Visibility.Visible; | chartGrid.Visibility = Visibility.Visible; | ||||
OxyPlot.Series.LineSeries templine = new OxyPlot.Series.LineSeries() { LineStyle = LineStyle.Solid, Title = "反应釜温度", MarkerFill = OxyColor.FromRgb(110, 79, 79), MarkerSize = 2, LineLegendPosition = OxyPlot.Series.LineLegendPosition.End }; | |||||
OxyPlot.Series.LineSeries templine_1 = new OxyPlot.Series.LineSeries() { LineStyle = LineStyle.Solid, Title = "冷凝水罐温度", MarkerFill = OxyColor.FromRgb(110, 79, 79), MarkerSize = 2, LineLegendPosition = OxyPlot.Series.LineLegendPosition.End }; | |||||
List<DataPoint> twValues = new List<DataPoint>(); | |||||
List<DataPoint> tvValues = new List<DataPoint>(); | |||||
ConcurrentDictionary<DateTime,float> keyValues = new ConcurrentDictionary<DateTime,float>(); | |||||
SqliteOperate.GetInstance.QueryableById(PlcControl.GetInstance.id).ForEach(t => | |||||
{ | |||||
twValues.Add(new DataPoint(DateTimeAxis.ToDouble(t.Createtime), t.Temperature)); | |||||
tvValues.Add(new DataPoint(DateTimeAxis.ToDouble(t.Createtime), t.CondensateWaterTemperature)); | |||||
keyValues[t.Createtime] = t.Temperature; | |||||
}); | |||||
templine.Points.AddRange(twValues); | |||||
templine_1.Points.AddRange(tvValues); | |||||
//line_2.Points.AddRange(tmValues); | |||||
if (!(plotModel.Axes.Count > 0)) | if (!(plotModel.Axes.Count > 0)) | ||||
{ | { | ||||
plotModel.Axes.Add(new DateTimeAxis() { Position = OxyPlot.Axes.AxisPosition.Bottom, Title = "时间", StringFormat = "hh:mm:ss", Minimum = min, Maximum = max }); | |||||
plotModel.Axes.Add(new DateTimeAxis() { Position = OxyPlot.Axes.AxisPosition.Bottom, Title = "时间", StringFormat = "hh:mm:ss", AbsoluteMinimum = min, AbsoluteMaximum = max }); | |||||
plotModel.Axes.Add(new LinearAxis() { Key = "y1", Title = "温度/℃", Position = OxyPlot.Axes.AxisPosition.Left, LabelFormatter = value => value.ToString("f2") }); | plotModel.Axes.Add(new LinearAxis() { Key = "y1", Title = "温度/℃", Position = OxyPlot.Axes.AxisPosition.Left, LabelFormatter = value => value.ToString("f2") }); | ||||
} | } | ||||
plotModel.Series.Add(templine); | |||||
plotModel.Series.Add(templine_1); | |||||
List<HistoryDataPoint> reactorTemp = new(); | |||||
List<HistoryDataPoint> CWTTemp = new(); | |||||
datas.ForEach(t => | |||||
{ | |||||
var time =new DateTime((t.Createtime - startTime).Ticks); | |||||
reactorTemp.Add(new(time, t.Temperature)); | |||||
CWTTemp.Add(new(time, t.CondensateWaterTemperature)); | |||||
}); | |||||
AddOxyLineSeries("反应釜温度", OxyColor.FromRgb(110, 79, 79), reactorTemp); | |||||
AddOxyLineSeries("冷凝水罐温度", OxyColor.FromRgb(110, 79, 79), CWTTemp); | |||||
if (this.DataContext is DeviceChart50LViewModel viewModel && viewModel.ReferenceData != null) | |||||
{ | |||||
List<HistoryDataPoint> refReactorTemp = new(); | |||||
List<HistoryDataPoint> refCWTTemp = new(); | |||||
refReactorTemp = viewModel.ReferenceData.Temperature.Select(x => new HistoryDataPoint(x.DateTime, (float)x.Value)).ToList(); | |||||
refCWTTemp = viewModel.ReferenceData.CondensateWaterTemperature.Select(x => new HistoryDataPoint(x.DateTime, (float)x.Value)).ToList(); | |||||
AddOxyLineSeries("反应釜温度_参考", OxyColor.FromRgb(110, 79, 79), refReactorTemp); | |||||
AddOxyLineSeries("冷凝水罐温度_参考", OxyColor.FromRgb(110, 79, 79), refCWTTemp); | |||||
} | |||||
plotModel.InvalidatePlot(true);//重新加载曲线 | plotModel.InvalidatePlot(true);//重新加载曲线 | ||||
chartView.Model = plotModel; | chartView.Model = plotModel; | ||||
} | } | ||||
@@ -233,7 +250,7 @@ namespace BPASmartClient.Academy.View | |||||
break; | break; | ||||
} | } | ||||
} | } | ||||
private void AddOxyLineSeries(string title,OxyColor markerFill, ConcurrentDictionary<DateTime, float> keyValues) | |||||
private void AddOxyLineSeries(string title,OxyColor markerFill, List<HistoryDataPoint> dataPoints) | |||||
{ | { | ||||
OxyPlot.Series.LineSeries templine = new OxyPlot.Series.LineSeries() | OxyPlot.Series.LineSeries templine = new OxyPlot.Series.LineSeries() | ||||
{ LineStyle = LineStyle.Solid, | { LineStyle = LineStyle.Solid, | ||||
@@ -243,9 +260,9 @@ namespace BPASmartClient.Academy.View | |||||
LineLegendPosition = OxyPlot.Series.LineLegendPosition.End | LineLegendPosition = OxyPlot.Series.LineLegendPosition.End | ||||
}; | }; | ||||
List<DataPoint> twValues = new List<DataPoint>(); | List<DataPoint> twValues = new List<DataPoint>(); | ||||
foreach (var item in keyValues) | |||||
foreach (var item in dataPoints) | |||||
{ | { | ||||
twValues.Add(new DataPoint(DateTimeAxis.ToDouble(item.Key), item.Value)); | |||||
twValues.Add(new DataPoint(DateTimeAxis.ToDouble(item.DateTime), item.Value)); | |||||
} | } | ||||
templine.Points.AddRange(twValues); | templine.Points.AddRange(twValues); | ||||
plotModel.Series.Add(templine); | plotModel.Series.Add(templine); | ||||
@@ -259,5 +276,12 @@ namespace BPASmartClient.Academy.View | |||||
plotModel.InvalidatePlot(true); | plotModel.InvalidatePlot(true); | ||||
chartView.Model = plotModel; | chartView.Model = plotModel; | ||||
} | } | ||||
record HistoryDataPoint(DateTime DateTime, float Value); | |||||
//class HistoryDataPoint | |||||
//{ | |||||
// public DateTime DateTime { get; set; } | |||||
// public float Value { get; set; } | |||||
//} | |||||
} | } | ||||
} | } |
@@ -89,6 +89,7 @@ | |||||
</Style> | </Style> | ||||
</UserControl.Resources> | </UserControl.Resources> | ||||
<Grid> | <Grid> | ||||
<!--#region 设备类型选择 --> | |||||
<Grid | <Grid | ||||
Height="50" HorizontalAlignment="Right" VerticalAlignment="Top"> | Height="50" HorizontalAlignment="Right" VerticalAlignment="Top"> | ||||
<Border Margin="0,0,100,0" HorizontalAlignment="Center"> | <Border Margin="0,0,100,0" HorizontalAlignment="Center"> | ||||
@@ -99,6 +100,7 @@ | |||||
Style="{StaticResource ButtonStyle}" /> | Style="{StaticResource ButtonStyle}" /> | ||||
</Border> | </Border> | ||||
</Grid> | </Grid> | ||||
<!--#endregion--> | |||||
<Grid | <Grid | ||||
x:Name="ooo" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" d:IsHitTestVisible="True" | x:Name="ooo" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" d:IsHitTestVisible="True" | ||||
d:Opacity="1" IsHitTestVisible="False" Opacity="0.5"> | d:Opacity="1" IsHitTestVisible="False" Opacity="0.5"> | ||||
@@ -107,6 +109,7 @@ | |||||
<RowDefinition Height="0" /> | <RowDefinition Height="0" /> | ||||
</Grid.RowDefinitions> | </Grid.RowDefinitions> | ||||
<Grid> | <Grid> | ||||
<!--#region 控件显示主体 --> | |||||
<Grid Margin="0,100"> | <Grid Margin="0,100"> | ||||
<Viewbox Stretch="Uniform"> | <Viewbox Stretch="Uniform"> | ||||
<Canvas | <Canvas | ||||
@@ -212,9 +215,10 @@ | |||||
<!--#region 阀门4 回水阀--> | <!--#region 阀门4 回水阀--> | ||||
<TextBlock | <TextBlock | ||||
Canvas.Left="507" Canvas.Top="220" FontSize="10" | |||||
Canvas.Left="507" Canvas.Top="220" HorizontalAlignment="Left" VerticalAlignment="Center" | |||||
FontSize="10" | |||||
Foreground="{Binding DeviceStatus.VX103, Converter={StaticResource deviceConvert}, ConverterParameter=4}" | Foreground="{Binding DeviceStatus.VX103, Converter={StaticResource deviceConvert}, ConverterParameter=4}" | ||||
Text="回水阀" HorizontalAlignment="Left" VerticalAlignment="Center" /> | |||||
Text="回水阀" /> | |||||
<StackPanel | <StackPanel | ||||
Canvas.Left="427" Canvas.Top="200" Orientation="Horizontal"> | Canvas.Left="427" Canvas.Top="200" Orientation="Horizontal"> | ||||
<bpa:PipeLineH | <bpa:PipeLineH | ||||
@@ -460,10 +464,10 @@ | |||||
Foreground="{Binding DeviceStatus.VX109, Converter={StaticResource deviceConvert}, ConverterParameter=4}" | Foreground="{Binding DeviceStatus.VX109, Converter={StaticResource deviceConvert}, ConverterParameter=4}" | ||||
Text="蒸汽疏水阀" /> | Text="蒸汽疏水阀" /> | ||||
<bpa:PipeLineV | <bpa:PipeLineV | ||||
Width="12" Height="43" | |||||
Canvas.Left="348" Canvas.Top="287" Width="12" Height="43" | |||||
Direction="{Binding DeviceStatus.VX109, Converter={StaticResource deviceConvert}, ConverterParameter=1}" | Direction="{Binding DeviceStatus.VX109, Converter={StaticResource deviceConvert}, ConverterParameter=1}" | ||||
Fill="{Binding DeviceStatus.VX109, Converter={StaticResource deviceConvert}, ConverterParameter=2}" | Fill="{Binding DeviceStatus.VX109, Converter={StaticResource deviceConvert}, ConverterParameter=2}" | ||||
LineWidth="4" Canvas.Left="348" Canvas.Top="287" /> | |||||
LineWidth="4" /> | |||||
<bpa:HandValve | <bpa:HandValve | ||||
Width="35" Height="35" Margin="341,296,402,154" | Width="35" Height="35" Margin="341,296,402,154" | ||||
OpenEnable="{Binding DeviceStatus.VX109}" | OpenEnable="{Binding DeviceStatus.VX109}" | ||||
@@ -513,9 +517,10 @@ | |||||
<!--#region 阀门12 冷却水排水阀--> | <!--#region 阀门12 冷却水排水阀--> | ||||
<TextBlock | <TextBlock | ||||
Canvas.Left="23" Canvas.Top="306" FontSize="10" | |||||
Canvas.Left="23" Canvas.Top="306" HorizontalAlignment="Left" VerticalAlignment="Center" | |||||
FontSize="10" | |||||
Foreground="{Binding DeviceStatus.VX111, Converter={StaticResource deviceConvert}, ConverterParameter=4}" | Foreground="{Binding DeviceStatus.VX111, Converter={StaticResource deviceConvert}, ConverterParameter=4}" | ||||
Text="冷却水排水阀" HorizontalAlignment="Left" VerticalAlignment="Center" /> | |||||
Text="冷却水排水阀" /> | |||||
<bpa:PipeLineV | <bpa:PipeLineV | ||||
Width="12" Height="50" Margin="105,290,402,154" | Width="12" Height="50" Margin="105,290,402,154" | ||||
Direction="{Binding DeviceStatus.VX111, Converter={StaticResource deviceConvert}, ConverterParameter=1}" | Direction="{Binding DeviceStatus.VX111, Converter={StaticResource deviceConvert}, ConverterParameter=1}" | ||||
@@ -681,9 +686,10 @@ | |||||
</bpa:HandValve> | </bpa:HandValve> | ||||
</StackPanel> | </StackPanel> | ||||
<TextBlock | <TextBlock | ||||
Canvas.Left="178" Canvas.Top="340" FontSize="10" | |||||
Canvas.Left="178" Canvas.Top="340" HorizontalAlignment="Left" VerticalAlignment="Center" | |||||
FontSize="10" | |||||
Foreground="{Binding DeviceStatus.VX114, Converter={StaticResource deviceConvert}, ConverterParameter=4}" | Foreground="{Binding DeviceStatus.VX114, Converter={StaticResource deviceConvert}, ConverterParameter=4}" | ||||
Text="出料阀" HorizontalAlignment="Left" VerticalAlignment="Center" /> | |||||
Text="出料阀" /> | |||||
<!--#endregion--> | <!--#endregion--> | ||||
<!--#region 水罐--> | <!--#region 水罐--> | ||||
@@ -717,20 +723,23 @@ | |||||
<!--#region 仪器标注--> | <!--#region 仪器标注--> | ||||
<TextBlock | <TextBlock | ||||
Canvas.Left="107" Canvas.Top="84" FontSize="10" Foreground="Blue" | |||||
Text="配料罐" HorizontalAlignment="Left" VerticalAlignment="Center" /> | |||||
Canvas.Left="107" Canvas.Top="84" HorizontalAlignment="Left" VerticalAlignment="Center" | |||||
FontSize="10" Foreground="Blue" Text="配料罐" /> | |||||
<TextBlock | <TextBlock | ||||
Canvas.Left="92" Canvas.Top="70" Width="60" Foreground="Red" | Canvas.Left="92" Canvas.Top="70" Width="60" Foreground="Red" | ||||
Text="{Binding DeviceStatus.TempMaterial, StringFormat='{}{0}℃'}" | Text="{Binding DeviceStatus.TempMaterial, StringFormat='{}{0}℃'}" | ||||
TextAlignment="Center" /> | TextAlignment="Center" /> | ||||
<TextBlock | <TextBlock | ||||
Canvas.Left="217" Canvas.Top="290" Foreground="Blue" Text="反应釜" FontSize="10" HorizontalAlignment="Left" VerticalAlignment="Center"/> | |||||
Canvas.Left="217" Canvas.Top="290" HorizontalAlignment="Left" VerticalAlignment="Center" | |||||
FontSize="10" Foreground="Blue" Text="反应釜" /> | |||||
<TextBlock | <TextBlock | ||||
Canvas.Left="203" Canvas.Top="250" Width="60" Foreground="Red" FontSize="10" | |||||
Canvas.Left="203" Canvas.Top="250" Width="60" FontSize="10" | |||||
Foreground="Red" | |||||
Text="{Binding DeviceStatus.TempWok, StringFormat='{}{0}℃'}" | Text="{Binding DeviceStatus.TempWok, StringFormat='{}{0}℃'}" | ||||
TextAlignment="Center" /> | TextAlignment="Center" /> | ||||
<TextBlock | <TextBlock | ||||
Canvas.Left="203" Canvas.Top="270" Width="60" Foreground="Red" FontSize="10" | |||||
Canvas.Left="203" Canvas.Top="270" Width="60" FontSize="10" | |||||
Foreground="Red" | |||||
Text="{Binding DeviceStatus.PressureWok, StringFormat='{}{0:f2}mpa'}" | Text="{Binding DeviceStatus.PressureWok, StringFormat='{}{0:f2}mpa'}" | ||||
TextAlignment="Center" /> | TextAlignment="Center" /> | ||||
<StackPanel | <StackPanel | ||||
@@ -750,18 +759,21 @@ | |||||
Text="{Binding DeviceStatus.OpenValue, StringFormat='{}{0:f2}%'}" /> | Text="{Binding DeviceStatus.OpenValue, StringFormat='{}{0:f2}%'}" /> | ||||
</StackPanel> | </StackPanel> | ||||
<TextBlock | <TextBlock | ||||
Canvas.Left="573" Canvas.Top="88" Foreground="Blue" Text="冷凝器" FontSize="10" HorizontalAlignment="Left" VerticalAlignment="Center"/> | |||||
Canvas.Left="573" Canvas.Top="88" HorizontalAlignment="Left" VerticalAlignment="Center" | |||||
FontSize="10" Foreground="Blue" Text="冷凝器" /> | |||||
<TextBlock | <TextBlock | ||||
Canvas.Left="389" Canvas.Top="30" Width="150" d:Text="反应釜排气温度:12.33℃" | Canvas.Left="389" Canvas.Top="30" Width="150" d:Text="反应釜排气温度:12.33℃" | ||||
FontSize="10" Foreground="Red" | FontSize="10" Foreground="Red" | ||||
Text="{Binding DeviceStatus.TempVent, StringFormat='反应釜排气温度:{0}℃'}" | Text="{Binding DeviceStatus.TempVent, StringFormat='反应釜排气温度:{0}℃'}" | ||||
TextAlignment="Center" /> | TextAlignment="Center" /> | ||||
<TextBlock | <TextBlock | ||||
Canvas.Left="573" Canvas.Top="168" Foreground="Blue" Text="蒸馏罐" FontSize="10" HorizontalAlignment="Left" VerticalAlignment="Center"/> | |||||
Canvas.Left="573" Canvas.Top="168" HorizontalAlignment="Left" VerticalAlignment="Center" | |||||
FontSize="10" Foreground="Blue" Text="蒸馏罐" /> | |||||
<TextBlock | <TextBlock | ||||
Canvas.Left="590" Canvas.Top="312" Foreground="Blue" Text="水罐" FontSize="10" HorizontalAlignment="Left" VerticalAlignment="Center"/> | |||||
Canvas.Left="590" Canvas.Top="312" HorizontalAlignment="Left" VerticalAlignment="Center" | |||||
FontSize="10" Foreground="Blue" Text="水罐" /> | |||||
<TextBlock | <TextBlock | ||||
Canvas.Left="570" Canvas.Top="295" Width="60" FontSize="10" | |||||
Canvas.Left="570" Canvas.Top="295" Width="60" FontSize="10" | |||||
Foreground="Red" | Foreground="Red" | ||||
Text="{Binding DeviceStatus.WeightWok, StringFormat='{}{0:f2}g'}" | Text="{Binding DeviceStatus.WeightWok, StringFormat='{}{0:f2}g'}" | ||||
TextAlignment="Center" /> | TextAlignment="Center" /> | ||||
@@ -772,7 +784,7 @@ | |||||
<!--#region 水罐重量清零--> | <!--#region 水罐重量清零--> | ||||
<Button | <Button | ||||
Canvas.Left="480" Canvas.Top="370" Width="100" Height="22" | |||||
Canvas.Left="480" Canvas.Top="370" Width="100" Height="22" | |||||
VerticalAlignment="Center" Click="ClearBtn_CLick" Content="水罐重量清零" FontSize="10" | VerticalAlignment="Center" Click="ClearBtn_CLick" Content="水罐重量清零" FontSize="10" | ||||
Style="{StaticResource ButtonStyle}" /> | Style="{StaticResource ButtonStyle}" /> | ||||
<!--#endregion--> | <!--#endregion--> | ||||
@@ -865,7 +877,8 @@ | |||||
Text="⬛" TextAlignment="Center" /> | Text="⬛" TextAlignment="Center" /> | ||||
</StackPanel> | </StackPanel> | ||||
<StackPanel | <StackPanel | ||||
Canvas.Left="483" Canvas.Top="86" Orientation="Vertical" HorizontalAlignment="Left" VerticalAlignment="Center"> | |||||
Canvas.Left="483" Canvas.Top="86" HorizontalAlignment="Left" VerticalAlignment="Center" | |||||
Orientation="Vertical"> | |||||
<RadioButton | <RadioButton | ||||
Width="55" Height="22" Margin="0,0,0,2" BorderThickness="0" | Width="55" Height="22" Margin="0,0,0,2" BorderThickness="0" | ||||
Click="Open_Click" Content="回油阀:开" FontSize="8" Foreground="White" | Click="Open_Click" Content="回油阀:开" FontSize="8" Foreground="White" | ||||
@@ -947,7 +960,7 @@ | |||||
<RadioButton | <RadioButton | ||||
Width="70" Height="22" Margin="0,0,0,2" BorderThickness="0" | Width="70" Height="22" Margin="0,0,0,2" BorderThickness="0" | ||||
Click="Open_Click" Content="配料釜蒸汽阀:开" FontSize="8" Foreground="White" | Click="Open_Click" Content="配料釜蒸汽阀:开" FontSize="8" Foreground="White" | ||||
GroupName="8" | |||||
GroupName="10" | |||||
Style="{StaticResource radiobutton}" | Style="{StaticResource radiobutton}" | ||||
Tag="10" /> | Tag="10" /> | ||||
<RadioButton | <RadioButton | ||||
@@ -957,8 +970,9 @@ | |||||
Style="{StaticResource radiobutton}" | Style="{StaticResource radiobutton}" | ||||
Tag="10" /> | Tag="10" /> | ||||
</StackPanel> | </StackPanel> | ||||
<StackPanel Canvas.Top="248" HorizontalAlignment="Left" VerticalAlignment="Center" | |||||
Orientation="Vertical" Canvas.Left="10"> | |||||
<StackPanel | |||||
Canvas.Left="10" Canvas.Top="248" HorizontalAlignment="Left" VerticalAlignment="Center" | |||||
Orientation="Vertical"> | |||||
<RadioButton | <RadioButton | ||||
Width="55" Height="22" Margin="0,0,0,2" BorderThickness="0" | Width="55" Height="22" Margin="0,0,0,2" BorderThickness="0" | ||||
Click="Open_Click" Content="蒸汽阀:开" FontSize="8" Foreground="White" | Click="Open_Click" Content="蒸汽阀:开" FontSize="8" Foreground="White" | ||||
@@ -973,7 +987,8 @@ | |||||
Tag="11" /> | Tag="11" /> | ||||
</StackPanel> | </StackPanel> | ||||
<StackPanel | <StackPanel | ||||
Canvas.Left="272" Canvas.Top="318" Orientation="Vertical" HorizontalAlignment="Left" VerticalAlignment="Center"> | |||||
Canvas.Left="272" Canvas.Top="318" HorizontalAlignment="Left" VerticalAlignment="Center" | |||||
Orientation="Vertical"> | |||||
<RadioButton | <RadioButton | ||||
Width="70" Height="22" Margin="0,0,0,2" BorderThickness="0" | Width="70" Height="22" Margin="0,0,0,2" BorderThickness="0" | ||||
Click="Open_Click" Content="蒸汽疏水阀:开" FontSize="8" Foreground="White" | Click="Open_Click" Content="蒸汽疏水阀:开" FontSize="8" Foreground="White" | ||||
@@ -988,7 +1003,8 @@ | |||||
Tag="12" /> | Tag="12" /> | ||||
</StackPanel> | </StackPanel> | ||||
<StackPanel | <StackPanel | ||||
Canvas.Left="396" Canvas.Top="255" Orientation="Vertical" HorizontalAlignment="Center" VerticalAlignment="Top"> | |||||
Canvas.Left="396" Canvas.Top="255" HorizontalAlignment="Center" VerticalAlignment="Top" | |||||
Orientation="Vertical"> | |||||
<RadioButton | <RadioButton | ||||
Width="70" Height="22" Margin="0,0,0,2" BorderThickness="0" | Width="70" Height="22" Margin="0,0,0,2" BorderThickness="0" | ||||
Click="Open_Click" Content="冷却水给水阀:开" FontSize="8" Foreground="White" | Click="Open_Click" Content="冷却水给水阀:开" FontSize="8" Foreground="White" | ||||
@@ -1002,8 +1018,9 @@ | |||||
Style="{StaticResource radiobutton}" | Style="{StaticResource radiobutton}" | ||||
Tag="13" /> | Tag="13" /> | ||||
</StackPanel> | </StackPanel> | ||||
<StackPanel Canvas.Top="322" HorizontalAlignment="Center" VerticalAlignment="Top" | |||||
Orientation="Vertical" Canvas.Left="19"> | |||||
<StackPanel | |||||
Canvas.Left="19" Canvas.Top="322" HorizontalAlignment="Center" VerticalAlignment="Top" | |||||
Orientation="Vertical"> | |||||
<RadioButton | <RadioButton | ||||
Width="70" Height="22" Margin="0,0,0,2" BorderThickness="0" | Width="70" Height="22" Margin="0,0,0,2" BorderThickness="0" | ||||
Click="Open_Click" Content="冷却水排水阀:开" FontSize="8" Foreground="White" | Click="Open_Click" Content="冷却水排水阀:开" FontSize="8" Foreground="White" | ||||
@@ -1018,7 +1035,8 @@ | |||||
Tag="18" /> | Tag="18" /> | ||||
</StackPanel> | </StackPanel> | ||||
<StackPanel | <StackPanel | ||||
Canvas.Left="770" Canvas.Top="128" Orientation="Vertical" HorizontalAlignment="Left" VerticalAlignment="Center"> | |||||
Canvas.Left="770" Canvas.Top="128" HorizontalAlignment="Left" VerticalAlignment="Center" | |||||
Orientation="Vertical"> | |||||
<RadioButton | <RadioButton | ||||
Width="70" Height="22" Margin="0,0,0,2" BorderThickness="0" | Width="70" Height="22" Margin="0,0,0,2" BorderThickness="0" | ||||
Click="Open_Click" Content="分馏真空阀:开" FontSize="8" Foreground="White" | Click="Open_Click" Content="分馏真空阀:开" FontSize="8" Foreground="White" | ||||
@@ -1049,7 +1067,8 @@ | |||||
Tag="20" /> | Tag="20" /> | ||||
</StackPanel> | </StackPanel> | ||||
<StackPanel | <StackPanel | ||||
Canvas.Left="773" Canvas.Top="279" Orientation="Vertical" HorizontalAlignment="Left" VerticalAlignment="Center"> | |||||
Canvas.Left="773" Canvas.Top="279" HorizontalAlignment="Left" VerticalAlignment="Center" | |||||
Orientation="Vertical"> | |||||
<RadioButton | <RadioButton | ||||
Width="55" Height="22" Margin="0,0,0,2" BorderThickness="0" | Width="55" Height="22" Margin="0,0,0,2" BorderThickness="0" | ||||
Click="Open_Click" Content="真空泵:开" FontSize="8" Foreground="White" | Click="Open_Click" Content="真空泵:开" FontSize="8" Foreground="White" | ||||
@@ -1437,6 +1456,8 @@ | |||||
</Canvas> | </Canvas> | ||||
</Viewbox> | </Viewbox> | ||||
</Grid> | </Grid> | ||||
<!--#endregion--> | |||||
<!--#region 底部参数设置窗体 --> | |||||
<Grid> | <Grid> | ||||
<Grid Margin="8,-3,-8,3"> | <Grid Margin="8,-3,-8,3"> | ||||
<Grid.RowDefinitions> | <Grid.RowDefinitions> | ||||
@@ -1625,16 +1646,20 @@ | |||||
</Grid> | </Grid> | ||||
</Grid> | </Grid> | ||||
</Grid> | </Grid> | ||||
<!--#endregion--> | |||||
</Grid> | </Grid> | ||||
</Grid> | </Grid> | ||||
<!--#region 未连接遮罩 --> | |||||
<TextBlock | <TextBlock | ||||
x:Name="state" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="100" | x:Name="state" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="100" | ||||
FontWeight="Black" Text="设备未连接" Visibility="Collapsed" /> | FontWeight="Black" Text="设备未连接" Visibility="Collapsed" /> | ||||
<!--#endregion--> | |||||
<!--#region 搅拌频率设置弹窗 --> | |||||
<Grid | <Grid | ||||
x:Name="hzSet" Width="800" Height="500" Visibility="Collapsed"> | x:Name="hzSet" Width="800" Height="500" Visibility="Collapsed"> | ||||
<Grid.Background> | <Grid.Background> | ||||
@@ -1674,5 +1699,6 @@ | |||||
</StackPanel> | </StackPanel> | ||||
</UniformGrid> | </UniformGrid> | ||||
</Grid> | </Grid> | ||||
<!--#endregion--> | |||||
</Grid> | </Grid> | ||||
</UserControl> | </UserControl> |
@@ -1118,7 +1118,7 @@ | |||||
<Grid | <Grid | ||||
Canvas.Left="384" Canvas.Top="399" Panel.ZIndex="8"> | |||||
Canvas.Left="384" Canvas.Top="399" Panel.ZIndex="8" MouseLeftButtonDown="Canvas_MouseDown"> | |||||
<bpa:HandValve | <bpa:HandValve | ||||
Canvas.Right="400" | Canvas.Right="400" | ||||
EdgeColor="{Binding DeviceStatus.ReactPressureAirInValve, ConverterParameter=2, Converter={StaticResource deviceConvert}}" | EdgeColor="{Binding DeviceStatus.ReactPressureAirInValve, ConverterParameter=2, Converter={StaticResource deviceConvert}}" | ||||
@@ -43,38 +43,17 @@ namespace BPASmartClient.Academy.ViewModel | |||||
InspectDataCommand = new BPARelayCommand<string>(s => { OxyInit(s); }); | InspectDataCommand = new BPARelayCommand<string>(s => { OxyInit(s); }); | ||||
CheckedCommand = new BPARelayCommand<string>(async s => | |||||
{ | |||||
if (int.TryParse(s, out int index)) | |||||
{ | |||||
if (VisStatus.Length == OxyDataModels.Count && index >= 0 && index < VisStatus.Length) | |||||
{ | |||||
IsEnable = false; | |||||
await Task.Run(() => | |||||
{ | |||||
sw.Start(); | |||||
if (VisStatus[index]) OxyModel.Series.Add(OxyDataModels[index].Line); | |||||
else OxyModel.Series.Remove(OxyDataModels[index].Line); | |||||
OxyModel.InvalidatePlot(true); //重新加载曲线 | |||||
IsEnable = true; | |||||
Debug.WriteLine(sw.ElapsedMilliseconds); | |||||
sw.Restart(); | |||||
}); | |||||
} | |||||
} | |||||
}); | |||||
ShowRefrenceWindowCommand = new BPARelayCommand(() => { | ShowRefrenceWindowCommand = new BPARelayCommand(() => { | ||||
ReferenceWindownVisiblity = Visibility.Visible; | ReferenceWindownVisiblity = Visibility.Visible; | ||||
}); | }); | ||||
HiddenRefrenceWindowCommand = new BPARelayCommand(() => { | HiddenRefrenceWindowCommand = new BPARelayCommand(() => { | ||||
ReferenceWindownVisiblity = Visibility.Collapsed; | ReferenceWindownVisiblity = Visibility.Collapsed; | ||||
}); | }); | ||||
Task.Factory.StartNew(async () => | |||||
_tokenSource = new CancellationTokenSource(); | |||||
Task.Factory.StartNew(async (o) => | |||||
{ | { | ||||
while (true) | |||||
while (!_tokenSource.IsCancellationRequested) | |||||
{ | { | ||||
if (ReferenceData != null && ReferenceData.Temperature.Count > 0) | if (ReferenceData != null && ReferenceData.Temperature.Count > 0) | ||||
{ | { | ||||
@@ -108,10 +87,15 @@ namespace BPASmartClient.Academy.ViewModel | |||||
} | } | ||||
await Task.Delay(2000); | await Task.Delay(2000); | ||||
} | } | ||||
}, TaskCreationOptions.LongRunning); | |||||
}, TaskCreationOptions.LongRunning,_tokenSource.Token); | |||||
} | } | ||||
~DeviceChart50LViewModel() | |||||
{ | |||||
_tokenSource.Cancel(false); | |||||
} | |||||
private CancellationTokenSource _tokenSource; | |||||
private DataFeedBack_50 dataFeedback; | private DataFeedBack_50 dataFeedback; | ||||
public DataFeedBack_50 DataFeedback { get { return dataFeedback; } set { dataFeedback = value; OnPropertyChanged(); } } | public DataFeedBack_50 DataFeedback { get { return dataFeedback; } set { dataFeedback = value; OnPropertyChanged(); } } | ||||
@@ -158,20 +142,6 @@ namespace BPASmartClient.Academy.ViewModel | |||||
} | } | ||||
private OxyLineSeries CreateLine(string title) | |||||
{ | |||||
var scb = Application.Current.TryFindResource(title) as SolidColorBrush; | |||||
var color = scb.ToOxyColor(); | |||||
return new OxyLineSeries() | |||||
{ | |||||
LineStyle = LineStyle.Solid, | |||||
Title = title, | |||||
MarkerFill = scb.ToOxyColor(), | |||||
MarkerSize = 2, | |||||
LineLegendPosition = LineLegendPosition.End, | |||||
Color = color, | |||||
}; | |||||
} | |||||
private void LoadNames(List<SaveNameData> data) | private void LoadNames(List<SaveNameData> data) | ||||
{ | { | ||||
@@ -194,8 +164,6 @@ namespace BPASmartClient.Academy.ViewModel | |||||
}); | }); | ||||
} | } | ||||
public List<OxyDataModel> OxyDataModels { get; set; } = new List<OxyDataModel>(); | |||||
public ObservableCollection<RecipeChart> RecipeCharts { get; set; } = new ObservableCollection<RecipeChart>(); | public ObservableCollection<RecipeChart> RecipeCharts { get; set; } = new ObservableCollection<RecipeChart>(); | ||||
public DateTime SelectTime { get { return _mSelectTime; } set { _mSelectTime = value; OnPropertyChanged(); } } | public DateTime SelectTime { get { return _mSelectTime; } set { _mSelectTime = value; OnPropertyChanged(); } } | ||||
@@ -204,24 +172,7 @@ namespace BPASmartClient.Academy.ViewModel | |||||
public string ProductNum { get { return _mProductNum; } set { _mProductNum = value; OnPropertyChanged(); } } | public string ProductNum { get { return _mProductNum; } set { _mProductNum = value; OnPropertyChanged(); } } | ||||
private string _mProductNum; | private string _mProductNum; | ||||
public PlotModel OxyModel { get { return _mOxyModel; } set { _mOxyModel = value; OnPropertyChanged(); } } | |||||
private PlotModel _mOxyModel = new PlotModel(); | |||||
public bool[] VisStatus { get { return _mVisStatus; } set { _mVisStatus = value; OnPropertyChanged(); } } | |||||
private bool[] _mVisStatus = new bool[11]; | |||||
public bool IsEnable | |||||
{ | |||||
get { return _mIsEnable; } | |||||
set | |||||
{ | |||||
_mIsEnable = value; | |||||
LoadingVis = value ? Visibility.Collapsed : Visibility.Visible; | |||||
OnPropertyChanged(); | |||||
} | |||||
} | |||||
private bool _mIsEnable = true; | |||||
public Visibility LoadingVis { get { return _mLoadingVis; } set { _mLoadingVis = value; OnPropertyChanged(); } } | public Visibility LoadingVis { get { return _mLoadingVis; } set { _mLoadingVis = value; OnPropertyChanged(); } } | ||||
private Visibility _mLoadingVis = Visibility.Collapsed; | private Visibility _mLoadingVis = Visibility.Collapsed; | ||||
@@ -233,7 +184,6 @@ namespace BPASmartClient.Academy.ViewModel | |||||
public BPARelayCommand<string> InspectDataCommand { get; set; } | public BPARelayCommand<string> InspectDataCommand { get; set; } | ||||
public BPARelayCommand<string> CheckedCommand { get; set; } | |||||
public BPARelayCommand ShowRefrenceWindowCommand { get;private set; } | public BPARelayCommand ShowRefrenceWindowCommand { get;private set; } | ||||
public BPARelayCommand HiddenRefrenceWindowCommand { get; private set; } | public BPARelayCommand HiddenRefrenceWindowCommand { get; private set; } | ||||