更新Camera.cs文件中温度数据CSV输出格式,确保符合CSV标准

This commit is contained in:
zqm
2025-10-31 13:23:47 +08:00
parent b299729807
commit 2f9011d1b2

View File

@@ -1827,37 +1827,47 @@ namespace JoyD.Windows.CS.Toprie
// 如果用户选择了文件路径
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
// 获取当前温度数据
TemperatureData temperatureData = _deviceManager.GetCurrentTemperatureData();
// 使用已缓存的温度数据
TemperatureData temperatureData;
lock (_lastTemperatureDataLock)
{
temperatureData = _lastTemperatureData;
}
if (temperatureData == null)
{
MessageBox.Show("未能获取温度数据,请稍后再试。", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
MessageBox.Show("没有可用的温度数据,请确保设备已连接且正在接收数据。", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
// 保存温度数据到文件
// 保存温度数据到CSV文件
using (StreamWriter writer = new StreamWriter(saveFileDialog.FileName))
{
// 写入文件头部信息
writer.WriteLine("# 温度数据文件");
// 写入文件头部信息(以#开头的注释行不会被CSV解析器当作数据
writer.WriteLine("# 温度数据文件 - CSV格式逗号分隔值");
writer.WriteLine($"# 生成时间: {DateTime.Now:yyyy-MM-dd HH:mm:ss}");
writer.WriteLine($"# 分辨率: {temperatureData.Width} x {temperatureData.Height}");
writer.WriteLine($"# 最高温度: {temperatureData.MaxTemperature:F2} °C");
writer.WriteLine($"# 最低温度: {temperatureData.MinTemperature:F2} °C");
writer.WriteLine($"# 平均温度: {temperatureData.AverageTemperature:F2} °C");
writer.WriteLine();
writer.WriteLine("# 温度数据矩阵 (单位: °C)");
writer.WriteLine();
// 写入温度数据矩阵
// 写入温度数据矩阵CSV格式
for (int i = 0; i < temperatureData.Height; i++)
{
StringBuilder lineBuilder = new StringBuilder();
for (int j = 0; j < temperatureData.Width; j++)
{
// 添加温度值,使用逗号分隔
lineBuilder.Append($"{temperatureData.TemperatureMatrix[i, j]:F2}");
// 获取温度值
string tempValue = $"{temperatureData.TemperatureMatrix[i, j]:F2}";
// CSV标准格式如果值包含逗号、引号或换行符需要用引号包围并转义内部引号
if (tempValue.Contains(',') || tempValue.Contains('"') || tempValue.Contains('\n'))
{
tempValue = $"\"{tempValue.Replace("\"", "\"\"")}\"";
}
lineBuilder.Append(tempValue);
if (j < temperatureData.Width - 1)
{
lineBuilder.Append(",");