添加日志记录功能,在关键位置记录设备状态和温度数据
This commit is contained in:
@@ -44,6 +44,9 @@ namespace JoyD.Windows.CS.Toprie
|
||||
private bool _showAverageTemperature = false; // 是否显示平均温度
|
||||
private bool _showMinTemperature = false; // 是否显示最低温度
|
||||
|
||||
// 日志保存状态标志
|
||||
private bool _saveLogEnabled = false; // 是否启用日志保存
|
||||
|
||||
// 用于保护_lastImage的线程锁
|
||||
private readonly object _lastImageLock = new object();
|
||||
|
||||
@@ -536,16 +539,20 @@ namespace JoyD.Windows.CS.Toprie
|
||||
if (!_isReceivingImage && _deviceManager.ConnectionStatus == ConnectionStatus.Connected)
|
||||
{
|
||||
Console.WriteLine("Camera开始使用HTTP方式接收图像");
|
||||
// 记录日志
|
||||
WriteLog("开始使用HTTP方式接收图像");
|
||||
// 直接调用HTTP方式的图像接收
|
||||
_deviceManager.StartImageReceiving();
|
||||
|
||||
// 不再需要温度数据实时通知机制,移除相关代码
|
||||
_isReceivingImage = true;
|
||||
WriteLog("图像接收已启动");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
ShowError($"开始接收图像失败: {ex.Message}");
|
||||
WriteLog($"开始接收图像失败: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -961,13 +968,18 @@ namespace JoyD.Windows.CS.Toprie
|
||||
if (_deviceManager == null)
|
||||
{
|
||||
Console.WriteLine("设备管理器未初始化");
|
||||
WriteLog("设备管理器未初始化");
|
||||
return;
|
||||
}
|
||||
|
||||
// 记录连接状态变化
|
||||
WriteLog($"连接状态变化: {e.Status} {(!string.IsNullOrEmpty(e.DeviceInfo) ? "- " + e.DeviceInfo : "")}");
|
||||
|
||||
switch (e.Status)
|
||||
{
|
||||
case ConnectionStatus.Connected:
|
||||
Console.WriteLine("设备已连接");
|
||||
WriteLog("设备已连接成功");
|
||||
|
||||
// 仅在首次连接时设置为热图模式,重连时保留之前的模式
|
||||
if (!_isReceivingImage) // 首次连接时_isReceivingImage为false
|
||||
@@ -976,15 +988,18 @@ namespace JoyD.Windows.CS.Toprie
|
||||
{
|
||||
_deviceManager.SetImageMode(ImageMode.Infrared);
|
||||
Console.WriteLine("首次连接,设置热图模式");
|
||||
WriteLog("首次连接,设置热图模式");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine($"设置热图模式失败: {ex.Message}");
|
||||
WriteLog($"设置热图模式失败: {ex.Message}");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine("重连成功,保留当前图像模式");
|
||||
WriteLog("重连成功,保留当前图像模式");
|
||||
}
|
||||
|
||||
// 注意:色彩模式同步现在在DeviceManager内部的连接成功处理中自动完成
|
||||
@@ -1000,6 +1015,7 @@ namespace JoyD.Windows.CS.Toprie
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine($"开始接收图像失败: {ex.Message}");
|
||||
WriteLog($"开始接收图像失败: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1011,6 +1027,7 @@ namespace JoyD.Windows.CS.Toprie
|
||||
break;
|
||||
case ConnectionStatus.Disconnected:
|
||||
Console.WriteLine("设备已断开连接");
|
||||
WriteLog("设备连接已断开");
|
||||
|
||||
// 停止接收图像(添加空检查和异常处理)
|
||||
if (_isReceivingImage)
|
||||
@@ -1023,6 +1040,7 @@ namespace JoyD.Windows.CS.Toprie
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine($"停止接收图像失败: {ex.Message}");
|
||||
WriteLog($"停止接收图像失败: {ex.Message}");
|
||||
_isReceivingImage = false; // 确保状态更新
|
||||
}
|
||||
}
|
||||
@@ -1038,18 +1056,22 @@ namespace JoyD.Windows.CS.Toprie
|
||||
if (!string.IsNullOrEmpty(e.DeviceInfo))
|
||||
{
|
||||
ShowError(e.DeviceInfo);
|
||||
WriteLog($"断开原因: {e.DeviceInfo}");
|
||||
}
|
||||
else
|
||||
{
|
||||
ShowError("设备连接已断开");
|
||||
WriteLog("设备连接已断开");
|
||||
}
|
||||
break;
|
||||
case ConnectionStatus.Connecting:
|
||||
Console.WriteLine($"正在连接设备...{(!string.IsNullOrEmpty(e.DeviceInfo) ? " " + e.DeviceInfo : "")}");
|
||||
WriteLog($"正在连接设备...{(!string.IsNullOrEmpty(e.DeviceInfo) ? " " + e.DeviceInfo : "")}");
|
||||
ShowError(string.Empty); // 清除之前的错误信息
|
||||
break;
|
||||
case ConnectionStatus.Reconnecting:
|
||||
Console.WriteLine($"正在重新连接设备...{(!string.IsNullOrEmpty(e.DeviceInfo) ? " " + e.DeviceInfo : "")}");
|
||||
WriteLog($"正在重新连接设备...{(!string.IsNullOrEmpty(e.DeviceInfo) ? " " + e.DeviceInfo : "")}");
|
||||
ShowError(string.Empty); // 清除之前的错误信息
|
||||
|
||||
// 按照README中要求的修改流程第2点和第6点:连接状态变化时,只在非暂停状态下调用更新Info
|
||||
@@ -1880,6 +1902,63 @@ namespace JoyD.Windows.CS.Toprie
|
||||
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>
|
||||
/// 更新实时信息显示
|
||||
@@ -1945,6 +2024,13 @@ namespace JoyD.Windows.CS.Toprie
|
||||
{
|
||||
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)
|
||||
|
||||
Reference in New Issue
Block a user