这个是我程序中的Chart控件,数据每隔1.5S获取一次,整个chart最多能显示100个数据,我的目的是将在Chart中显示过的数据全部保存到CSV文件中,并且分三列保存,第一列为Time,第二列为SOC,第三列为Power。
首先新建两个list为了保存过了100之后chart删除的旧数据。
private List<Tuple<DateTime, double>> socData = new List<Tuple<DateTime, double>>();
private List<Tuple<DateTime, double>> currentPowerData = new List<Tuple<DateTime, double>>();
数据一行一行地写,先把第一行的标题写上。
writer.WriteLine("Time\t,SOC-%\t,Current Power-W");
写数据行
foreach (var data in socData)
{
string formattedTime = data.Item1.ToString("HH:mm:ss");
writer.WriteLine($"{formattedTime}\t,{data.Item2}\t,{currentPowerData.FirstOrDefault(d => d.Item1 == data.Item1)?.Item2}");
}
将更新Chart和写数据到CSV文件的方法都放到同一个timer中,实现实时写入。