From 81c65a35a68f02311da0f2cbe861e085e3cc6284 Mon Sep 17 00:00:00 2001 From: zqm Date: Thu, 6 Nov 2025 09:09:30 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DTemperatureData.cs=E4=B8=AD?= =?UTF-8?q?=E7=9A=84float=E5=88=B0int=E9=9A=90=E5=BC=8F=E8=BD=AC=E6=8D=A2?= =?UTF-8?q?=E9=94=99=E8=AF=AF=EF=BC=8C=E6=B7=BB=E5=8A=A0=E6=98=BE=E5=BC=8F?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E8=BD=AC=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Toprie/Toprie/DeviceManager.cs | 13 --------- .../Toprie/Toprie/TemperatureData.cs | 29 ++++++++++++++++++- 2 files changed, 28 insertions(+), 14 deletions(-) diff --git a/Windows/CS/Framework4.0/Toprie/Toprie/DeviceManager.cs b/Windows/CS/Framework4.0/Toprie/Toprie/DeviceManager.cs index 72713bc..8bdb95e 100644 --- a/Windows/CS/Framework4.0/Toprie/Toprie/DeviceManager.cs +++ b/Windows/CS/Framework4.0/Toprie/Toprie/DeviceManager.cs @@ -5411,8 +5411,6 @@ namespace JoyD.Windows.CS.Toprie } } - // 注释:该方法已在文件上方定义,避免重复实现 - /// /// 停止定期连接状态检查(兼容Form1) /// @@ -5421,17 +5419,6 @@ namespace JoyD.Windows.CS.Toprie StopConnectionCheck(); } - - - /// - /// 尝试ping设备IP地址 - /// - /// 设备IP地址 - /// 是否ping通 - // PingDevice方法已在文件上方定义,删除重复实现 - - - /// /// 保存温度数据到CSV文件 /// diff --git a/Windows/CS/Framework4.0/Toprie/Toprie/TemperatureData.cs b/Windows/CS/Framework4.0/Toprie/Toprie/TemperatureData.cs index 94a717b..2185c7b 100644 --- a/Windows/CS/Framework4.0/Toprie/Toprie/TemperatureData.cs +++ b/Windows/CS/Framework4.0/Toprie/Toprie/TemperatureData.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Collections.Concurrent; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -11,6 +12,13 @@ namespace JoyD.Windows.CS.Toprie /// public class TemperatureData { + /// + /// 静态温度数据映射表,线程安全 + /// 键:宽_高 + /// 值:x_y -> x,y + /// + private static readonly ConcurrentDictionary>> _temperatureMap = new ConcurrentDictionary>>(); + /// /// 原始温度数据矩阵(未温补) /// 格式: [行][列] @@ -74,7 +82,26 @@ namespace JoyD.Windows.CS.Toprie // 创建512×384的实际温度矩阵 RealTemperatureMatrix = new float[384, 512]; Timestamp = DateTime.Now; - + String key = $"{width}_{height}"; + ConcurrentDictionary> map = _temperatureMap.GetOrAdd(key, new ConcurrentDictionary>()); + if (map.IsEmpty) + { + // 计算映射比例(从原始分辨率映射到512×384) + float rowRatio = 384.0f / Height; + float colRatio = 512.0f / Width; + for (int row = 0; row < 384; row++) + { + for (int col = 0; col < 512; col++) + { + int x = (int)(col / colRatio); + int y = (int)(row / rowRatio); + key = $"{x}_{y}"; + List toXY = map.GetOrAdd(key, new List()); + toXY.Add(row); + toXY.Add(col); + } + } + } ParseRawData(rawData, compensationValue); CalculateStatistics(); }