修改断连更新逻辑

This commit is contained in:
zqm
2026-01-13 15:12:40 +08:00
parent 216318b929
commit d0e45bd479
2 changed files with 141 additions and 110 deletions

View File

@@ -1528,6 +1528,10 @@ namespace JoyD.Windows.CS.Toprie
if (!_isPaused)
{
UpdateInfo();
// 连接成功时,更新实时温度信息,确保测温区立即显示
UpdateRealTimeInfoOnUI();
// 直接调用UpdateImageOnUI(),确保界面立即刷新
UpdateImageOnUI();
}
break;
case ConnectionStatus.Disconnected:
@@ -1550,7 +1554,17 @@ namespace JoyD.Windows.CS.Toprie
}
}
// 连接断开时清空_displayImage不显示测温区
lock (_displayImageLock)
{
if (_displayImage != null)
{
using (Graphics g = Graphics.FromImage(_displayImage))
{
g.Clear(Color.Transparent);
}
}
}
// 按照README中要求的修改流程第2点和第5点断开或连接时设置连接状态只在非暂停状态下调用更新Info
if (!_isPaused)
@@ -1579,6 +1593,18 @@ namespace JoyD.Windows.CS.Toprie
WriteLog($"正在重新连接设备...{(!string.IsNullOrEmpty(e.DeviceInfo) ? " " + e.DeviceInfo : "")}");
ShowError(string.Empty); // 清除之前的错误信息
// 正在重连时清空_displayImage不显示测温区
lock (_displayImageLock)
{
if (_displayImage != null)
{
using (Graphics g = Graphics.FromImage(_displayImage))
{
g.Clear(Color.Transparent);
}
}
}
// 按照README中要求的修改流程第2点和第6点连接状态变化时只在非暂停状态下调用更新Info
if (_isFirst || !_isPaused)
{
@@ -3172,6 +3198,9 @@ namespace JoyD.Windows.CS.Toprie
g.Clear(Color.Transparent);
if (_deviceManager.CurrentImageMode == ImageMode.Infrared)
{
// 只有在设备连接状态下才绘制测温区
if (_deviceManager.ConnectionStatus == ConnectionStatus.Connected)
{
// 1. 先绘制区域框线,不受温度数据影响,只受显示设置影响
if (_showAreaTemperature)
@@ -3210,7 +3239,11 @@ namespace JoyD.Windows.CS.Toprie
Console.WriteLine($"绘制区域框时发生异常: {ex.Message}");
}
}
}
// 只有在设备连接状态下才绘制温度数据
if (_deviceManager.ConnectionStatus == ConnectionStatus.Connected)
{
// 2. 温度数据绘制逻辑,仍受温度数据有效性影响
TemperatureData temperatureData = _deviceManager.LastTemperature;
if (temperatureData != null && temperatureData.Timestamp != null)
@@ -3308,9 +3341,7 @@ namespace JoyD.Windows.CS.Toprie
// 设置显示状态标志
_isDisplayingInfo = true;
}
// 标记信息正在显示
_isDisplayingInfo = true;
}
}
}
}

View File

@@ -33,6 +33,6 @@ using System.Runtime.InteropServices;
//通过使用 "*",如下所示:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.2.5")]
[assembly: AssemblyFileVersion("1.0.2.6")]
[assembly: AssemblyFileVersion("1.0.2.7")]
// NuGet包相关信息已在项目文件中配置