添加日志记录功能,在关键位置记录设备状态和温度数据
This commit is contained in:
@@ -44,6 +44,9 @@ namespace JoyD.Windows.CS.Toprie
|
|||||||
private bool _showAverageTemperature = false; // 是否显示平均温度
|
private bool _showAverageTemperature = false; // 是否显示平均温度
|
||||||
private bool _showMinTemperature = false; // 是否显示最低温度
|
private bool _showMinTemperature = false; // 是否显示最低温度
|
||||||
|
|
||||||
|
// 日志保存状态标志
|
||||||
|
private bool _saveLogEnabled = false; // 是否启用日志保存
|
||||||
|
|
||||||
// 用于保护_lastImage的线程锁
|
// 用于保护_lastImage的线程锁
|
||||||
private readonly object _lastImageLock = new object();
|
private readonly object _lastImageLock = new object();
|
||||||
|
|
||||||
@@ -536,16 +539,20 @@ namespace JoyD.Windows.CS.Toprie
|
|||||||
if (!_isReceivingImage && _deviceManager.ConnectionStatus == ConnectionStatus.Connected)
|
if (!_isReceivingImage && _deviceManager.ConnectionStatus == ConnectionStatus.Connected)
|
||||||
{
|
{
|
||||||
Console.WriteLine("Camera开始使用HTTP方式接收图像");
|
Console.WriteLine("Camera开始使用HTTP方式接收图像");
|
||||||
|
// 记录日志
|
||||||
|
WriteLog("开始使用HTTP方式接收图像");
|
||||||
// 直接调用HTTP方式的图像接收
|
// 直接调用HTTP方式的图像接收
|
||||||
_deviceManager.StartImageReceiving();
|
_deviceManager.StartImageReceiving();
|
||||||
|
|
||||||
// 不再需要温度数据实时通知机制,移除相关代码
|
// 不再需要温度数据实时通知机制,移除相关代码
|
||||||
_isReceivingImage = true;
|
_isReceivingImage = true;
|
||||||
|
WriteLog("图像接收已启动");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
ShowError($"开始接收图像失败: {ex.Message}");
|
ShowError($"开始接收图像失败: {ex.Message}");
|
||||||
|
WriteLog($"开始接收图像失败: {ex.Message}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -961,13 +968,18 @@ namespace JoyD.Windows.CS.Toprie
|
|||||||
if (_deviceManager == null)
|
if (_deviceManager == null)
|
||||||
{
|
{
|
||||||
Console.WriteLine("设备管理器未初始化");
|
Console.WriteLine("设备管理器未初始化");
|
||||||
|
WriteLog("设备管理器未初始化");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 记录连接状态变化
|
||||||
|
WriteLog($"连接状态变化: {e.Status} {(!string.IsNullOrEmpty(e.DeviceInfo) ? "- " + e.DeviceInfo : "")}");
|
||||||
|
|
||||||
switch (e.Status)
|
switch (e.Status)
|
||||||
{
|
{
|
||||||
case ConnectionStatus.Connected:
|
case ConnectionStatus.Connected:
|
||||||
Console.WriteLine("设备已连接");
|
Console.WriteLine("设备已连接");
|
||||||
|
WriteLog("设备已连接成功");
|
||||||
|
|
||||||
// 仅在首次连接时设置为热图模式,重连时保留之前的模式
|
// 仅在首次连接时设置为热图模式,重连时保留之前的模式
|
||||||
if (!_isReceivingImage) // 首次连接时_isReceivingImage为false
|
if (!_isReceivingImage) // 首次连接时_isReceivingImage为false
|
||||||
@@ -976,15 +988,18 @@ namespace JoyD.Windows.CS.Toprie
|
|||||||
{
|
{
|
||||||
_deviceManager.SetImageMode(ImageMode.Infrared);
|
_deviceManager.SetImageMode(ImageMode.Infrared);
|
||||||
Console.WriteLine("首次连接,设置热图模式");
|
Console.WriteLine("首次连接,设置热图模式");
|
||||||
|
WriteLog("首次连接,设置热图模式");
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Console.WriteLine($"设置热图模式失败: {ex.Message}");
|
Console.WriteLine($"设置热图模式失败: {ex.Message}");
|
||||||
|
WriteLog($"设置热图模式失败: {ex.Message}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Console.WriteLine("重连成功,保留当前图像模式");
|
Console.WriteLine("重连成功,保留当前图像模式");
|
||||||
|
WriteLog("重连成功,保留当前图像模式");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 注意:色彩模式同步现在在DeviceManager内部的连接成功处理中自动完成
|
// 注意:色彩模式同步现在在DeviceManager内部的连接成功处理中自动完成
|
||||||
@@ -1000,6 +1015,7 @@ namespace JoyD.Windows.CS.Toprie
|
|||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Console.WriteLine($"开始接收图像失败: {ex.Message}");
|
Console.WriteLine($"开始接收图像失败: {ex.Message}");
|
||||||
|
WriteLog($"开始接收图像失败: {ex.Message}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1011,6 +1027,7 @@ namespace JoyD.Windows.CS.Toprie
|
|||||||
break;
|
break;
|
||||||
case ConnectionStatus.Disconnected:
|
case ConnectionStatus.Disconnected:
|
||||||
Console.WriteLine("设备已断开连接");
|
Console.WriteLine("设备已断开连接");
|
||||||
|
WriteLog("设备连接已断开");
|
||||||
|
|
||||||
// 停止接收图像(添加空检查和异常处理)
|
// 停止接收图像(添加空检查和异常处理)
|
||||||
if (_isReceivingImage)
|
if (_isReceivingImage)
|
||||||
@@ -1023,6 +1040,7 @@ namespace JoyD.Windows.CS.Toprie
|
|||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Console.WriteLine($"停止接收图像失败: {ex.Message}");
|
Console.WriteLine($"停止接收图像失败: {ex.Message}");
|
||||||
|
WriteLog($"停止接收图像失败: {ex.Message}");
|
||||||
_isReceivingImage = false; // 确保状态更新
|
_isReceivingImage = false; // 确保状态更新
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1038,18 +1056,22 @@ namespace JoyD.Windows.CS.Toprie
|
|||||||
if (!string.IsNullOrEmpty(e.DeviceInfo))
|
if (!string.IsNullOrEmpty(e.DeviceInfo))
|
||||||
{
|
{
|
||||||
ShowError(e.DeviceInfo);
|
ShowError(e.DeviceInfo);
|
||||||
|
WriteLog($"断开原因: {e.DeviceInfo}");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ShowError("设备连接已断开");
|
ShowError("设备连接已断开");
|
||||||
|
WriteLog("设备连接已断开");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ConnectionStatus.Connecting:
|
case ConnectionStatus.Connecting:
|
||||||
Console.WriteLine($"正在连接设备...{(!string.IsNullOrEmpty(e.DeviceInfo) ? " " + e.DeviceInfo : "")}");
|
Console.WriteLine($"正在连接设备...{(!string.IsNullOrEmpty(e.DeviceInfo) ? " " + e.DeviceInfo : "")}");
|
||||||
|
WriteLog($"正在连接设备...{(!string.IsNullOrEmpty(e.DeviceInfo) ? " " + e.DeviceInfo : "")}");
|
||||||
ShowError(string.Empty); // 清除之前的错误信息
|
ShowError(string.Empty); // 清除之前的错误信息
|
||||||
break;
|
break;
|
||||||
case ConnectionStatus.Reconnecting:
|
case ConnectionStatus.Reconnecting:
|
||||||
Console.WriteLine($"正在重新连接设备...{(!string.IsNullOrEmpty(e.DeviceInfo) ? " " + e.DeviceInfo : "")}");
|
Console.WriteLine($"正在重新连接设备...{(!string.IsNullOrEmpty(e.DeviceInfo) ? " " + e.DeviceInfo : "")}");
|
||||||
|
WriteLog($"正在重新连接设备...{(!string.IsNullOrEmpty(e.DeviceInfo) ? " " + e.DeviceInfo : "")}");
|
||||||
ShowError(string.Empty); // 清除之前的错误信息
|
ShowError(string.Empty); // 清除之前的错误信息
|
||||||
|
|
||||||
// 按照README中要求的修改流程第2点和第6点:连接状态变化时,只在非暂停状态下调用更新Info
|
// 按照README中要求的修改流程第2点和第6点:连接状态变化时,只在非暂停状态下调用更新Info
|
||||||
@@ -1880,6 +1902,63 @@ namespace JoyD.Windows.CS.Toprie
|
|||||||
UpdateRealTimeInfoOnUI();
|
UpdateRealTimeInfoOnUI();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 保存日志菜单项点击事件处理
|
||||||
|
/// </summary>
|
||||||
|
private void SaveLogToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
// 更新日志保存状态标志
|
||||||
|
_saveLogEnabled = saveLogToolStripMenuItem.Checked;
|
||||||
|
|
||||||
|
// 可以在这里添加日志记录的初始化或清理逻辑
|
||||||
|
if (_saveLogEnabled)
|
||||||
|
{
|
||||||
|
// 日志启用时的初始化
|
||||||
|
WriteLog("日志保存功能已启用");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// 日志禁用时的清理(如果需要)
|
||||||
|
WriteLog("日志保存功能已禁用");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 写入日志信息到文件
|
||||||
|
/// 只有在_saveLogEnabled为true时才会保存
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="logMessage">日志消息</param>
|
||||||
|
private void WriteLog(string logMessage)
|
||||||
|
{
|
||||||
|
// 只有当日志保存功能启用时才执行写入
|
||||||
|
if (_saveLogEnabled)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// 确保项目路径存在
|
||||||
|
if (!string.IsNullOrEmpty(_projectPath) && Directory.Exists(_projectPath))
|
||||||
|
{
|
||||||
|
// 创建Logs目录(如果不存在)
|
||||||
|
string logDir = Path.Combine(_projectPath, "Logs");
|
||||||
|
Directory.CreateDirectory(logDir);
|
||||||
|
|
||||||
|
// 生成日志文件名(按日期)
|
||||||
|
string logFileName = $"Log_{DateTime.Now:yyyyMMdd}.txt";
|
||||||
|
string logFilePath = Path.Combine(logDir, logFileName);
|
||||||
|
|
||||||
|
// 写入日志(带时间戳)
|
||||||
|
string logEntry = $"[{DateTime.Now:yyyy-MM-dd HH:mm:ss.fff}] {logMessage}";
|
||||||
|
File.AppendAllText(logFilePath, logEntry + Environment.NewLine);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
// 记录日志写入失败的异常(但不抛出,以免影响主程序)
|
||||||
|
Console.WriteLine($"写入日志失败: {ex.Message}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 更新实时信息显示
|
/// 更新实时信息显示
|
||||||
@@ -1945,6 +2024,13 @@ namespace JoyD.Windows.CS.Toprie
|
|||||||
{
|
{
|
||||||
temperatureTexts.Add($"最高: {temperatureData.MaxTemperature:F2} °C");
|
temperatureTexts.Add($"最高: {temperatureData.MaxTemperature:F2} °C");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 记录温度数据日志
|
||||||
|
if (temperatureTexts.Count > 0)
|
||||||
|
{
|
||||||
|
string mode = isGlobalTemperatureMode ? "全局温度" : "区域温度";
|
||||||
|
WriteLog($"{mode}数据 - 平均: {temperatureData.AverageTemperature:F2} °C, 最低: {temperatureData.MinTemperature:F2} °C, 最高: {temperatureData.MaxTemperature:F2} °C");
|
||||||
|
}
|
||||||
|
|
||||||
// 如果没有要显示的温度文本,直接返回
|
// 如果没有要显示的温度文本,直接返回
|
||||||
if (temperatureTexts.Count == 0)
|
if (temperatureTexts.Count == 0)
|
||||||
|
|||||||
Reference in New Issue
Block a user