diff --git a/Windows/CS/Framework4.0/Toprie/Toprie/Camera.cs b/Windows/CS/Framework4.0/Toprie/Toprie/Camera.cs
index bd40c51..eecde29 100644
--- a/Windows/CS/Framework4.0/Toprie/Toprie/Camera.cs
+++ b/Windows/CS/Framework4.0/Toprie/Toprie/Camera.cs
@@ -31,6 +31,11 @@ namespace JoyD.Windows.CS.Toprie
// 信息图像,用于显示额外信息
private Image _infoImage = null;
+ // 最近一次获取到的温度数据
+ private TemperatureData _lastTemperatureData = null;
+ // 用于保护_lastTemperatureData的线程锁
+ private readonly object _lastTemperatureDataLock = new object();
+
// 用于保护_lastImage的线程锁
private readonly object _lastImageLock = new object();
@@ -63,9 +68,53 @@ namespace JoyD.Windows.CS.Toprie
{
_deviceManager.ProjectPath = _projectPath;
}
+ }
}
+ }
+
+ ///
+ /// 获取最近一次接收到的温度数据
+ ///
+ public TemperatureData LastTemperatureData
+ {
+ get
+ {
+ lock (_lastTemperatureDataLock)
+ {
+ return _lastTemperatureData;
+ }
}
+ }
+
+ ///
+ /// 设备管理器温度数据接收事件处理
+ ///
+ private void DeviceManager_TemperatureReceived(object sender, DeviceManager.TemperatureReceivedEventArgs e)
+ {
+ if (DesignMode) return;
+
+ try
+ {
+ // 确保事件参数有效
+ if (e == null || e.TemperatureData == null)
+ {
+ Console.WriteLine("接收到无效的温度数据事件参数");
+ return;
+ }
+
+ // 更新最近一次温度数据
+ lock (_lastTemperatureDataLock)
+ {
+ _lastTemperatureData = e.TemperatureData;
+ }
+
+ Console.WriteLine("温度数据已更新");
}
+ catch (Exception ex)
+ {
+ Console.WriteLine($"处理接收到的温度数据时出错: {ex.Message}");
+ }
+ }
// 显示错误的定时器
@@ -340,6 +389,9 @@ namespace JoyD.Windows.CS.Toprie
// 注册连接异常事件
_deviceManager.ConnectionException += DeviceManager_ConnectionException;
+
+ // 注册温度数据接收事件
+ _deviceManager.TemperatureReceived += DeviceManager_TemperatureReceived;
}
}
@@ -985,6 +1037,13 @@ namespace JoyD.Windows.CS.Toprie
}
}
+ // 当TCP连接断开时,将最近一次温度数据实例设为null
+ lock (_lastTemperatureDataLock)
+ {
+ _lastTemperatureData = null;
+ Console.WriteLine("温度数据实例已清空");
+ }
+
// 设置连接状态后,调用更新Info
UpdateInfo();
@@ -1627,6 +1686,13 @@ namespace JoyD.Windows.CS.Toprie
_deviceManager.ImageReceived -= DeviceManager_ImageReceived;
_deviceManager.ConnectionStatusChanged -= DeviceManager_ConnectionStatusChanged;
_deviceManager.ConnectionException -= DeviceManager_ConnectionException;
+ _deviceManager.TemperatureReceived -= DeviceManager_TemperatureReceived;
+
+ // 释放温度数据资源
+ lock (_lastTemperatureDataLock)
+ {
+ _lastTemperatureData = null;
+ }
// 释放设备管理器资源
_deviceManager.Dispose();
_deviceManager = null;