更新Camera.cs文件中温度数据CSV输出格式,确保符合CSV标准
This commit is contained in:
@@ -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(",");
|
||||
|
||||
Reference in New Issue
Block a user