移除DeviceManager.cs中不必要的温度数据传输开始命令,优化TCP连接后的数据接收逻辑

This commit is contained in:
zqm
2025-11-04 10:46:16 +08:00
parent 43d77686c6
commit b47a8fd600
2 changed files with 14 additions and 47 deletions

View File

@@ -3,4 +3,11 @@
2. 最大化时,填充满父容器。 2. 最大化时,填充满父容器。
3. 还原时,恢复到最大化前的位置和大小。 3. 还原时,恢复到最大化前的位置和大小。
4. 关闭时,从父容器中移除。 4. 关闭时,从父容器中移除。
5. 拖拽时,不允许超出父容器边界。 5. 拖拽时,允许在父容器内移动,不允许超出父容器边界。
### Panel
1. 初始添加时默认宽300px高250px。位置相对父容器水平居中垂直居中。
2. 最大化时,填充满父容器。
3. 还原时,恢复到最大化前的位置和大小。
4. 关闭时,从父容器中移除。
5. 拖拽时,允许在父容器内移动,不允许超出父容器边界。

View File

@@ -1224,12 +1224,8 @@ namespace JoyD.Windows.CS.Toprie
// 温度数据接收状态更新代码已移除,因为未被使用 // 温度数据接收状态更新代码已移除,因为未被使用
// 发送开始温度数据传输的命令 - 修改为热像仪可能接受的格式 // 根据SDK文档建立TCP连接后不需要发送任何开始命令
// 根据常见热像仪协议,尝试使用简单的命令格式 Log("TCP连接已建立等待接收温度数据...");
byte[] startCommand = Encoding.ASCII.GetBytes("start\r\n");
localStream.Write(startCommand, 0, startCommand.Length);
localStream.Flush();
Log("已发送开始温度数据传输命令: 'start\r\n'");
} }
catch (Exception ex) catch (Exception ex)
{ {
@@ -1337,47 +1333,11 @@ namespace JoyD.Windows.CS.Toprie
// 跳出内层循环,回到外层循环重新建立连接 // 跳出内层循环,回到外层循环重新建立连接
break; break;
} }
// 如果连接有效但数据传输可能已停止,尝试重新发送开始命令 // 根据SDK文档建立TCP连接后不需要发送任何开始命令
// 这是为了解决暂停后恢复时DataAvailable始终为false的问题 // 从暂停状态恢复时,只需继续监听数据流即可
try if (lastPaused && !isPaused)
{ {
// 发送开始温度数据传输的命令 Log("从暂停状态恢复,继续接收温度数据");
byte[] startCommand = Encoding.ASCII.GetBytes("start_temp_transfer\r\n");
localStream.Write(startCommand, 0, startCommand.Length);
localStream.Flush();
// 只有在从暂停状态恢复时状态从true变为false的瞬间才记录日志
lock (_lockObject)
{
if (lastPaused && !_isTemperatureReceivingPaused)
{
Log("从暂停状态恢复,重新发送开始温度数据传输命令");
}
}
}
catch (Exception ex)
{
Log($"重新发送开始命令失败: {ex.Message}");
// 发送失败,可能连接已断开,需要重建连接
try
{
if (localStream != null)
{
localStream.Close();
localStream = null;
}
if (localTcpClient != null)
{
localTcpClient.Close();
localTcpClient = null;
}
}
catch (Exception closeEx)
{
Log($"关闭失败连接时发生异常: {closeEx.Message}");
}
// 跳出内层循环,回到外层循环重新建立连接
break;
} }
} }