曲线图优化

This commit is contained in:
GukSang.Jin
2026-02-04 15:38:42 +08:00
parent 32de88764c
commit e52782f16e

View File

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