曲线图优化
This commit is contained in:
@@ -9,13 +9,15 @@ namespace 全自动水压检测仪
|
|||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 图表管理器 - 负责实时曲线图的创建和数据更新
|
/// 图表管理器 - 负责实时曲线图的创建和数据更新
|
||||||
|
/// 第一Y轴:实时压力(地址3130)
|
||||||
|
/// 第二Y轴:压力设定值(地址2400,对应"压力设置(PSI)")
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class ChartManager
|
public class ChartManager
|
||||||
{
|
{
|
||||||
private ElementHost _chartHost;
|
private ElementHost _chartHost;
|
||||||
private LiveCharts.Wpf.CartesianChart _chart;
|
private LiveCharts.Wpf.CartesianChart _chart;
|
||||||
private ChartValues<double> _pressureValues;
|
private ChartValues<double> _pressureValues; // 实时压力值(地址3130)
|
||||||
private ChartValues<double> _temperatureValues;
|
private ChartValues<double> _pressureSetValues; // 压力设定值(地址2400)
|
||||||
private ChartValues<string> _timeLabels;
|
private ChartValues<string> _timeLabels;
|
||||||
private const int MAX_DATA_POINTS = 60; // 最多显示60个数据点
|
private const int MAX_DATA_POINTS = 60; // 最多显示60个数据点
|
||||||
|
|
||||||
@@ -31,8 +33,8 @@ namespace 全自动水压检测仪
|
|||||||
targetPanel.Text = null;
|
targetPanel.Text = null;
|
||||||
|
|
||||||
// 初始化数据集合
|
// 初始化数据集合
|
||||||
_pressureValues = new ChartValues<double>();
|
_pressureValues = new ChartValues<double>(); // 实时压力
|
||||||
_temperatureValues = new ChartValues<double>();
|
_pressureSetValues = new ChartValues<double>(); // 压力设定值
|
||||||
_timeLabels = new ChartValues<string>();
|
_timeLabels = new ChartValues<string>();
|
||||||
|
|
||||||
// 创建WPF图表控件
|
// 创建WPF图表控件
|
||||||
@@ -94,11 +96,11 @@ namespace 全自动水压检测仪
|
|||||||
ScalesYAt = 0
|
ScalesYAt = 0
|
||||||
});
|
});
|
||||||
|
|
||||||
// 添加压力设定值曲线
|
// 添加压力设定值曲线(来自地址2400,对应"压力设置(PSI)")
|
||||||
_chart.Series.Add(new LineSeries
|
_chart.Series.Add(new LineSeries
|
||||||
{
|
{
|
||||||
Title = "压力设定值",
|
Title = "压力设定值",
|
||||||
Values = _temperatureValues,
|
Values = _pressureSetValues,
|
||||||
Stroke = System.Windows.Media.Brushes.Red,
|
Stroke = System.Windows.Media.Brushes.Red,
|
||||||
Fill = System.Windows.Media.Brushes.Transparent,
|
Fill = System.Windows.Media.Brushes.Transparent,
|
||||||
PointGeometry = DefaultGeometries.Diamond,
|
PointGeometry = DefaultGeometries.Diamond,
|
||||||
@@ -123,11 +125,11 @@ namespace 全自动水压检测仪
|
|||||||
/// 添加新的数据点
|
/// 添加新的数据点
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="pressure">实时压力值</param>
|
/// <param name="pressure">实时压力值</param>
|
||||||
/// <param name="temperature">压力设定值</param>
|
/// <param name="pressureSetValue">压力设定值(来自"压力设置(PSI)",地址2400)</param>
|
||||||
/// <param name="time">时间标签(可选,默认使用当前时间)</param>
|
/// <param name="time">时间标签(可选,默认使用当前时间)</param>
|
||||||
public void AddDataPoint(double pressure, double temperature, string time = null)
|
public void AddDataPoint(double pressure, double pressureSetValue, string time = null)
|
||||||
{
|
{
|
||||||
if (_pressureValues == null || _temperatureValues == null || _timeLabels == null)
|
if (_pressureValues == null || _pressureSetValues == null || _timeLabels == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// 使用当前时间作为默认标签
|
// 使用当前时间作为默认标签
|
||||||
@@ -136,14 +138,14 @@ namespace 全自动水压检测仪
|
|||||||
|
|
||||||
// 添加数据点
|
// 添加数据点
|
||||||
_pressureValues.Add(pressure);
|
_pressureValues.Add(pressure);
|
||||||
_temperatureValues.Add(temperature);
|
_pressureSetValues.Add(pressureSetValue);
|
||||||
_timeLabels.Add(time);
|
_timeLabels.Add(time);
|
||||||
|
|
||||||
// 限制数据点数量,保持图表流畅
|
// 限制数据点数量,保持图表流畅
|
||||||
if (_pressureValues.Count > MAX_DATA_POINTS)
|
if (_pressureValues.Count > MAX_DATA_POINTS)
|
||||||
{
|
{
|
||||||
_pressureValues.RemoveAt(0);
|
_pressureValues.RemoveAt(0);
|
||||||
_temperatureValues.RemoveAt(0);
|
_pressureSetValues.RemoveAt(0);
|
||||||
_timeLabels.RemoveAt(0);
|
_timeLabels.RemoveAt(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -154,7 +156,7 @@ namespace 全自动水压检测仪
|
|||||||
public void ClearData()
|
public void ClearData()
|
||||||
{
|
{
|
||||||
_pressureValues?.Clear();
|
_pressureValues?.Clear();
|
||||||
_temperatureValues?.Clear();
|
_pressureSetValues?.Clear();
|
||||||
_timeLabels?.Clear();
|
_timeLabels?.Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -189,7 +191,7 @@ namespace 全自动水压检测仪
|
|||||||
_chartHost?.Dispose();
|
_chartHost?.Dispose();
|
||||||
_chart = null;
|
_chart = null;
|
||||||
_pressureValues = null;
|
_pressureValues = null;
|
||||||
_temperatureValues = null;
|
_pressureSetValues = null;
|
||||||
_timeLabels = null;
|
_timeLabels = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user