添加保存温度菜单项及事件处理功能
This commit is contained in:
@@ -58,6 +58,7 @@ namespace JoyD.Windows.CS.Toprie
|
|||||||
this.imageModeToolStripMenuItem,
|
this.imageModeToolStripMenuItem,
|
||||||
this.colorModeToolStripMenuItem,
|
this.colorModeToolStripMenuItem,
|
||||||
this.toolStripSeparator1,
|
this.toolStripSeparator1,
|
||||||
|
this.saveTemperatureToolStripMenuItem,
|
||||||
this.pauseDetectionToolStripMenuItem});
|
this.pauseDetectionToolStripMenuItem});
|
||||||
this.contextMenuStrip1.Name = "contextMenuStrip1";
|
this.contextMenuStrip1.Name = "contextMenuStrip1";
|
||||||
this.contextMenuStrip1.Size = new System.Drawing.Size(161, 100);
|
this.contextMenuStrip1.Size = new System.Drawing.Size(161, 100);
|
||||||
@@ -102,6 +103,13 @@ namespace JoyD.Windows.CS.Toprie
|
|||||||
this.toolStripSeparator1.Name = "toolStripSeparator1";
|
this.toolStripSeparator1.Name = "toolStripSeparator1";
|
||||||
this.toolStripSeparator1.Size = new System.Drawing.Size(157, 6);
|
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
|
// pauseDetectionToolStripMenuItem
|
||||||
//
|
//
|
||||||
this.pauseDetectionToolStripMenuItem.Name = "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 fusionMode3ToolStripMenuItem;
|
||||||
private System.Windows.Forms.ToolStripMenuItem fusionMode4ToolStripMenuItem;
|
private System.Windows.Forms.ToolStripMenuItem fusionMode4ToolStripMenuItem;
|
||||||
private System.Windows.Forms.ToolStripMenuItem fusionMode5ToolStripMenuItem;
|
private System.Windows.Forms.ToolStripMenuItem fusionMode5ToolStripMenuItem;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem saveTemperatureToolStripMenuItem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1685,5 +1685,85 @@ namespace JoyD.Windows.CS.Toprie
|
|||||||
}
|
}
|
||||||
base.Dispose(disposing);
|
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}");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user