From cab535004cd4608bb23faaf2814ba4a2a5ade1d0 Mon Sep 17 00:00:00 2001 From: zqm Date: Tue, 4 Nov 2025 17:19:20 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9Comp=5Ftemp=E5=B1=9E=E6=80=A7?= =?UTF-8?q?=E6=94=AF=E6=8C=81+RET:=E5=92=8C+RSP:=E4=B8=A4=E7=A7=8D?= =?UTF-8?q?=E5=93=8D=E5=BA=94=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Toprie/Toprie/DeviceManager.cs | 7 ++-- .../CS/Framework4.0/Toprie/Toprie/README.md | 5 ++- Windows/CS/Framework4.0/Toprie/Toprie/V8.cs | 34 +++++++++---------- 3 files changed, 23 insertions(+), 23 deletions(-) diff --git a/Windows/CS/Framework4.0/Toprie/Toprie/DeviceManager.cs b/Windows/CS/Framework4.0/Toprie/Toprie/DeviceManager.cs index b036661..e9bb698 100644 --- a/Windows/CS/Framework4.0/Toprie/Toprie/DeviceManager.cs +++ b/Windows/CS/Framework4.0/Toprie/Toprie/DeviceManager.cs @@ -178,7 +178,7 @@ namespace JoyD.Windows.CS.Toprie /// /// 最近检查到的温度 /// - public TemperatureData LastTemperature = null; + public volatile TemperatureData LastTemperature = null; // 项目路径,用于数据文件的存取 private string _projectPath = ""; @@ -763,10 +763,10 @@ namespace JoyD.Windows.CS.Toprie // 记录处理开始时间 System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch(); stopwatch.Start(); - + // 调用温度帧处理方法 ProcessTemperatureFrame(frameToProcess, WIDTH, HEIGHT); - + // 停止计时并记录处理时间 stopwatch.Stop(); Log($"温度数据处理完成,耗时: {stopwatch.ElapsedMilliseconds}ms"); @@ -978,6 +978,7 @@ namespace JoyD.Windows.CS.Toprie { if (_connectionStatus == ConnectionStatus.Connected && _a8Sdk != null) { + // 使用SDK提供的Comp_temp属性获取温度补偿值 float compensationValue = _a8Sdk.Comp_temp; Log($"获取温度补偿值: {compensationValue}"); return compensationValue; diff --git a/Windows/CS/Framework4.0/Toprie/Toprie/README.md b/Windows/CS/Framework4.0/Toprie/Toprie/README.md index f829f49..410353d 100644 --- a/Windows/CS/Framework4.0/Toprie/Toprie/README.md +++ b/Windows/CS/Framework4.0/Toprie/Toprie/README.md @@ -13,9 +13,8 @@ 1. 暂停或恢复时,设置暂停状态,调用更新Info 2. 断开或连接时,设置连接状态,调用更新Info 3. Ping通状态变化时,修改Ping状态,调用更新Info -4. 温度数据更新时,调用更新Info -5. 图像更新时,保存LastImage,调用更新到UI -6. 2-5 只在非暂停状态下调用更新,暂停状态下不更新Info和UI +4. 图像更新时,保存LastImage,调用更新Info +5. 2-4 只在非暂停状态下调用更新,暂停状态下不更新Info和UI ### 更新Info 1. 以透明色清空Info diff --git a/Windows/CS/Framework4.0/Toprie/Toprie/V8.cs b/Windows/CS/Framework4.0/Toprie/Toprie/V8.cs index 970386b..9f0c0dd 100644 --- a/Windows/CS/Framework4.0/Toprie/Toprie/V8.cs +++ b/Windows/CS/Framework4.0/Toprie/Toprie/V8.cs @@ -2166,7 +2166,7 @@ namespace JoyD.Windows.CS.Toprie { // 解析响应中的设备名称 // 格式: +RET:1:设备名称$ 或 +RET:设备名称$ - if (response != null && response.StartsWith("+RET:")) + if (response != null && (response.StartsWith("+RET:") || response.StartsWith("+RSP:"))) { int paramTypeEndPos = response.IndexOf(':', 5); int nameStartPos = (paramTypeEndPos > 0) ? paramTypeEndPos + 1 : 5; @@ -2198,7 +2198,7 @@ namespace JoyD.Windows.CS.Toprie { // 解析响应,返回检测编号数据 // 响应格式: +RET:0:数据内容$ 或 +RET:数据内容$ - if (response != null && response.StartsWith("+RET:")) + if (response != null && (response.StartsWith("+RET:") || response.StartsWith("+RSP:"))) { // 解析响应中的数据部分 int startPos = response.IndexOf(':', 5) + 1; @@ -2248,7 +2248,7 @@ namespace JoyD.Windows.CS.Toprie if (SendCommand(command, out string response)) { // 解析响应中的温度帧值 - if (response != null && response.StartsWith("+RET:")) + if (response != null && (response.StartsWith("+RET:") || response.StartsWith("+RSP:"))) { int valueStartPos = response.IndexOf(':', 5) + 1; int endPos = response.IndexOf('$', valueStartPos); @@ -2330,24 +2330,24 @@ namespace JoyD.Windows.CS.Toprie { try { - // 使用GET_COMP_TEMP命令获取补偿温度 - SDK格式 - string command = $"{deviceIp}:{(int)CMD_TYPE.GET_COMP_TEMP}$"; + // 与C++ SDK保持一致,使用GET_PARAMETER命令并指定COMP_TEMP参数类型 + string command = $"{CMD_HEAD}:{(int)CMD_TYPE.GET_PARAMETER},{(int)PARAM_TYPE.COMP_TEMP}$"; if (SendCommand(command, out string response)) { - // 解析响应中的补偿温度值 - if (response != null && response.StartsWith("+RET:")) + // 解析响应中的补偿温度值 - 支持+RET:和+RSP:两种格式 + if (response != null && (response.StartsWith("+RET:") || response.StartsWith("+RSP:"))) { - int valueStartPos = response.IndexOf(':', 5) + 1; - int endPos = response.IndexOf('$', valueStartPos); - - if (endPos > valueStartPos) + // 与C++ SDK一致,从缓冲区+5位置解析值 + string valueStr = response.Substring(5); + // 移除末尾的$符号 + if (valueStr.EndsWith("$")) { - string valueStr = response.Substring(valueStartPos, endPos - valueStartPos); - if (int.TryParse(valueStr, out int result)) - { - return result; - } + valueStr = valueStr.Substring(0, valueStr.Length - 1); + } + if (int.TryParse(valueStr, out int result)) + { + return result; } } } @@ -2356,7 +2356,7 @@ namespace JoyD.Windows.CS.Toprie { Console.WriteLine($"获取补偿温度失败: {ex.Message}"); } - return 2500; + return 0; } }