添加保存温度菜单项及事件处理功能

This commit is contained in:
zqm
2025-10-30 17:11:02 +08:00
parent b3264215fe
commit c832e1fbbd
2 changed files with 89 additions and 0 deletions

View File

@@ -58,6 +58,7 @@ namespace JoyD.Windows.CS.Toprie
this.imageModeToolStripMenuItem,
this.colorModeToolStripMenuItem,
this.toolStripSeparator1,
this.saveTemperatureToolStripMenuItem,
this.pauseDetectionToolStripMenuItem});
this.contextMenuStrip1.Name = "contextMenuStrip1";
this.contextMenuStrip1.Size = new System.Drawing.Size(161, 100);
@@ -102,6 +103,13 @@ namespace JoyD.Windows.CS.Toprie
this.toolStripSeparator1.Name = "toolStripSeparator1";
this.toolStripSeparator1.Size = new System.Drawing.Size(157, 6);
//
// saveTemperatureToolStripMenuItem
//
this.saveTemperatureToolStripMenuItem.Name = "saveTemperatureToolStripMenuItem";
this.saveTemperatureToolStripMenuItem.Size = new System.Drawing.Size(160, 22);
this.saveTemperatureToolStripMenuItem.Text = "保存温度";
this.saveTemperatureToolStripMenuItem.Click += new System.EventHandler(this.SaveTemperatureToolStripMenuItem_Click);
//
// pauseDetectionToolStripMenuItem
//
this.pauseDetectionToolStripMenuItem.Name = "pauseDetectionToolStripMenuItem";
@@ -208,5 +216,6 @@ namespace JoyD.Windows.CS.Toprie
private System.Windows.Forms.ToolStripMenuItem fusionMode3ToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem fusionMode4ToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem fusionMode5ToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem saveTemperatureToolStripMenuItem;
}
}

View File

@@ -1685,5 +1685,85 @@ namespace JoyD.Windows.CS.Toprie
}
base.Dispose(disposing);
}
/// <summary>
/// 保存温度菜单项点击事件处理程序
/// </summary>
/// <param name="sender">事件发送者</param>
/// <param name="e">事件参数</param>
private void SaveTemperatureToolStripMenuItem_Click(object sender, EventArgs e)
{
try
{
// 检查设备管理器是否初始化且设备是否已连接
if (_deviceManager == null || _deviceManager.ConnectionStatus != ConnectionStatus.Connected)
{
MessageBox.Show("设备未连接,请先连接设备后再保存温度数据。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
// 使用SaveFileDialog让用户选择保存路径
SaveFileDialog saveFileDialog = new SaveFileDialog
{
Title = "保存温度数据",
Filter = "CSV文件 (*.csv)|*.csv|文本文件 (*.txt)|*.txt|所有文件 (*.*)|*.*",
DefaultExt = "csv",
FileName = $"温度数据_{DateTime.Now:yyyyMMdd_HHmmss}"
};
// 如果用户选择了文件路径
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
// 获取当前温度数据
TemperatureData temperatureData = _deviceManager.GetCurrentTemperatureData();
if (temperatureData == null)
{
MessageBox.Show("未能获取温度数据,请稍后再试。", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
// 保存温度数据到文件
using (StreamWriter writer = new StreamWriter(saveFileDialog.FileName))
{
// 写入文件头部信息
writer.WriteLine("# 温度数据文件");
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();
// 写入温度数据矩阵
for (int i = 0; i < temperatureData.Height; i++)
{
StringBuilder lineBuilder = new StringBuilder();
for (int j = 0; j < temperatureData.Width; j++)
{
// 添加温度值,使用逗号分隔
lineBuilder.Append($"{temperatureData.Data[i, j]:F2}");
if (j < temperatureData.Width - 1)
{
lineBuilder.Append(",");
}
}
writer.WriteLine(lineBuilder.ToString());
}
}
// 显示保存成功消息
MessageBox.Show($"温度数据已成功保存到:\n{saveFileDialog.FileName}", "保存成功", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
catch (Exception ex)
{
// 显示错误消息
MessageBox.Show($"保存温度数据时发生错误:\n{ex.Message}", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
Console.WriteLine($"保存温度数据异常: {ex.Message}\n{ex.StackTrace}");
}
}
}
}