From c832e1fbbdac4b73730f6c826e1a1bc216453875 Mon Sep 17 00:00:00 2001 From: zqm Date: Thu, 30 Oct 2025 17:11:02 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BF=9D=E5=AD=98=E6=B8=A9?= =?UTF-8?q?=E5=BA=A6=E8=8F=9C=E5=8D=95=E9=A1=B9=E5=8F=8A=E4=BA=8B=E4=BB=B6?= =?UTF-8?q?=E5=A4=84=E7=90=86=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Toprie/Toprie/Camera.Designer.cs | 9 +++ .../CS/Framework4.0/Toprie/Toprie/Camera.cs | 80 +++++++++++++++++++ 2 files changed, 89 insertions(+) diff --git a/Windows/CS/Framework4.0/Toprie/Toprie/Camera.Designer.cs b/Windows/CS/Framework4.0/Toprie/Toprie/Camera.Designer.cs index 49d6ec0..cbd00b6 100644 --- a/Windows/CS/Framework4.0/Toprie/Toprie/Camera.Designer.cs +++ b/Windows/CS/Framework4.0/Toprie/Toprie/Camera.Designer.cs @@ -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; } } diff --git a/Windows/CS/Framework4.0/Toprie/Toprie/Camera.cs b/Windows/CS/Framework4.0/Toprie/Toprie/Camera.cs index da78af7..eaf39cf 100644 --- a/Windows/CS/Framework4.0/Toprie/Toprie/Camera.cs +++ b/Windows/CS/Framework4.0/Toprie/Toprie/Camera.cs @@ -1685,5 +1685,85 @@ namespace JoyD.Windows.CS.Toprie } base.Dispose(disposing); } + + /// + /// 保存温度菜单项点击事件处理程序 + /// + /// 事件发送者 + /// 事件参数 + 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}"); + } + } } }