Commit 78c7fd7b by Yuhaibo

1

parent b2bf9116
......@@ -1481,12 +1481,17 @@ class MainWindow(
更新任务面板中通道列的颜色
当通道的检测状态改变时调用此方法,更新任务面板中对应通道列的背景色
调用 MissionPanelHandler 的方法(MainWindow 继承了 MissionPanelHandler)
"""
print(f"🎯 [app._updateChannelColumnColor] 方法被调用")
try:
if hasattr(self, '_updateChannelCellColors'):
self._updateChannelCellColors()
# MainWindow 继承了 MissionPanelHandler,直接调用父类方法
from handlers.videopage import MissionPanelHandler
MissionPanelHandler._updateChannelColumnColor(self)
except Exception as e:
print(f"⚠️ [更新通道列颜色] 失败: {e}")
import traceback
traceback.print_exc()
def closeEvent(self, event):
"""窗口关闭事件"""
......
......@@ -5,14 +5,14 @@ channel1:
height: 20mm
name: 通道1_区域1
boxes:
- - 484
- 710
- 352
- - 715
- 629
- 416
fixed_bottoms:
- 850
- 795
fixed_tops:
- 569
last_updated: '2025-11-29 12:56:00'
- 462
last_updated: '2025-11-29 13:46:20'
channel2:
annotation_count: 1
areas:
......
......@@ -17,23 +17,23 @@ channels:
name: '4'
channel2:
general:
task_id: '123'
task_name: '21'
save_liquid_data_path: d:\restructure\liquid_level_line_detection_system\database\mission_result\123_21
task_id: '1'
task_name: '2'
save_liquid_data_path: d:\restructure\liquid_level_line_detection_system\database\mission_result\1_2
channel3:
general:
task_id: '123'
task_name: '21'
save_liquid_data_path: d:\restructure\liquid_level_line_detection_system\database\mission_result\123_21
task_id: '1'
task_name: '222'
save_liquid_data_path: d:\restructure\liquid_level_line_detection_system\database\mission_result\1_222
channel4:
general:
task_id: '1'
task_name: '1'
save_liquid_data_path: d:\restructure\liquid_level_line_detection_system\database\mission_result\1_1
task_name: '222'
save_liquid_data_path: d:\restructure\liquid_level_line_detection_system\database\mission_result\1_222
channel1:
general:
task_id: '1'
task_name: '1'
task_id: 2 去
task_name:
area_count: 0
safe_low: 2.0mm
safe_high: 10.0mm
......@@ -41,7 +41,8 @@ channel1:
video_format: AVI
push_address: ''
video_path: ''
save_liquid_data_path: d:\restructure\liquid_level_line_detection_system\database\mission_result\1_1
save_liquid_data_path: D:\restructure\liquid_level_line_detection_system\database\mission_result\2
去_去
areas:
area_1: 通道1_区域1
area_2: 通道1_区域2
......
task_id: 2 去
task_id: 2 去
task_name:
status: 未启动
selected_channels:
- 通道1
created_time: '2025-11-29 13:30:07'
mission_result_folder_path: D:\restructure\liquid_level_line_detection_system\database\mission_result\2
去_去
task_id: 任务
task_id: 任务
task_name: 若是
status: 未启动
selected_channels:
- 通道1
created_time: '2025-11-29 13:39:21'
mission_result_folder_path: D:\restructure\liquid_level_line_detection_system\database\mission_result\任务_若是
task_id: 企鹅
task_id: 企鹅
task_name: 1额
status: 未启动
selected_channels:
- 通道1
created_time: '2025-11-29 13:34:35'
mission_result_folder_path: D:\restructure\liquid_level_line_detection_system\database\mission_result\企鹅_1额
task_id: 去v
task_id: 去v
task_name: 去v
status: 未启动
selected_channels:
- 通道1
created_time: '2025-11-29 13:34:18'
mission_result_folder_path: D:\restructure\liquid_level_line_detection_system\database\mission_result\去v_去v
2025-11-29-11:13:54.674 0.0
2025-11-29-11:13:54.674 0.0
......@@ -14172,3 +14172,488 @@
2025-11-29-13:08:14.945 0.0
2025-11-29-13:08:15.154 0.0
2025-11-29-13:08:15.365 15.7
2025-11-29-13:29:55.995 15.7
2025-11-29-13:29:56.028 0.0
2025-11-29-13:29:56.249 0.0
2025-11-29-13:29:56.446 0.0
2025-11-29-13:29:56.640 0.0
2025-11-29-13:29:56.857 0.0
2025-11-29-13:29:57.056 0.0
2025-11-29-13:29:57.265 0.0
2025-11-29-13:29:57.502 0.0
2025-11-29-13:29:57.713 0.0
2025-11-29-13:29:57.908 0.0
2025-11-29-13:29:58.129 0.0
2025-11-29-13:29:58.321 0.0
2025-11-29-13:29:58.510 0.0
2025-11-29-13:29:58.710 0.0
2025-11-29-13:29:58.916 0.0
2025-11-29-13:29:59.136 0.0
2025-11-29-13:29:59.342 0.0
2025-11-29-13:29:59.560 0.0
2025-11-29-13:29:59.763 0.0
2025-11-29-13:29:59.958 0.0
2025-11-29-13:30:00.179 0.0
2025-11-29-13:30:00.386 0.0
2025-11-29-13:30:00.588 0.0
2025-11-29-13:30:00.791 0.0
2025-11-29-13:30:00.983 0.0
2025-11-29-13:30:01.184 0.0
2025-11-29-13:30:01.402 0.0
2025-11-29-13:30:01.606 0.0
2025-11-29-13:30:01.800 0.0
2025-11-29-13:30:02.002 0.0
2025-11-29-13:30:02.209 0.0
2025-11-29-13:30:02.408 0.0
2025-11-29-13:30:02.618 0.0
2025-11-29-13:30:02.813 0.0
2025-11-29-13:30:03.019 0.0
2025-11-29-13:30:03.227 0.0
2025-11-29-13:30:03.429 0.0
2025-11-29-13:30:03.635 0.0
2025-11-29-13:30:03.858 0.0
2025-11-29-13:30:04.065 0.0
2025-11-29-13:30:04.280 0.0
2025-11-29-13:30:04.479 0.0
2025-11-29-13:30:04.667 0.0
2025-11-29-13:30:04.895 0.0
2025-11-29-13:30:05.080 0.0
2025-11-29-13:30:05.286 0.0
2025-11-29-13:30:05.491 0.0
2025-11-29-13:30:05.701 0.0
2025-11-29-13:30:05.897 0.0
2025-11-29-13:30:06.077 0.0
2025-11-29-13:30:06.319 0.0
2025-11-29-13:30:06.501 0.0
2025-11-29-13:30:06.700 0.0
2025-11-29-13:30:06.891 0.0
2025-11-29-13:30:07.090 0.0
2025-11-29-13:30:07.307 0.0
2025-11-29-13:30:07.493 0.0
2025-11-29-13:30:07.707 0.0
2025-11-29-13:30:07.926 0.0
2025-11-29-13:30:08.119 0.0
2025-11-29-13:30:08.308 0.0
2025-11-29-13:30:08.518 0.0
2025-11-29-13:30:08.725 0.0
2025-11-29-13:30:08.935 0.0
2025-11-29-13:30:09.118 0.0
2025-11-29-13:30:09.321 0.0
2025-11-29-13:30:09.534 0.0
2025-11-29-13:30:09.731 0.0
2025-11-29-13:30:09.932 0.0
2025-11-29-13:30:10.138 0.0
2025-11-29-13:30:10.334 0.0
2025-11-29-13:30:10.551 0.0
2025-11-29-13:30:10.732 0.0
2025-11-29-13:30:10.936 0.0
2025-11-29-13:30:11.160 16.4
2025-11-29-13:30:11.329 0.0
2025-11-29-13:42:18.731 0.0
2025-11-29-13:42:18.763 0.0
2025-11-29-13:42:18.956 0.0
2025-11-29-13:42:19.165 0.0
2025-11-29-13:42:19.362 0.0
2025-11-29-13:42:19.571 0.0
2025-11-29-13:42:19.774 0.0
2025-11-29-13:42:19.966 0.0
2025-11-29-13:42:20.180 0.0
2025-11-29-13:42:20.377 0.0
2025-11-29-13:42:20.575 0.0
2025-11-29-13:45:08.734 0.0
2025-11-29-13:45:08.776 0.0
2025-11-29-13:45:09.018 0.0
2025-11-29-13:45:09.209 0.0
2025-11-29-13:45:09.418 0.0
2025-11-29-13:45:09.619 0.0
2025-11-29-13:45:09.822 0.0
2025-11-29-13:45:10.023 0.0
2025-11-29-13:45:10.223 0.0
2025-11-29-13:45:10.427 0.0
2025-11-29-13:45:10.633 0.0
2025-11-29-13:45:10.829 0.0
2025-11-29-13:45:11.034 0.0
2025-11-29-13:45:11.232 0.0
2025-11-29-13:45:11.439 0.0
2025-11-29-13:45:11.638 0.0
2025-11-29-13:45:11.841 0.0
2025-11-29-13:45:12.052 0.0
2025-11-29-13:45:12.251 0.0
2025-11-29-13:45:12.453 0.0
2025-11-29-13:46:35.860 0.0
2025-11-29-13:46:35.900 0.0
2025-11-29-13:46:36.130 0.0
2025-11-29-13:46:36.332 0.0
2025-11-29-13:46:36.530 0.0
2025-11-29-13:46:36.721 0.0
2025-11-29-13:46:36.953 0.0
2025-11-29-13:46:37.145 0.0
2025-11-29-13:46:37.356 0.0
2025-11-29-13:46:37.549 0.0
2025-11-29-13:46:37.779 0.0
2025-11-29-13:46:37.982 0.0
2025-11-29-13:46:38.175 0.0
2025-11-29-13:46:38.375 0.0
2025-11-29-13:46:38.604 0.0
2025-11-29-13:46:38.806 0.0
2025-11-29-13:46:39.018 0.0
2025-11-29-13:46:39.232 0.0
2025-11-29-13:46:39.451 0.0
2025-11-29-13:46:39.646 0.0
2025-11-29-13:46:39.866 0.0
2025-11-29-13:46:40.056 0.0
2025-11-29-13:46:40.259 0.0
2025-11-29-13:46:40.481 0.0
2025-11-29-13:46:40.687 0.0
2025-11-29-13:46:40.898 0.0
2025-11-29-13:46:41.104 0.0
2025-11-29-13:46:41.314 0.0
2025-11-29-13:46:41.527 0.0
2025-11-29-13:46:41.729 0.0
2025-11-29-13:46:41.968 0.0
2025-11-29-13:46:42.171 0.0
2025-11-29-13:46:42.398 0.0
2025-11-29-13:46:42.586 0.0
2025-11-29-13:46:42.776 0.0
2025-11-29-13:46:42.977 0.0
2025-11-29-13:46:43.173 0.0
2025-11-29-13:46:43.394 0.0
2025-11-29-13:46:43.580 0.0
2025-11-29-13:46:43.818 0.0
2025-11-29-13:46:44.059 0.0
2025-11-29-13:46:44.241 0.0
2025-11-29-13:46:44.437 0.0
2025-11-29-13:46:44.634 0.0
2025-11-29-13:46:44.831 0.0
2025-11-29-13:46:45.024 0.0
2025-11-29-13:46:45.240 0.0
2025-11-29-13:46:45.437 0.0
2025-11-29-13:46:45.663 0.0
2025-11-29-13:46:45.864 0.0
2025-11-29-13:46:46.062 0.0
2025-11-29-13:46:46.320 0.0
2025-11-29-13:46:46.505 0.0
2025-11-29-13:46:46.685 0.0
2025-11-29-13:46:46.921 0.0
2025-11-29-13:46:47.107 0.0
2025-11-29-13:46:47.310 0.0
2025-11-29-13:46:47.515 0.0
2025-11-29-13:46:47.732 0.0
2025-11-29-13:46:47.935 0.0
2025-11-29-13:46:48.142 0.0
2025-11-29-13:46:48.355 0.0
2025-11-29-13:46:48.570 0.0
2025-11-29-13:46:48.794 0.0
2025-11-29-13:46:49.004 0.0
2025-11-29-13:46:49.195 0.0
2025-11-29-13:46:49.398 0.0
2025-11-29-13:46:49.607 0.0
2025-11-29-13:46:49.832 0.0
2025-11-29-13:46:50.049 0.0
2025-11-29-13:46:50.263 0.0
2025-11-29-13:46:50.449 0.0
2025-11-29-13:46:50.668 0.0
2025-11-29-13:46:50.851 0.0
2025-11-29-13:46:51.093 0.0
2025-11-29-13:46:51.271 0.0
2025-11-29-13:46:51.474 0.0
2025-11-29-13:46:51.697 0.0
2025-11-29-13:46:51.899 0.0
2025-11-29-13:46:52.101 0.0
2025-11-29-13:46:52.306 0.0
2025-11-29-13:46:52.514 0.0
2025-11-29-13:46:52.711 0.0
2025-11-29-13:46:52.910 0.0
2025-11-29-13:46:53.099 0.0
2025-11-29-13:46:53.331 0.0
2025-11-29-13:46:53.570 0.0
2025-11-29-13:46:53.774 0.0
2025-11-29-13:46:53.932 0.0
2025-11-29-13:46:54.137 0.0
2025-11-29-13:46:54.323 0.0
2025-11-29-13:46:54.555 0.0
2025-11-29-13:46:54.782 0.0
2025-11-29-13:46:54.968 0.0
2025-11-29-13:46:55.261 0.0
2025-11-29-13:46:55.447 0.0
2025-11-29-13:46:55.606 0.0
2025-11-29-13:46:55.775 0.0
2025-11-29-13:46:55.995 0.0
2025-11-29-13:46:56.208 0.0
2025-11-29-13:46:56.427 0.0
2025-11-29-13:46:56.597 0.0
2025-11-29-13:46:56.770 0.0
2025-11-29-13:46:56.989 0.0
2025-11-29-13:46:57.205 0.0
2025-11-29-13:46:57.463 0.0
2025-11-29-13:46:57.659 0.0
2025-11-29-13:46:57.858 0.0
2025-11-29-13:46:58.144 0.0
2025-11-29-13:46:58.239 0.0
2025-11-29-13:46:58.435 0.0
2025-11-29-13:46:58.655 0.0
2025-11-29-13:46:58.866 0.0
2025-11-29-13:46:59.076 0.0
2025-11-29-13:46:59.333 0.0
2025-11-29-13:46:59.519 0.0
2025-11-29-13:46:59.704 0.0
2025-11-29-13:46:59.926 0.0
2025-11-29-13:47:00.157 0.0
2025-11-29-13:47:00.329 0.0
2025-11-29-13:47:00.570 0.0
2025-11-29-13:47:00.802 0.0
2025-11-29-13:47:00.970 0.0
2025-11-29-13:47:01.185 0.0
2025-11-29-13:47:01.405 0.0
2025-11-29-13:47:01.592 0.0
2025-11-29-13:47:01.798 0.0
2025-11-29-13:47:02.037 0.0
2025-11-29-13:47:02.218 0.0
2025-11-29-13:47:02.415 0.0
2025-11-29-13:47:02.665 0.0
2025-11-29-13:47:02.832 0.0
2025-11-29-13:47:03.075 0.0
2025-11-29-13:47:03.271 0.0
2025-11-29-13:47:03.509 0.0
2025-11-29-13:47:03.695 0.0
2025-11-29-13:47:03.885 0.0
2025-11-29-13:47:04.077 0.0
2025-11-29-13:47:04.313 0.0
2025-11-29-13:47:04.499 0.0
2025-11-29-13:47:04.745 0.0
2025-11-29-13:47:04.971 0.0
2025-11-29-13:47:05.141 0.0
2025-11-29-13:47:05.316 0.0
2025-11-29-13:47:05.518 0.0
2025-11-29-13:47:05.740 0.0
2025-11-29-13:47:06.038 0.0
2025-11-29-13:47:06.071 0.0
2025-11-29-13:47:06.300 0.0
2025-11-29-13:47:06.493 0.0
2025-11-29-13:47:06.777 0.0
2025-11-29-13:47:06.897 0.0
2025-11-29-13:47:07.117 0.0
2025-11-29-13:47:07.304 0.0
2025-11-29-13:47:07.520 0.0
2025-11-29-13:47:07.716 0.0
2025-11-29-13:47:07.918 0.0
2025-11-29-13:47:08.126 0.0
2025-11-29-13:47:08.345 0.0
2025-11-29-13:47:08.559 0.0
2025-11-29-13:47:08.759 0.0
2025-11-29-13:47:08.955 0.0
2025-11-29-13:47:09.169 0.0
2025-11-29-13:47:09.351 0.0
2025-11-29-13:47:09.568 0.0
2025-11-29-13:47:09.777 0.0
2025-11-29-13:47:09.982 0.0
2025-11-29-13:47:10.201 0.0
2025-11-29-13:47:10.385 0.0
2025-11-29-13:47:10.591 0.0
2025-11-29-13:47:10.798 0.0
2025-11-29-13:47:11.003 0.0
2025-11-29-13:47:11.201 0.0
2025-11-29-13:47:11.408 0.0
2025-11-29-13:47:11.601 0.0
2025-11-29-13:47:11.803 0.0
2025-11-29-13:47:12.021 0.0
2025-11-29-13:47:12.233 0.0
2025-11-29-13:47:12.448 0.0
2025-11-29-13:47:12.659 0.0
2025-11-29-13:47:12.855 0.0
2025-11-29-13:47:13.063 0.0
2025-11-29-13:51:51.538 16.5
2025-11-29-13:51:51.576 17.5
2025-11-29-13:51:51.790 17.1
2025-11-29-13:51:51.995 16.6
2025-11-29-13:51:52.208 16.6
2025-11-29-13:51:52.401 0.0
2025-11-29-13:51:52.603 0.0
2025-11-29-13:51:52.797 16.2
2025-11-29-13:51:53.003 16.3
2025-11-29-13:51:53.208 16.3
2025-11-29-13:51:53.409 0.0
2025-11-29-13:51:53.610 0.0
2025-11-29-13:51:53.807 0.0
2025-11-29-13:51:54.011 0.0
2025-11-29-13:51:54.224 0.0
2025-11-29-13:51:54.419 0.0
2025-11-29-13:51:54.629 0.0
2025-11-29-13:51:54.819 16.2
2025-11-29-13:51:55.029 16.2
2025-11-29-13:51:55.226 16.0
2025-11-29-13:51:55.438 16.3
2025-11-29-13:51:55.645 16.0
2025-11-29-13:51:55.843 16.0
2025-11-29-13:51:56.048 16.0
2025-11-29-13:51:56.259 16.0
2025-11-29-13:51:56.455 0.0
2025-11-29-13:51:56.676 0.0
2025-11-29-13:51:56.863 0.0
2025-11-29-13:51:57.064 0.0
2025-11-29-13:51:57.277 0.0
2025-11-29-13:51:57.487 16.2
2025-11-29-13:51:57.726 16.0
2025-11-29-13:51:57.923 16.3
2025-11-29-13:51:58.114 16.2
2025-11-29-13:51:58.330 16.5
2025-11-29-13:51:58.525 0.0
2025-11-29-13:51:58.710 16.0
2025-11-29-13:51:58.920 16.0
2025-11-29-13:51:59.138 16.0
2025-11-29-13:51:59.332 16.2
2025-11-29-13:51:59.526 0.0
2025-11-29-13:51:59.734 0.0
2025-11-29-13:51:59.942 0.0
2025-11-29-13:52:00.150 0.0
2025-11-29-13:52:00.360 0.0
2025-11-29-13:52:00.564 0.0
2025-11-29-13:52:00.764 0.0
2025-11-29-13:52:00.975 0.0
2025-11-29-13:52:01.203 0.0
2025-11-29-13:52:01.414 0.0
2025-11-29-13:52:01.671 16.6
2025-11-29-13:52:01.846 16.6
2025-11-29-13:52:02.044 16.5
2025-11-29-13:52:02.243 16.5
2025-11-29-13:52:02.438 0.0
2025-11-29-13:52:02.638 0.0
2025-11-29-13:52:02.841 0.0
2025-11-29-13:52:03.051 0.0
2025-11-29-13:52:03.251 0.0
2025-11-29-13:52:03.460 0.0
2025-11-29-13:52:03.655 0.0
2025-11-29-13:52:03.854 0.0
2025-11-29-13:52:04.072 16.3
2025-11-29-13:52:04.291 16.8
2025-11-29-13:52:04.488 0.0
2025-11-29-13:52:04.708 16.6
2025-11-29-13:52:04.899 16.2
2025-11-29-13:52:05.122 16.0
2025-11-29-13:52:05.311 15.7
2025-11-29-13:52:05.509 16.2
2025-11-29-13:52:05.729 16.3
2025-11-29-13:52:05.919 16.2
2025-11-29-13:52:06.151 16.2
2025-11-29-13:52:06.360 16.3
2025-11-29-13:52:06.571 0.0
2025-11-29-13:52:06.777 0.0
2025-11-29-13:52:06.976 0.0
2025-11-29-13:52:07.178 0.0
2025-11-29-13:52:07.393 0.0
2025-11-29-13:52:07.594 16.3
2025-11-29-13:52:07.784 0.0
2025-11-29-13:52:08.004 0.0
2025-11-29-13:52:08.208 15.5
2025-11-29-13:52:08.399 0.0
2025-11-29-13:52:08.605 0.0
2025-11-29-13:52:08.810 0.0
2025-11-29-13:52:09.010 0.0
2025-11-29-13:52:09.233 0.0
2025-11-29-13:52:09.434 0.0
2025-11-29-13:52:09.635 0.0
2025-11-29-13:52:09.854 16.5
2025-11-29-13:52:10.054 0.0
2025-11-29-13:52:10.253 0.0
2025-11-29-13:52:10.456 0.0
2025-11-29-13:52:10.724 0.0
2025-11-29-13:52:10.828 16.8
2025-11-29-13:52:11.001 16.6
2025-11-29-13:52:11.208 16.6
2025-11-29-13:52:11.404 0.0
2025-11-29-13:52:11.603 0.0
2025-11-29-13:52:11.803 0.0
2025-11-29-13:52:12.012 16.9
2025-11-29-13:52:12.220 16.6
2025-11-29-13:52:12.415 17.1
2025-11-29-13:52:12.609 16.6
2025-11-29-13:52:12.821 16.8
2025-11-29-13:52:13.027 16.5
2025-11-29-13:52:13.227 0.0
2025-11-29-13:52:13.432 0.0
2025-11-29-13:52:13.645 16.6
2025-11-29-13:52:13.847 16.6
2025-11-29-13:52:14.080 16.0
2025-11-29-13:52:14.265 15.9
2025-11-29-13:52:14.459 0.0
2025-11-29-13:52:14.656 0.0
2025-11-29-13:52:14.882 16.2
2025-11-29-13:52:15.071 0.0
2025-11-29-13:52:15.297 16.3
2025-11-29-13:52:15.506 16.5
2025-11-29-13:52:15.723 16.5
2025-11-29-13:52:15.941 16.8
2025-11-29-13:52:16.147 16.8
2025-11-29-13:52:16.392 16.8
2025-11-29-13:52:16.581 16.3
2025-11-29-13:52:16.775 0.0
2025-11-29-13:52:16.979 0.0
2025-11-29-13:52:17.193 0.0
2025-11-29-13:52:17.412 0.0
2025-11-29-13:52:17.605 16.6
2025-11-29-13:52:17.809 16.3
2025-11-29-13:52:18.015 16.2
2025-11-29-13:52:18.259 0.0
2025-11-29-13:52:18.473 0.0
2025-11-29-13:52:18.663 0.0
2025-11-29-13:52:18.868 16.2
2025-11-29-13:52:19.084 0.0
2025-11-29-13:52:19.268 0.0
2025-11-29-13:52:19.482 0.0
2025-11-29-13:52:19.669 0.0
2025-11-29-13:52:19.895 0.0
2025-11-29-13:52:20.067 0.0
2025-11-29-13:52:20.299 0.0
2025-11-29-13:52:20.468 0.0
2025-11-29-13:52:20.672 0.0
2025-11-29-13:52:20.893 16.6
2025-11-29-13:52:21.088 0.0
2025-11-29-13:52:21.293 16.5
2025-11-29-13:52:21.516 16.3
2025-11-29-13:52:21.712 16.6
2025-11-29-13:52:21.913 16.3
2025-11-29-13:52:22.125 16.5
2025-11-29-13:52:22.352 16.2
2025-11-29-13:52:22.535 16.5
2025-11-29-13:52:22.814 0.0
2025-11-29-13:52:23.009 16.3
2025-11-29-13:52:23.173 16.3
2025-11-29-13:52:23.377 16.5
2025-11-29-13:52:23.607 0.0
2025-11-29-13:52:23.808 0.0
2025-11-29-13:52:24.007 16.6
2025-11-29-13:52:24.217 16.6
2025-11-29-13:52:24.435 0.0
2025-11-29-13:52:24.689 0.0
2025-11-29-13:52:24.851 15.9
2025-11-29-13:52:25.071 16.3
2025-11-29-13:52:25.290 16.2
2025-11-29-13:52:25.494 16.3
2025-11-29-13:52:25.722 16.3
2025-11-29-13:52:25.904 0.0
2025-11-29-13:52:26.104 16.5
2025-11-29-13:52:26.308 16.3
2025-11-29-13:52:26.521 0.0
2025-11-29-13:52:26.730 15.7
2025-11-29-13:52:26.910 0.0
2025-11-29-13:52:27.125 0.0
2025-11-29-13:52:27.334 15.4
2025-11-29-13:52:27.535 15.7
2025-11-29-13:52:27.755 15.9
2025-11-29-13:52:27.993 16.0
2025-11-29-13:52:28.178 15.9
2025-11-29-13:52:28.380 16.2
2025-11-29-13:52:28.581 0.0
2025-11-29-13:52:28.806 15.7
2025-11-29-13:52:29.025 15.5
2025-11-29-13:52:29.247 15.9
2025-11-29-13:52:29.471 15.9
2025-11-29-13:52:29.643 0.0
2025-11-29-13:52:29.903 0.0
2025-11-29-13:52:30.054 0.0
2025-11-29-13:52:30.254 16.6
2025-11-29-13:52:30.468 0.0
2025-11-29-13:52:30.687 14.7
2025-11-29-13:52:30.872 0.0
2025-11-29-13:52:31.084 16.0
2025-11-29-13:52:31.354 0.0
2025-11-29-11:16:22.428 0.0
2025-11-29-11:16:22.428 0.0
......@@ -935,3 +935,778 @@
2025-11-29-11:19:34.282 0.0
2025-11-29-11:19:34.484 0.0
2025-11-29-11:19:34.689 0.0
2025-11-29-13:33:03.834 0.0
2025-11-29-13:33:03.882 0.0
2025-11-29-13:33:04.068 0.0
2025-11-29-13:33:04.285 0.0
2025-11-29-13:33:04.491 0.0
2025-11-29-13:33:04.708 0.0
2025-11-29-13:33:04.902 0.0
2025-11-29-13:33:05.102 0.0
2025-11-29-13:33:05.309 0.0
2025-11-29-13:33:05.514 0.0
2025-11-29-13:33:05.719 0.0
2025-11-29-13:33:05.910 0.0
2025-11-29-13:33:06.118 0.0
2025-11-29-13:33:06.328 0.0
2025-11-29-13:33:06.526 0.0
2025-11-29-13:33:06.741 0.0
2025-11-29-13:33:06.971 0.0
2025-11-29-13:33:07.177 0.0
2025-11-29-13:33:07.374 0.0
2025-11-29-13:33:07.572 0.0
2025-11-29-13:33:07.768 0.0
2025-11-29-13:33:07.982 0.0
2025-11-29-13:33:08.189 0.0
2025-11-29-13:33:08.399 0.0
2025-11-29-13:33:08.610 0.0
2025-11-29-13:33:08.813 0.0
2025-11-29-13:33:09.029 0.0
2025-11-29-13:33:09.241 0.0
2025-11-29-13:33:09.437 0.0
2025-11-29-13:33:09.642 0.0
2025-11-29-13:33:09.847 0.0
2025-11-29-13:33:10.071 0.0
2025-11-29-13:33:10.279 0.0
2025-11-29-13:33:10.489 0.0
2025-11-29-13:33:10.722 0.0
2025-11-29-13:33:10.898 0.0
2025-11-29-13:33:11.112 0.0
2025-11-29-13:33:11.351 0.0
2025-11-29-13:33:11.553 0.0
2025-11-29-13:33:11.751 0.0
2025-11-29-13:33:11.943 0.0
2025-11-29-13:33:12.151 0.0
2025-11-29-13:33:12.357 0.0
2025-11-29-13:33:12.574 0.0
2025-11-29-13:33:12.803 0.0
2025-11-29-13:33:12.999 0.0
2025-11-29-13:33:13.182 0.0
2025-11-29-13:33:13.418 0.0
2025-11-29-13:33:13.619 0.0
2025-11-29-13:33:13.813 0.0
2025-11-29-13:33:14.003 0.0
2025-11-29-13:33:14.203 0.0
2025-11-29-13:33:14.412 0.0
2025-11-29-13:33:14.641 0.0
2025-11-29-13:33:14.847 0.0
2025-11-29-13:33:15.062 0.0
2025-11-29-13:33:15.255 0.0
2025-11-29-13:33:15.498 0.0
2025-11-29-13:33:15.669 0.0
2025-11-29-13:33:15.906 0.0
2025-11-29-13:33:16.098 0.0
2025-11-29-13:33:16.282 0.0
2025-11-29-13:33:16.510 0.0
2025-11-29-13:33:16.691 0.0
2025-11-29-13:33:16.891 0.0
2025-11-29-13:33:17.113 0.0
2025-11-29-13:33:17.296 0.0
2025-11-29-13:33:17.541 0.0
2025-11-29-13:33:17.729 0.0
2025-11-29-13:33:17.926 0.0
2025-11-29-13:33:18.163 0.0
2025-11-29-13:33:18.365 0.0
2025-11-29-13:33:18.547 0.0
2025-11-29-13:33:18.748 0.0
2025-11-29-13:33:18.955 0.0
2025-11-29-13:33:19.160 0.0
2025-11-29-13:33:19.365 0.0
2025-11-29-13:33:19.568 0.0
2025-11-29-13:33:19.770 0.0
2025-11-29-13:33:19.982 0.0
2025-11-29-13:33:20.181 0.0
2025-11-29-13:33:20.384 0.0
2025-11-29-13:33:20.604 0.0
2025-11-29-13:33:20.797 0.0
2025-11-29-13:33:21.011 0.0
2025-11-29-13:33:21.192 0.0
2025-11-29-13:33:21.420 0.0
2025-11-29-13:33:21.608 0.0
2025-11-29-13:33:21.832 0.0
2025-11-29-13:33:22.018 0.0
2025-11-29-13:33:22.233 0.0
2025-11-29-13:33:22.437 0.0
2025-11-29-13:33:22.629 0.0
2025-11-29-13:33:22.843 0.0
2025-11-29-13:33:23.057 0.0
2025-11-29-13:33:23.200 0.0
2025-11-29-13:33:23.429 0.0
2025-11-29-13:33:23.617 0.0
2025-11-29-13:33:23.793 0.0
2025-11-29-13:33:23.993 0.0
2025-11-29-13:33:24.204 0.0
2025-11-29-13:33:24.400 0.0
2025-11-29-13:33:24.607 0.0
2025-11-29-13:33:24.809 0.0
2025-11-29-13:33:25.003 0.0
2025-11-29-13:33:25.210 0.0
2025-11-29-13:33:25.411 0.0
2025-11-29-13:33:25.607 0.0
2025-11-29-13:33:25.808 0.0
2025-11-29-13:33:26.020 0.0
2025-11-29-13:33:26.215 0.0
2025-11-29-13:33:26.424 0.0
2025-11-29-13:33:26.633 0.0
2025-11-29-13:33:26.838 0.0
2025-11-29-13:33:27.033 0.0
2025-11-29-13:33:27.238 0.0
2025-11-29-13:33:27.444 0.0
2025-11-29-13:33:27.644 0.0
2025-11-29-13:33:27.846 0.0
2025-11-29-13:33:28.053 0.0
2025-11-29-13:33:28.254 0.0
2025-11-29-13:33:28.506 0.0
2025-11-29-13:33:28.672 0.0
2025-11-29-13:33:28.889 0.0
2025-11-29-13:33:29.100 0.0
2025-11-29-13:33:29.307 0.0
2025-11-29-13:33:29.530 0.0
2025-11-29-13:33:29.748 0.0
2025-11-29-13:33:29.943 0.0
2025-11-29-13:33:30.161 0.0
2025-11-29-13:33:30.367 0.0
2025-11-29-13:33:30.566 0.0
2025-11-29-13:33:30.788 0.0
2025-11-29-13:33:30.989 0.0
2025-11-29-13:33:31.206 0.0
2025-11-29-13:33:31.405 0.0
2025-11-29-13:33:31.606 0.0
2025-11-29-13:33:31.812 0.0
2025-11-29-13:33:32.027 0.0
2025-11-29-13:33:32.233 0.0
2025-11-29-13:33:32.449 0.0
2025-11-29-13:33:32.637 0.0
2025-11-29-13:33:32.844 0.0
2025-11-29-13:33:33.048 0.0
2025-11-29-13:33:33.245 0.0
2025-11-29-13:33:33.463 0.0
2025-11-29-13:33:33.675 0.0
2025-11-29-13:33:33.858 0.0
2025-11-29-13:33:34.077 0.0
2025-11-29-13:33:34.280 0.0
2025-11-29-13:33:34.484 0.0
2025-11-29-13:33:34.713 0.0
2025-11-29-13:33:34.880 0.0
2025-11-29-13:33:35.088 0.0
2025-11-29-13:33:35.300 0.0
2025-11-29-13:33:35.491 0.0
2025-11-29-13:33:35.692 0.0
2025-11-29-13:33:35.896 0.0
2025-11-29-13:33:36.114 0.0
2025-11-29-13:33:36.308 0.0
2025-11-29-13:33:36.510 0.0
2025-11-29-13:33:36.727 0.0
2025-11-29-13:33:36.935 0.0
2025-11-29-13:33:37.147 0.0
2025-11-29-13:33:37.343 0.0
2025-11-29-13:33:37.559 0.0
2025-11-29-13:33:37.777 0.0
2025-11-29-13:33:37.978 0.0
2025-11-29-13:33:38.179 0.0
2025-11-29-13:33:38.375 0.0
2025-11-29-13:33:38.603 0.0
2025-11-29-13:33:38.792 0.0
2025-11-29-13:33:39.009 0.0
2025-11-29-13:33:39.215 0.0
2025-11-29-13:33:39.404 0.0
2025-11-29-13:33:39.629 0.0
2025-11-29-13:33:39.810 0.0
2025-11-29-13:33:40.020 0.0
2025-11-29-13:33:40.221 0.0
2025-11-29-13:33:40.421 0.0
2025-11-29-13:33:40.632 0.0
2025-11-29-13:33:40.844 0.0
2025-11-29-13:33:41.048 0.0
2025-11-29-13:33:41.251 0.0
2025-11-29-13:33:41.451 0.0
2025-11-29-13:33:41.667 0.0
2025-11-29-13:33:41.861 0.0
2025-11-29-13:33:42.081 0.0
2025-11-29-13:33:42.268 0.0
2025-11-29-13:33:42.479 0.0
2025-11-29-13:33:42.683 0.0
2025-11-29-13:33:42.879 0.0
2025-11-29-13:33:43.125 0.0
2025-11-29-13:33:43.309 0.0
2025-11-29-13:33:43.447 0.0
2025-11-29-13:33:43.644 0.0
2025-11-29-13:33:43.859 0.0
2025-11-29-13:33:44.050 0.0
2025-11-29-13:33:44.281 0.0
2025-11-29-13:33:44.480 0.0
2025-11-29-13:33:44.701 0.0
2025-11-29-13:33:44.896 0.0
2025-11-29-13:33:45.103 0.0
2025-11-29-13:33:45.319 0.0
2025-11-29-13:33:45.545 0.0
2025-11-29-13:33:45.725 0.0
2025-11-29-13:33:45.921 0.0
2025-11-29-13:33:46.120 0.0
2025-11-29-13:33:46.340 0.0
2025-11-29-13:33:46.554 0.0
2025-11-29-13:33:46.765 0.0
2025-11-29-13:33:46.990 0.0
2025-11-29-13:33:47.189 0.0
2025-11-29-13:33:47.397 0.0
2025-11-29-13:33:47.604 0.0
2025-11-29-13:33:47.800 0.0
2025-11-29-13:33:48.022 0.0
2025-11-29-13:33:48.229 0.0
2025-11-29-13:33:48.432 0.0
2025-11-29-13:33:48.672 0.0
2025-11-29-13:33:48.854 0.0
2025-11-29-13:33:49.048 0.0
2025-11-29-13:33:49.265 0.0
2025-11-29-13:33:49.481 0.0
2025-11-29-13:33:49.679 0.0
2025-11-29-13:33:49.868 0.0
2025-11-29-13:33:50.069 0.0
2025-11-29-13:33:50.305 0.0
2025-11-29-13:33:50.494 0.0
2025-11-29-13:33:50.693 0.0
2025-11-29-13:33:50.918 0.0
2025-11-29-13:33:51.089 0.0
2025-11-29-13:33:51.310 0.0
2025-11-29-13:33:51.514 0.0
2025-11-29-13:33:51.726 0.0
2025-11-29-13:33:51.943 0.0
2025-11-29-13:33:52.165 0.0
2025-11-29-13:33:52.351 0.0
2025-11-29-13:33:52.573 0.0
2025-11-29-13:33:52.782 0.0
2025-11-29-13:33:52.963 0.0
2025-11-29-13:33:53.165 0.0
2025-11-29-13:33:53.368 0.0
2025-11-29-13:33:53.584 0.0
2025-11-29-13:33:53.798 0.0
2025-11-29-13:33:54.033 0.0
2025-11-29-13:33:54.146 0.0
2025-11-29-13:33:54.349 0.0
2025-11-29-13:33:54.546 0.0
2025-11-29-13:33:54.760 0.0
2025-11-29-13:33:54.943 0.0
2025-11-29-13:33:55.167 0.0
2025-11-29-13:33:55.365 0.0
2025-11-29-13:33:55.547 0.0
2025-11-29-13:33:55.753 0.0
2025-11-29-13:33:55.956 0.0
2025-11-29-13:33:56.160 0.0
2025-11-29-13:33:56.385 0.0
2025-11-29-13:33:56.589 0.0
2025-11-29-13:33:56.821 0.0
2025-11-29-13:33:56.996 0.0
2025-11-29-13:33:57.202 0.0
2025-11-29-13:33:57.409 0.0
2025-11-29-13:33:57.627 0.0
2025-11-29-13:33:57.820 0.0
2025-11-29-13:33:58.020 0.0
2025-11-29-13:33:58.244 0.0
2025-11-29-13:33:58.446 0.0
2025-11-29-13:33:58.651 0.0
2025-11-29-13:33:58.861 0.0
2025-11-29-13:33:59.064 0.0
2025-11-29-13:33:59.266 0.0
2025-11-29-13:33:59.479 0.0
2025-11-29-13:33:59.679 0.0
2025-11-29-13:33:59.894 0.0
2025-11-29-13:34:00.149 0.0
2025-11-29-13:34:00.332 0.0
2025-11-29-13:34:00.541 0.0
2025-11-29-13:34:00.731 0.0
2025-11-29-13:34:00.960 0.0
2025-11-29-13:34:01.179 0.0
2025-11-29-13:34:01.386 0.0
2025-11-29-13:34:01.570 0.0
2025-11-29-13:34:01.818 0.0
2025-11-29-13:34:02.012 0.0
2025-11-29-13:34:02.199 0.0
2025-11-29-13:34:02.404 0.0
2025-11-29-13:34:02.582 0.0
2025-11-29-13:34:02.757 0.0
2025-11-29-13:34:02.966 0.0
2025-11-29-13:34:03.163 0.0
2025-11-29-13:34:03.367 0.0
2025-11-29-13:34:03.568 0.0
2025-11-29-13:34:03.767 0.0
2025-11-29-13:34:03.973 0.0
2025-11-29-13:34:04.177 0.0
2025-11-29-13:34:04.394 0.0
2025-11-29-13:34:04.608 0.0
2025-11-29-13:34:04.816 0.0
2025-11-29-13:34:05.015 0.0
2025-11-29-13:34:05.216 0.0
2025-11-29-13:34:05.423 0.0
2025-11-29-13:34:05.624 0.0
2025-11-29-13:34:05.833 0.0
2025-11-29-13:34:06.027 0.0
2025-11-29-13:34:06.234 0.0
2025-11-29-13:34:06.434 0.0
2025-11-29-13:34:06.635 0.0
2025-11-29-13:34:06.841 0.0
2025-11-29-13:34:07.040 0.0
2025-11-29-13:34:07.244 0.0
2025-11-29-13:34:07.447 0.0
2025-11-29-13:34:07.644 0.0
2025-11-29-13:34:07.847 0.0
2025-11-29-13:34:08.045 0.0
2025-11-29-13:34:08.250 0.0
2025-11-29-13:34:08.451 0.0
2025-11-29-13:49:57.633 0.0
2025-11-29-13:49:57.657 0.0
2025-11-29-13:49:57.927 15.1
2025-11-29-13:49:58.066 0.0
2025-11-29-13:49:58.262 0.0
2025-11-29-13:49:58.471 0.0
2025-11-29-13:49:58.674 15.7
2025-11-29-13:49:58.869 0.0
2025-11-29-13:49:59.079 0.0
2025-11-29-13:49:59.279 16.6
2025-11-29-13:49:59.485 16.2
2025-11-29-13:49:59.719 16.3
2025-11-29-13:49:59.893 0.0
2025-11-29-13:50:00.104 0.0
2025-11-29-13:50:00.291 0.0
2025-11-29-13:50:00.500 0.0
2025-11-29-13:50:00.707 15.4
2025-11-29-13:50:00.903 0.0
2025-11-29-13:50:01.109 0.0
2025-11-29-13:50:01.333 0.0
2025-11-29-13:50:01.511 0.0
2025-11-29-13:50:01.729 0.0
2025-11-29-13:50:01.931 0.0
2025-11-29-13:50:02.135 0.0
2025-11-29-13:50:02.332 0.0
2025-11-29-13:50:02.567 16.5
2025-11-29-13:50:02.763 16.2
2025-11-29-13:50:02.947 16.2
2025-11-29-13:50:03.145 16.3
2025-11-29-13:50:03.358 0.0
2025-11-29-13:50:03.572 0.0
2025-11-29-13:50:03.769 0.0
2025-11-29-13:50:03.996 0.0
2025-11-29-13:50:04.192 0.0
2025-11-29-13:50:04.389 0.0
2025-11-29-13:50:04.604 0.0
2025-11-29-13:50:04.809 0.0
2025-11-29-13:50:05.027 0.0
2025-11-29-13:50:05.244 0.0
2025-11-29-13:50:05.437 0.0
2025-11-29-13:50:05.651 15.2
2025-11-29-13:50:05.810 15.7
2025-11-29-13:50:06.018 16.0
2025-11-29-13:50:06.219 0.0
2025-11-29-13:50:06.421 0.0
2025-11-29-13:50:06.626 0.0
2025-11-29-13:50:06.830 0.0
2025-11-29-13:50:07.045 0.0
2025-11-29-13:50:07.247 15.5
2025-11-29-13:50:07.457 16.3
2025-11-29-13:50:07.660 0.0
2025-11-29-13:50:07.857 15.1
2025-11-29-13:50:08.062 15.5
2025-11-29-13:50:08.281 16.2
2025-11-29-13:50:08.484 16.3
2025-11-29-13:50:08.680 16.0
2025-11-29-13:50:08.890 16.2
2025-11-29-13:50:09.094 16.3
2025-11-29-13:50:09.297 0.0
2025-11-29-13:50:09.503 0.0
2025-11-29-13:50:09.710 0.0
2025-11-29-13:50:09.924 0.0
2025-11-29-13:50:10.132 16.6
2025-11-29-13:50:10.334 0.0
2025-11-29-13:50:10.543 0.0
2025-11-29-13:50:10.755 16.9
2025-11-29-13:50:10.969 16.6
2025-11-29-13:50:11.199 0.0
2025-11-29-13:50:11.396 17.1
2025-11-29-13:50:11.603 17.1
2025-11-29-13:50:11.805 17.4
2025-11-29-13:50:12.008 17.4
2025-11-29-13:50:12.213 16.9
2025-11-29-13:50:12.416 17.1
2025-11-29-13:50:12.633 16.9
2025-11-29-13:50:12.828 16.9
2025-11-29-13:50:13.054 16.9
2025-11-29-13:50:13.255 16.6
2025-11-29-13:50:13.468 16.5
2025-11-29-13:50:13.675 16.5
2025-11-29-13:50:13.881 16.6
2025-11-29-13:50:14.069 15.7
2025-11-29-13:50:14.266 16.0
2025-11-29-13:50:14.466 16.3
2025-11-29-13:50:14.687 16.5
2025-11-29-13:50:14.907 16.3
2025-11-29-13:50:15.141 16.6
2025-11-29-13:50:15.324 15.1
2025-11-29-13:50:15.538 14.9
2025-11-29-13:50:15.730 15.5
2025-11-29-13:50:15.940 16.0
2025-11-29-13:50:16.154 16.0
2025-11-29-13:50:16.398 0.0
2025-11-29-13:50:16.564 16.0
2025-11-29-13:50:16.774 16.6
2025-11-29-13:50:16.971 16.9
2025-11-29-13:50:17.189 16.9
2025-11-29-13:50:17.374 0.0
2025-11-29-13:50:17.578 0.0
2025-11-29-13:50:17.784 0.0
2025-11-29-13:50:17.993 0.0
2025-11-29-13:50:18.189 0.0
2025-11-29-13:50:18.401 15.9
2025-11-29-13:50:18.605 16.0
2025-11-29-13:50:18.810 15.4
2025-11-29-13:50:19.018 0.0
2025-11-29-13:50:19.223 0.0
2025-11-29-13:50:19.438 0.0
2025-11-29-13:50:19.643 0.0
2025-11-29-13:50:19.856 0.0
2025-11-29-13:50:20.056 0.0
2025-11-29-13:50:20.264 0.0
2025-11-29-13:50:20.475 0.0
2025-11-29-13:50:20.668 0.0
2025-11-29-13:50:20.874 0.0
2025-11-29-13:50:21.093 0.0
2025-11-29-13:50:21.299 0.0
2025-11-29-13:50:21.487 0.0
2025-11-29-13:50:21.699 0.0
2025-11-29-13:50:21.918 0.0
2025-11-29-13:50:22.105 0.0
2025-11-29-13:50:22.333 15.5
2025-11-29-13:50:22.524 0.0
2025-11-29-13:50:22.719 16.5
2025-11-29-13:50:22.918 0.0
2025-11-29-13:50:23.130 0.0
2025-11-29-13:50:23.342 16.3
2025-11-29-13:50:23.544 16.2
2025-11-29-13:50:23.760 16.0
2025-11-29-13:50:23.944 16.5
2025-11-29-13:50:24.143 16.8
2025-11-29-13:50:24.356 17.1
2025-11-29-13:50:24.588 16.8
2025-11-29-13:50:24.773 16.0
2025-11-29-13:50:24.960 0.0
2025-11-29-13:50:25.158 0.0
2025-11-29-13:50:25.369 17.1
2025-11-29-13:50:25.574 16.9
2025-11-29-13:50:25.783 16.9
2025-11-29-13:50:25.999 16.0
2025-11-29-13:50:26.205 0.0
2025-11-29-13:50:26.410 16.5
2025-11-29-13:50:26.610 0.0
2025-11-29-13:50:26.819 0.0
2025-11-29-13:50:27.023 16.3
2025-11-29-13:50:27.245 16.8
2025-11-29-13:50:27.515 16.8
2025-11-29-13:50:27.577 0.0
2025-11-29-13:50:27.785 0.0
2025-11-29-13:50:27.980 0.0
2025-11-29-13:50:28.188 16.0
2025-11-29-13:50:28.389 16.0
2025-11-29-13:50:28.594 16.2
2025-11-29-13:50:28.810 15.9
2025-11-29-13:50:29.004 15.7
2025-11-29-13:50:29.204 17.1
2025-11-29-13:50:29.419 17.1
2025-11-29-13:50:29.614 16.2
2025-11-29-13:50:29.834 16.5
2025-11-29-13:50:30.018 16.3
2025-11-29-13:50:30.236 16.6
2025-11-29-13:50:30.416 0.0
2025-11-29-13:50:30.637 0.0
2025-11-29-13:50:30.822 0.0
2025-11-29-13:50:31.044 17.4
2025-11-29-13:50:31.237 15.7
2025-11-29-13:50:31.439 0.0
2025-11-29-13:50:31.654 15.4
2025-11-29-13:50:31.871 14.9
2025-11-29-13:50:32.080 15.5
2025-11-29-13:50:32.294 0.0
2025-11-29-13:50:32.508 0.0
2025-11-29-13:50:32.700 0.0
2025-11-29-13:50:32.899 0.0
2025-11-29-13:50:33.116 0.0
2025-11-29-13:50:33.309 0.0
2025-11-29-13:50:33.513 0.0
2025-11-29-13:50:33.725 16.6
2025-11-29-13:50:33.947 16.6
2025-11-29-13:50:34.154 0.0
2025-11-29-13:50:34.353 16.3
2025-11-29-13:50:34.577 16.5
2025-11-29-13:50:34.770 16.5
2025-11-29-13:50:34.967 0.0
2025-11-29-13:50:35.168 0.0
2025-11-29-13:50:35.398 0.0
2025-11-29-13:50:35.601 0.0
2025-11-29-13:50:35.808 16.5
2025-11-29-13:50:36.001 16.3
2025-11-29-13:50:36.206 15.9
2025-11-29-13:50:36.419 16.2
2025-11-29-13:50:36.621 0.0
2025-11-29-13:50:36.833 0.0
2025-11-29-13:50:37.111 16.9
2025-11-29-13:50:37.249 0.0
2025-11-29-13:50:37.425 0.0
2025-11-29-13:50:37.628 0.0
2025-11-29-13:50:37.851 16.5
2025-11-29-13:50:38.051 16.0
2025-11-29-13:50:38.257 16.0
2025-11-29-13:50:38.451 16.2
2025-11-29-13:50:38.659 15.9
2025-11-29-13:50:38.867 0.0
2025-11-29-13:50:39.108 15.7
2025-11-29-13:50:39.308 0.0
2025-11-29-13:50:39.510 16.0
2025-11-29-13:50:39.697 0.0
2025-11-29-13:50:39.904 0.0
2025-11-29-13:50:40.121 0.0
2025-11-29-13:50:40.321 0.0
2025-11-29-13:50:40.517 16.3
2025-11-29-13:50:40.722 16.6
2025-11-29-13:50:40.935 16.2
2025-11-29-13:50:41.155 16.6
2025-11-29-13:50:41.344 0.0
2025-11-29-13:50:41.544 0.0
2025-11-29-13:50:41.761 0.0
2025-11-29-13:50:41.989 0.0
2025-11-29-13:50:42.210 16.2
2025-11-29-13:50:42.401 16.2
2025-11-29-13:50:42.630 16.3
2025-11-29-13:50:42.856 16.3
2025-11-29-13:50:43.049 16.2
2025-11-29-13:50:43.247 0.0
2025-11-29-13:50:43.473 16.5
2025-11-29-13:50:43.697 16.6
2025-11-29-13:50:43.903 16.5
2025-11-29-13:50:44.091 16.6
2025-11-29-13:50:44.329 16.6
2025-11-29-13:50:44.507 16.6
2025-11-29-13:50:44.731 16.5
2025-11-29-13:50:44.971 16.3
2025-11-29-13:50:45.142 16.5
2025-11-29-13:50:45.353 0.0
2025-11-29-13:50:45.550 0.0
2025-11-29-13:50:45.769 0.0
2025-11-29-13:50:45.961 0.0
2025-11-29-13:50:46.211 0.0
2025-11-29-13:50:46.366 0.0
2025-11-29-13:50:46.557 0.0
2025-11-29-13:50:46.786 0.0
2025-11-29-13:50:46.996 16.9
2025-11-29-13:50:47.198 0.0
2025-11-29-13:50:47.405 0.0
2025-11-29-13:50:47.621 0.0
2025-11-29-13:50:47.758 16.9
2025-11-29-13:50:47.953 0.0
2025-11-29-13:50:48.163 0.0
2025-11-29-13:50:48.371 0.0
2025-11-29-13:50:48.589 16.5
2025-11-29-13:50:48.801 16.6
2025-11-29-13:50:48.989 16.8
2025-11-29-13:50:49.194 17.5
2025-11-29-13:50:49.427 17.2
2025-11-29-13:50:49.617 17.2
2025-11-29-13:50:49.819 17.2
2025-11-29-13:50:50.029 16.9
2025-11-29-13:50:50.225 16.5
2025-11-29-13:50:50.433 16.8
2025-11-29-13:50:50.637 16.8
2025-11-29-13:50:50.829 0.0
2025-11-29-13:50:51.062 16.8
2025-11-29-13:50:51.251 0.0
2025-11-29-13:50:51.479 0.0
2025-11-29-13:50:51.675 0.0
2025-11-29-13:50:51.885 0.0
2025-11-29-13:50:52.089 0.0
2025-11-29-13:50:52.315 0.0
2025-11-29-13:50:52.523 0.0
2025-11-29-13:50:52.727 0.0
2025-11-29-13:50:52.933 0.0
2025-11-29-13:50:53.152 0.0
2025-11-29-13:50:53.371 0.0
2025-11-29-13:50:53.584 0.0
2025-11-29-13:50:53.759 0.0
2025-11-29-13:50:54.009 16.6
2025-11-29-13:50:54.193 0.0
2025-11-29-13:50:54.408 0.0
2025-11-29-13:50:54.607 0.0
2025-11-29-13:50:54.799 0.0
2025-11-29-13:50:55.029 16.6
2025-11-29-13:50:55.209 16.8
2025-11-29-13:50:55.434 0.0
2025-11-29-13:50:55.634 0.0
2025-11-29-13:50:55.834 0.0
2025-11-29-13:50:56.038 16.2
2025-11-29-13:50:56.263 16.0
2025-11-29-13:50:56.472 15.9
2025-11-29-13:50:56.671 0.0
2025-11-29-13:50:56.896 0.0
2025-11-29-13:50:57.110 16.0
2025-11-29-13:50:57.303 0.0
2025-11-29-13:50:57.514 15.9
2025-11-29-13:50:57.713 16.0
2025-11-29-13:50:57.920 16.0
2025-11-29-13:50:58.125 16.2
2025-11-29-13:50:58.334 15.9
2025-11-29-13:50:58.516 0.0
2025-11-29-13:50:58.732 0.0
2025-11-29-13:50:58.951 0.0
2025-11-29-13:50:59.145 0.0
2025-11-29-13:50:59.347 17.4
2025-11-29-13:50:59.580 16.6
2025-11-29-13:50:59.772 16.3
2025-11-29-13:50:59.999 0.0
2025-11-29-13:51:00.182 0.0
2025-11-29-13:51:00.395 16.3
2025-11-29-13:51:00.623 16.3
2025-11-29-13:51:00.819 16.2
2025-11-29-13:51:01.029 0.0
2025-11-29-13:51:01.279 16.5
2025-11-29-13:51:01.428 16.0
2025-11-29-13:51:01.621 16.8
2025-11-29-13:51:01.816 16.2
2025-11-29-13:51:02.016 16.0
2025-11-29-13:51:02.232 16.3
2025-11-29-13:51:02.446 0.0
2025-11-29-13:51:02.642 0.0
2025-11-29-13:51:02.838 0.0
2025-11-29-13:51:03.044 16.0
2025-11-29-13:51:03.252 16.5
2025-11-29-13:51:03.459 16.3
2025-11-29-13:51:03.667 16.5
2025-11-29-13:51:03.870 16.2
2025-11-29-13:51:04.072 0.0
2025-11-29-13:51:04.280 16.5
2025-11-29-13:51:04.503 16.6
2025-11-29-13:51:04.724 16.8
2025-11-29-13:51:04.945 16.3
2025-11-29-13:51:05.132 16.5
2025-11-29-13:51:05.322 0.0
2025-11-29-13:51:05.576 0.0
2025-11-29-13:51:05.730 0.0
2025-11-29-13:51:05.913 0.0
2025-11-29-13:51:06.140 0.0
2025-11-29-13:51:06.346 16.8
2025-11-29-13:51:06.534 0.0
2025-11-29-13:51:06.739 0.0
2025-11-29-13:51:06.938 0.0
2025-11-29-13:51:07.145 0.0
2025-11-29-13:51:07.348 0.0
2025-11-29-13:51:07.568 0.0
2025-11-29-13:51:07.788 0.0
2025-11-29-13:51:07.971 0.0
2025-11-29-13:51:08.175 0.0
2025-11-29-13:51:08.382 0.0
2025-11-29-13:51:08.589 0.0
2025-11-29-13:51:08.793 0.0
2025-11-29-13:51:08.988 0.0
2025-11-29-13:51:09.210 0.0
2025-11-29-13:51:09.401 0.0
2025-11-29-13:51:09.605 0.0
2025-11-29-13:51:09.808 0.0
2025-11-29-13:51:10.034 0.0
2025-11-29-13:51:10.236 0.0
2025-11-29-13:51:10.426 0.0
2025-11-29-13:51:10.627 0.0
2025-11-29-13:51:10.843 0.0
2025-11-29-13:51:11.053 0.0
2025-11-29-13:51:11.260 0.0
2025-11-29-13:51:11.471 16.0
2025-11-29-13:51:11.663 16.0
2025-11-29-13:51:11.876 16.6
2025-11-29-13:51:12.077 16.3
2025-11-29-13:51:12.283 16.2
2025-11-29-13:51:12.479 0.0
2025-11-29-13:51:12.696 16.2
2025-11-29-13:51:12.891 0.0
2025-11-29-13:51:13.094 0.0
2025-11-29-13:51:13.289 16.8
2025-11-29-13:51:13.503 16.3
2025-11-29-13:51:13.758 16.2
2025-11-29-13:51:13.925 16.5
2025-11-29-13:51:14.121 16.3
2025-11-29-13:51:14.335 16.3
2025-11-29-13:51:14.531 16.8
2025-11-29-13:51:14.745 16.3
2025-11-29-13:51:14.957 16.6
2025-11-29-13:51:15.139 16.6
2025-11-29-13:51:15.351 0.0
2025-11-29-13:51:15.569 0.0
2025-11-29-13:51:15.759 0.0
2025-11-29-13:51:15.968 0.0
2025-11-29-13:51:16.159 0.0
2025-11-29-13:51:16.367 0.0
2025-11-29-13:51:16.571 0.0
2025-11-29-13:51:16.768 0.0
2025-11-29-13:51:16.978 0.0
2025-11-29-13:51:17.185 0.0
2025-11-29-13:51:17.385 16.8
2025-11-29-13:51:17.601 16.6
2025-11-29-13:51:17.787 0.0
2025-11-29-13:51:17.999 0.0
2025-11-29-13:51:18.191 0.0
2025-11-29-13:51:18.404 0.0
2025-11-29-13:51:18.637 0.0
2025-11-29-13:51:18.829 16.2
2025-11-29-13:51:19.016 16.0
2025-11-29-13:51:19.238 16.6
2025-11-29-13:51:19.428 0.0
2025-11-29-13:51:19.616 0.0
2025-11-29-13:51:19.835 0.0
2025-11-29-13:51:20.042 0.0
2025-11-29-13:51:20.230 0.0
2025-11-29-13:51:20.425 0.0
2025-11-29-13:51:20.626 0.0
2025-11-29-13:51:20.830 0.0
2025-11-29-13:51:21.055 0.0
2025-11-29-13:51:21.278 16.5
2025-11-29-13:51:21.495 16.6
2025-11-29-13:51:21.686 16.9
2025-11-29-13:51:21.871 16.9
2025-11-29-13:51:22.077 16.0
2025-11-29-13:51:22.289 17.2
2025-11-29-13:51:22.493 17.1
2025-11-29-13:51:22.693 0.0
2025-11-29-13:51:22.975 0.0
2025-11-29-13:51:23.091 0.0
2025-11-29-13:51:23.304 0.0
2025-11-29-13:51:23.484 0.0
2025-11-29-13:51:23.682 0.0
2025-11-29-13:51:23.905 0.0
2025-11-29-13:51:24.106 0.0
2025-11-29-13:51:24.305 0.0
2025-11-29-13:51:24.557 0.0
2025-11-29-13:51:24.722 0.0
2025-11-29-13:51:24.908 0.0
2025-11-29-13:51:25.120 0.0
2025-11-29-13:51:25.325 0.0
2025-11-29-13:51:25.523 0.0
2025-11-29-13:51:25.730 16.0
2025-11-29-13:51:25.949 16.3
2025-11-29-13:51:26.144 0.0
2025-11-29-13:51:26.341 0.0
2025-11-29-13:51:26.573 16.6
2025-11-29-13:51:26.760 16.3
2025-11-29-13:51:26.960 0.0
2025-11-29-13:51:27.165 0.0
2025-11-29-13:51:27.368 0.0
2025-11-29-13:51:27.575 0.0
2025-11-29-13:51:27.772 0.0
2025-11-29-13:51:28.119 0.0
2025-11-29-13:51:28.154 0.0
2025-11-29-13:51:28.369 16.3
2025-11-29-13:51:28.580 16.2
2025-11-29-13:51:28.777 0.0
2025-11-29-13:51:28.970 0.0
2025-11-29-13:51:29.169 0.0
2025-11-29-13:51:29.380 0.0
2025-11-29-13:51:29.585 0.0
2025-11-29-13:51:29.771 0.0
2025-11-29-13:51:29.982 0.0
2025-11-29-13:51:30.194 16.8
2025-11-29-13:51:30.377 0.0
2025-11-29-13:51:30.582 0.0
2025-11-29-13:51:30.788 0.0
2025-11-29-13:51:30.985 0.0
2025-11-29-13:51:31.195 0.0
2025-11-29-13:52:52.059 16.2
2025-11-29-13:52:52.059 16.2
2025-11-29-13:52:52.093 16.6
2025-11-29-13:52:52.293 0.0
2025-11-29-13:52:52.495 16.6
2025-11-29-13:52:52.688 0.0
2025-11-29-13:52:52.903 16.3
2025-11-29-13:52:53.091 0.0
2025-11-29-13:52:53.302 16.6
2025-11-29-13:52:53.502 0.0
2025-11-29-13:52:53.694 0.0
2025-11-29-13:52:53.905 0.0
2025-11-29-13:52:54.103 0.0
2025-11-29-13:52:54.324 16.3
2025-11-29-13:52:54.511 0.0
2025-11-29-13:52:54.705 0.0
2025-11-29-13:52:54.921 16.0
2025-11-29-13:52:55.117 0.0
2025-11-29-13:52:55.313 0.0
2025-11-29-13:52:55.519 0.0
2025-11-29-13:52:55.716 0.0
2025-11-29-13:52:55.919 0.0
2025-11-29-13:52:56.129 0.0
2025-11-29-13:52:56.326 0.0
2025-11-29-13:52:56.544 0.0
2025-11-29-13:52:56.739 0.0
2025-11-29-13:52:56.939 0.0
2025-11-29-13:52:57.149 0.0
2025-11-29-13:52:57.352 0.0
2025-11-29-13:52:57.557 0.0
2025-11-29-13:52:57.763 0.0
2025-11-29-13:52:57.964 0.0
2025-11-29-13:52:58.173 0.0
2025-11-29-13:52:58.371 0.0
2025-11-29-13:52:58.571 0.0
2025-11-29-13:52:58.782 0.0
2025-11-29-13:52:58.980 0.0
2025-11-29-13:52:59.209 0.0
2025-11-29-13:52:59.425 0.0
2025-11-29-13:52:59.606 0.0
2025-11-29-13:52:59.828 16.2
2025-11-29-13:53:00.022 0.0
2025-11-29-13:53:00.225 0.0
2025-11-29-13:53:00.424 0.0
2025-11-29-13:53:00.628 0.0
2025-11-29-13:53:00.836 0.0
2025-11-29-13:53:01.034 0.0
2025-11-29-13:53:01.246 0.0
2025-11-29-13:53:01.448 0.0
2025-11-29-13:53:01.660 0.0
2025-11-29-13:53:01.923 0.0
2025-11-29-13:53:02.009 0.0
2025-11-29-13:53:02.196 0.0
2025-11-29-13:53:02.392 0.0
2025-11-29-13:53:02.590 0.0
2025-11-29-13:53:02.810 0.0
2025-11-29-13:53:03.002 0.0
2025-11-29-13:53:03.197 0.0
2025-11-29-13:53:03.415 0.0
2025-11-29-13:53:03.604 0.0
2025-11-29-13:53:03.803 0.0
2025-11-29-13:53:04.018 0.0
2025-11-29-13:53:04.209 0.0
2025-11-29-13:53:04.418 0.0
2025-11-29-13:53:04.619 0.0
2025-11-29-13:53:04.813 0.0
2025-11-29-13:53:05.025 0.0
2025-11-29-13:53:05.223 0.0
2025-11-29-13:53:05.422 0.0
2025-11-29-13:53:05.632 0.0
2025-11-29-13:53:05.828 0.0
2025-11-29-13:53:06.038 0.0
2025-11-29-13:53:06.238 0.0
2025-11-29-13:53:06.446 0.0
2025-11-29-13:53:06.655 0.0
2025-11-29-13:53:06.858 0.0
2025-11-29-13:53:07.063 0.0
2025-11-29-13:53:07.263 0.0
2025-11-29-13:53:07.466 0.0
2025-11-29-13:53:07.671 0.0
2025-11-29-13:53:07.872 0.0
2025-11-29-13:53:08.074 0.0
2025-11-29-13:53:08.277 0.0
2025-11-29-13:53:08.481 0.0
2025-11-29-13:53:08.711 0.0
2025-11-29-13:53:08.908 0.0
2025-11-29-13:53:09.121 0.0
2025-11-29-13:53:09.316 16.9
2025-11-29-13:53:09.528 0.0
2025-11-29-13:53:09.726 0.0
2025-11-29-13:53:09.936 0.0
2025-11-29-13:53:10.137 0.0
2025-11-29-13:53:10.366 0.0
2025-11-29-13:53:10.552 0.0
2025-11-29-13:53:10.758 0.0
2025-11-29-13:53:10.962 0.0
2025-11-29-13:53:11.163 0.0
2025-11-29-13:53:11.365 0.0
2025-11-29-13:53:11.572 0.0
2025-11-29-13:53:11.775 16.9
2025-11-29-13:53:11.981 0.0
2025-11-29-13:53:12.173 0.0
2025-11-29-13:53:12.376 0.0
2025-11-29-13:53:12.581 0.0
2025-11-29-13:53:12.777 0.0
2025-11-29-13:53:12.983 0.0
2025-11-29-13:53:13.194 0.0
2025-11-29-13:53:13.387 0.0
2025-11-29-13:53:13.586 0.0
2025-11-29-13:53:13.833 0.0
2025-11-29-13:53:13.937 0.0
2025-11-29-13:53:14.125 0.0
2025-11-29-13:53:14.335 0.0
2025-11-29-13:53:14.536 0.0
2025-11-29-13:53:14.731 0.0
2025-11-29-13:53:14.941 0.0
2025-11-29-13:53:15.135 0.0
2025-11-29-13:53:15.341 0.0
2025-11-29-13:53:15.552 0.0
2025-11-29-13:53:15.746 0.0
2025-11-29-13:53:15.950 0.0
2025-11-29-13:53:16.151 0.0
2025-11-29-13:53:16.354 0.0
2025-11-29-13:53:16.545 0.0
2025-11-29-13:53:16.760 0.0
2025-11-29-13:53:16.970 0.0
2025-11-29-13:53:17.155 0.0
2025-11-29-13:53:17.363 0.0
2025-11-29-13:53:17.578 0.0
2025-11-29-13:53:17.770 0.0
2025-11-29-13:53:17.978 0.0
2025-11-29-13:53:18.184 0.0
2025-11-29-13:53:18.384 0.0
2025-11-29-13:53:18.588 0.0
2025-11-29-13:53:18.787 0.0
2025-11-29-13:53:18.994 0.0
2025-11-29-13:53:19.196 0.0
2025-11-29-13:53:19.405 0.0
2025-11-29-13:53:19.620 0.0
2025-11-29-13:53:19.828 0.0
2025-11-29-13:53:20.044 0.0
2025-11-29-13:53:20.252 0.0
2025-11-29-13:53:20.451 0.0
2025-11-29-13:53:20.661 0.0
2025-11-29-13:53:20.856 0.0
2025-11-29-13:53:21.057 0.0
2025-11-29-13:53:21.260 0.0
2025-11-29-13:53:21.462 0.0
2025-11-29-13:53:21.667 0.0
2025-11-29-13:53:21.921 0.0
2025-11-29-13:53:22.057 0.0
2025-11-29-13:53:22.275 0.0
2025-11-29-13:53:22.476 0.0
2025-11-29-13:53:22.676 0.0
2025-11-29-13:53:22.877 0.0
2025-11-29-13:53:23.078 0.0
2025-11-29-13:53:23.279 0.0
2025-11-29-13:53:23.482 0.0
2025-11-29-13:53:23.687 0.0
2025-11-29-13:53:23.887 0.0
2025-11-29-13:53:24.076 0.0
2025-11-29-13:53:24.221 0.0
2025-11-29-13:53:24.439 0.0
2025-11-29-13:53:24.625 0.0
2025-11-29-13:53:24.822 0.0
2025-11-29-13:53:25.035 0.0
2025-11-29-13:53:25.225 0.0
2025-11-29-13:53:25.435 0.0
2025-11-29-13:53:25.634 0.0
2025-11-29-13:53:25.839 0.0
2025-11-29-13:53:26.049 0.0
2025-11-29-13:53:26.253 0.0
2025-11-29-13:53:26.436 0.0
2025-11-29-13:53:26.644 0.0
2025-11-29-13:53:26.846 0.0
2025-11-29-13:53:27.051 0.0
2025-11-29-13:53:27.258 0.0
2025-11-29-13:53:27.459 0.0
2025-11-29-13:53:27.661 0.0
2025-11-29-13:53:27.868 0.0
2025-11-29-13:53:28.071 0.0
2025-11-29-13:53:28.276 0.0
2025-11-29-13:53:28.474 0.0
2025-11-29-13:53:28.680 0.0
2025-11-29-13:53:28.888 0.0
2025-11-29-13:53:29.086 0.0
2025-11-29-13:53:29.296 0.0
2025-11-29-13:53:29.494 0.0
2025-11-29-13:53:29.716 0.0
2025-11-29-13:53:29.921 0.0
2025-11-29-13:53:30.124 0.0
2025-11-29-13:53:30.326 0.0
2025-11-29-13:53:30.592 0.0
2025-11-29-13:53:30.747 0.0
2025-11-29-13:53:30.935 0.0
2025-11-29-13:53:31.143 0.0
2025-11-29-13:53:31.344 0.0
2025-11-29-13:53:31.553 16.3
2025-11-29-13:53:31.793 16.6
2025-11-29-13:53:31.976 16.3
2025-11-29-13:53:32.155 16.2
2025-11-29-13:53:32.365 0.0
2025-11-29-13:53:32.554 0.0
2025-11-29-13:53:32.766 16.3
2025-11-29-13:53:32.967 16.3
2025-11-29-13:53:33.160 0.0
2025-11-29-13:53:33.383 0.0
2025-11-29-13:53:33.563 0.0
2025-11-29-13:53:33.788 0.0
2025-11-29-13:53:33.988 0.0
2025-11-29-13:53:34.191 0.0
2025-11-29-13:53:34.398 0.0
2025-11-29-13:53:34.593 0.0
2025-11-29-13:53:34.804 0.0
2025-11-29-13:53:35.025 0.0
2025-11-29-13:53:35.199 0.0
2025-11-29-13:53:35.399 0.0
2025-11-29-13:53:35.609 0.0
2025-11-29-13:53:35.802 0.0
2025-11-29-13:53:36.006 0.0
2025-11-29-13:53:36.210 0.0
2025-11-29-13:53:36.409 0.0
2025-11-29-13:53:36.622 0.0
2025-11-29-13:53:36.814 0.0
2025-11-29-13:53:37.018 0.0
2025-11-29-13:53:37.229 0.0
2025-11-29-13:53:37.435 0.0
2025-11-29-13:53:37.663 0.0
2025-11-29-13:53:37.836 0.0
task_id: 2 去
task_id: 2 去
task_name:
status: 未启动
selected_channels:
- 通道1
created_time: '2025-11-29 13:30:07'
mission_result_folder_path: D:\restructure\liquid_level_line_detection_system\database\mission_result\2
去_去
task_id: 任务
task_id: 任务
task_name: 若是
status: 未启动
selected_channels:
- 通道1
created_time: '2025-11-29 13:39:21'
mission_result_folder_path: D:\restructure\liquid_level_line_detection_system\database\mission_result\任务_若是
2025-11-29-13:39:40.946 0.0
2025-11-29-13:39:40.946 0.0
2025-11-29-13:39:40.993 0.0
2025-11-29-13:39:41.186 0.0
2025-11-29-13:39:41.387 0.0
2025-11-29-13:39:41.588 0.0
2025-11-29-13:39:41.785 0.0
2025-11-29-13:39:41.977 0.0
2025-11-29-13:39:42.180 0.0
2025-11-29-13:39:42.392 0.0
2025-11-29-13:39:42.588 0.0
2025-11-29-13:39:42.893 16.3
task_id: 企鹅
task_id: 企鹅
task_name: 1额
status: 未启动
selected_channels:
- 通道1
created_time: '2025-11-29 13:34:35'
mission_result_folder_path: D:\restructure\liquid_level_line_detection_system\database\mission_result\企鹅_1额
task_id: 去v
task_id: 去v
task_name: 去v
status: 未启动
selected_channels:
- 通道1
created_time: '2025-11-29 13:34:18'
mission_result_folder_path: D:\restructure\liquid_level_line_detection_system\database\mission_result\去v_去v
# 通道列绿色状态更新功能
## 问题描述
当通道的 `channel_detect_status``true` 时,对应任务行的对应通道列应该变为绿色,但之前没有实现这个功能。
## 解决方案
### 1. 在 `MissionTextStatus` 类中添加新方法
#### `setChannelColumnGreenOnDetection(task_folder_name, channel_num)`
**功能**:启动检测线程时对应任务的对应通道列置为绿色
**参数**
- `task_folder_name`: 任务文件夹名称(如 "1_1")
- `channel_num`: 通道编号(1-4)
**位置**:第1819-1843行
```python
def setChannelColumnGreenOnDetection(self, task_folder_name, channel_num):
"""
启动检测线程时对应任务的对应通道列置为绿色
Args:
task_folder_name: 任务文件夹名称(如 "1_1")
channel_num: 通道编号(1-4)
"""
try:
# 查找对应的任务行
row_index = self._findTaskRow(task_folder_name)
if row_index >= 0:
# 通道列从第3列开始(0:任务编号, 1:任务名称, 2:状态, 3-6:通道1-4)
col_index = 3 + (channel_num - 1)
channel_item = self.table.item(row_index, col_index)
if channel_item:
channel_item.setForeground(self.COLOR_GREEN)
print(f"✅ [文本状态] 任务 {task_folder_name} 通道{channel_num}列已置为绿色(检测中)")
else:
print(f"⚠️ [文本状态] 未找到任务 {task_folder_name}")
except Exception as e:
print(f"❌ [文本状态] 设置通道列检测状态颜色失败: {e}")
import traceback
traceback.print_exc()
```
#### `resetChannelColumnOnStopDetection(task_folder_name, channel_num)`
**功能**:停止检测线程时恢复通道列颜色
**参数**
- `task_folder_name`: 任务文件夹名称(如 "1_1")
- `channel_num`: 通道编号(1-4)
**位置**:第1845-1868行
```python
def resetChannelColumnOnStopDetection(self, task_folder_name, channel_num):
"""
停止检测线程时恢复通道列颜色
Args:
task_folder_name: 任务文件夹名称(如 "1_1")
channel_num: 通道编号(1-4)
"""
try:
row_index = self._findTaskRow(task_folder_name)
if row_index >= 0:
col_index = 3 + (channel_num - 1)
channel_item = self.table.item(row_index, col_index)
if channel_item:
# 如果是选中行,恢复为黑色;否则恢复为灰色
if row_index == self.selected_row:
channel_item.setForeground(self.COLOR_BLACK)
else:
channel_item.setForeground(self.COLOR_GRAY)
print(f"✅ [文本状态] 任务 {task_folder_name} 通道{channel_num}列已恢复")
except Exception as e:
print(f"❌ [文本状态] 恢复通道列颜色失败: {e}")
import traceback
traceback.print_exc()
```
### 2. 修改 `_updateChannelColumnColor` 方法
**位置**:第1526-1650行
**主要改动**
1. **遍历所有任务行,更新通道列颜色**(第1557-1599行)
- 获取每个任务使用的通道列表
- 检查每个通道的检测状态
- 如果通道正在检测该任务,设置通道列为绿色
- 如果通道未检测或未分配该任务,恢复通道列颜色
2. **简化状态列更新逻辑**(第1601-1626行)
- 删除重复的通道列绿色设置
- 只检查所有通道是否都在检测,用于更新状态列
## 工作流程
### 启动检测时
1. `thread_manager.py``start_detection_thread` 调用 `_updateChannelColumnColor`
2. `_updateChannelColumnColor` 遍历所有任务行
3. 对于每个任务的每个通道:
- 检查通道是否正在执行该任务
- 检查通道的 `channel_detect_status`(通过 `channelXdetect` 变量)
- 如果检测中,调用 `setChannelColumnGreenOnDetection` 设置通道列为绿色
### 停止检测时
1. `thread_manager.py``stop_detection_thread` 调用 `_updateChannelColumnColor`
2. `_updateChannelColumnColor` 遍历所有任务行
3. 对于每个任务的每个通道:
- 检查通道是否未检测或未分配该任务
- 调用 `resetChannelColumnOnStopDetection` 恢复通道列颜色
## 颜色规则
| 状态 | 颜色 | RGB | 适用范围 |
|------|------|-----|----------|
| 默认/未启动 | 灰色 | (128, 128, 128) | 通道列 |
| 已选中 | 黑色 | (0, 0, 0) | 通道列(选中行) |
| 检测中 | 绿色 | (0, 128, 0) | 通道列(检测中) |
## 表格列索引
| 列索引 | 列名 | 说明 |
|--------|------|------|
| 0 | 任务编号 | - |
| 1 | 任务名称 | - |
| 2 | 状态 | "未启动"/"已启动"/"检测中" |
| 3 | 通道1 | 通道列,检测时变绿 |
| 4 | 通道2 | 通道列,检测时变绿 |
| 5 | 通道3 | 通道列,检测时变绿 |
| 6 | 通道4 | 通道列,检测时变绿 |
| 7 | 曲线 | 按钮列 |
## 测试建议
1. **启动单个通道检测**
- 选择一个任务并启动某个通道的检测
- 检查该任务行对应通道列是否变为绿色
- 检查其他通道列是否保持原有颜色
2. **启动多个通道检测**
- 选择一个任务并启动多个通道的检测
- 检查所有检测中的通道列是否都变为绿色
3. **停止检测**
- 停止某个通道的检测
- 检查该通道列是否恢复为灰色(或黑色,如果是选中行)
4. **切换选中行**
- 选中一个有检测中通道的任务行
- 检查非检测中的通道列是否变为黑色
- 检查检测中的通道列是否保持绿色
5. **多任务并行**
- 启动多个任务的不同通道检测
- 检查每个任务的通道列颜色是否正确
## 注意事项
1. **通道列优先级**:检测中的通道列始终为绿色,不受选中行影响
2. **自动恢复**:停止检测时自动恢复通道列颜色
3. **选中状态保持**:恢复颜色时会考虑当前选中行状态
4. **异常处理**:所有方法都包含完整的异常处理
## 完成时间
2025-11-29 13:35
......@@ -198,7 +198,7 @@ class ChannelPanelHandler:
pass
# 如果检测线程已在运行,重新启动以使用新引擎
if channel_id in self._detection_flags and self._detection_flags[channel_id]:
if channel_id in self._channel_detect_statuss and self._channel_detect_statuss[channel_id]:
pass
return True
......@@ -1429,7 +1429,7 @@ class ChannelPanelHandler:
else:
print(f" {channel_id} 检测引擎未就绪,检测线程将只读取帧不执行检测")
while self._detection_flags.get(channel_id, False):
while self._channel_detect_statuss.get(channel_id, False):
try:
loop_start_time = time.time()
......
......@@ -799,11 +799,6 @@ class CurvePanelHandler:
# 按文件夹名称排序
mission_folders.sort(key=lambda x: x['name'])
print(f"📂 [任务扫描] 扫描目录: {mission_result_dir}")
print(f"📂 [任务扫描] 找到 {len(mission_folders)} 个任务文件夹")
for folder in mission_folders:
print(f" - {folder['name']}")
# 通知UI更新下拉框
if self.curve_panel:
self.curve_panel.updateMissionFolderList(mission_folders)
......
......@@ -118,12 +118,29 @@ class MissionPanelHandler:
"""
任务行被点击(规则2:单击选中行时该行文本置为黑色)
只有当任务状态为"已启动"时才置黑
Args:
row: 行索引
column: 列索引
"""
if self.mission_text_status:
if not self.mission_text_status or not self.mission_panel:
return
try:
# 获取任务状态列(第2列)
status_item = self.mission_panel.table.item(row, 2)
if not status_item:
return
task_status = status_item.text()
# 只有任务状态为"已启动"时才置黑
if task_status == "已启动":
self.mission_text_status.setRowBlackOnSelect(row)
except Exception as e:
import traceback
traceback.print_exc()
def _updateDebugButtonVisibility(self):
"""
......@@ -186,11 +203,6 @@ class MissionPanelHandler:
# 第四步:添加到表格
if self.mission_panel:
self.mission_panel.addTaskRow(task_info)
# 🔥 规则4:新建任务时该行文本初始为灰色
if self.mission_text_status:
row_index = self.mission_panel.table.rowCount() - 1
self.mission_text_status.initializeNewTaskRowGray(row_index)
else:
QtWidgets.QMessageBox.warning(
self.mission_panel, "警告", "任务配置保存失败,但任务已添加到列表"
......@@ -307,6 +319,13 @@ class MissionPanelHandler:
# 🔥 通知Widget取消任务分配,不高亮行
if self.mission_panel:
self.mission_panel.cancelTaskAssignment()
# 🔥 恢复之前选中行的黑色状态(如果有的话)
if self.mission_text_status and self.mission_text_status.selected_row >= 0:
# 保存当前选中行
previous_selected_row = self.mission_text_status.selected_row
# 重新设置为黑色
self.mission_text_status.setRowBlackOnSelect(previous_selected_row)
return
# 🔥 遍历选中的通道,只更新这些通道的任务标签(不影响其他通道)
......@@ -1439,40 +1458,11 @@ class MissionPanelHandler:
"""
刷新任务面板中所有任务的状态显示
根据当前通道使用情况,动态更新每个任务的状态:
- 被通道使用的任务:已启动
- 未被通道使用的任务:未启动
委托给 MissionTextStatus 类处理
"""
try:
if not hasattr(self, 'mission_panel'):
return
table = self.mission_panel.table
# 遍历任务面板中的所有行
for row in range(table.rowCount()):
# 🔥 适配纯QTableWidgetItem方案:直接从QTableWidgetItem获取数据
task_id_item = table.item(row, 0) # 任务编号列
task_name_item = table.item(row, 1) # 任务名称列
status_item = table.item(row, 2) # 状态列
if task_id_item and task_name_item and status_item:
task_id = task_id_item.text()
task_name = task_name_item.text()
if task_id and task_name:
task_folder_name = f"{task_id}_{task_name}"
# 检查任务是否被使用
is_in_use = self._isTaskInUse(task_folder_name)
new_status = "已启动" if is_in_use else "未启动"
# 更新状态显示
current_status = status_item.text()
if current_status != new_status:
status_item.setText(new_status)
print(f"🔄 [状态刷新] 任务 {task_folder_name}: {current_status} → {new_status}")
if self.mission_text_status:
self.mission_text_status.refreshAllTaskStatus(self)
except Exception as e:
print(f"❌ [状态刷新] 刷新任务状态失败: {e}")
import traceback
......@@ -1525,98 +1515,17 @@ class MissionPanelHandler:
def _updateChannelColumnColor(self):
"""
🔥 根据通道检测状态更新任务面板中状态列
🔥 根据通道检测状态更新任务面板中通道列和状态列
只更新当前通道正在执行的任务行:
- 获取每个通道当前执行的任务(从channelXmission标签)
- 只检查这些任务行,而不是所有使用该通道的任务行
- 当任务的所有通道都在检测时,状态列显示"检测中"(绿色)
委托给 MissionTextStatus 类处理所有文本颜色更新
"""
print(f"🎯 [_updateChannelColumnColor] 方法被调用")
try:
if not hasattr(self, 'mission_panel'):
return
table = self.mission_panel.table
# 🔥 第一步:收集所有通道当前正在执行的任务
active_tasks = set() # 存储正在执行的任务名称
channel_task_map = {} # 通道 -> 任务映射
for channel_num in range(1, 5):
channel_id = f'channel{channel_num}'
mission_var_name = f'{channel_id}mission'
if hasattr(self, mission_var_name):
mission_label = getattr(self, mission_var_name)
current_task = mission_label.text()
if current_task and current_task != "未分配任务":
active_tasks.add(current_task)
channel_task_map[channel_id] = current_task
# 🔥 第二步:遍历所有任务行,只更新正在执行的任务
for row in range(table.rowCount()):
task_id_item = table.item(row, 0)
task_name_item = table.item(row, 1)
status_item = table.item(row, 2)
channel_item = table.item(row, 3)
if not (task_id_item and task_name_item and status_item):
continue
# 获取任务文件夹名称
task_folder_name = f"{task_id_item.text()}_{task_name_item.text()}"
# 🔥 只处理正在执行的任务
if task_folder_name in active_tasks:
# 解析该任务使用的通道
channel_text = channel_item.text() if channel_item else ""
channels = [ch.strip() for ch in channel_text.split(',')] if channel_text else []
# 检查该任务使用的所有通道是否都在检测
all_channels_detecting = True
has_detecting_channels = False
for channel_key in channels:
if channel_key.startswith('通道'):
channel_num = channel_key.replace('通道', '').strip()
channel_id = f'channel{channel_num}'
# 检查该通道是否正在执行这个任务
if channel_task_map.get(channel_id) == task_folder_name:
# 检查该通道的检测状态
detect_var_name = f'{channel_id}detect'
if hasattr(self, detect_var_name):
is_detecting = getattr(self, detect_var_name)
if is_detecting:
has_detecting_channels = True
else:
all_channels_detecting = False
else:
all_channels_detecting = False
# 🔥 规则3:使用文本状态管理器设置状态列为绿色
if has_detecting_channels and all_channels_detecting:
if self.mission_text_status:
self.mission_text_status.setStatusColumnGreenOnDetection(task_folder_name)
# 🔥 删除置黑逻辑:不再将"已启动"状态置为黑色
# else:
# # 有通道未检测:显示"已启动"
# status_item.setText("已启动")
# status_item.setForeground(QtGui.QColor(0, 0, 0)) # 黑色
# 🔥 删除非执行任务的置黑逻辑
# else:
# # 不是正在执行的任务,检查是否被配置
# is_task_in_use = self._isTaskInUse(task_folder_name)
# status_text = "已启动" if is_task_in_use else "未启动"
# status_item.setText(status_text)
#
# # 设置颜色:已启动为黑色,未启动为灰色
# if status_text == "已启动":
# status_item.setForeground(QtGui.QColor(0, 0, 0)) # 黑色
# else:
# status_item.setForeground(QtGui.QColor(128, 128, 128)) # 灰色
print(f" ✅ mission_text_status 存在,开始更新")
self.mission_text_status.updateAllChannelColumnColors(self)
else:
print(f" ❌ mission_text_status 不存在!")
except Exception as e:
print(f"❌ [状态列更新] 更新状态列失败: {e}")
import traceback
......@@ -1741,7 +1650,6 @@ class MissionTextStatus:
try:
for row in range(self.table.rowCount()):
self._setRowColor(row, self.COLOR_GRAY, exclude_columns=[])
print(f"✅ [文本状态] 已初始化 {self.table.rowCount()} 行为灰色")
except Exception as e:
print(f"❌ [文本状态] 初始化失败: {e}")
import traceback
......@@ -1751,21 +1659,17 @@ class MissionTextStatus:
"""
2. 单击选中行时该行文本置为黑色
所有"已启动"的任务在被点击后都保持黑色,不会恢复为灰色
Args:
row_index: 选中的行索引
"""
try:
# 如果之前有选中的行,先恢复为灰色(除非是检测中的状态列)
if self.selected_row >= 0 and self.selected_row != row_index:
self._setRowColor(self.selected_row, self.COLOR_GRAY, exclude_columns=[2]) # 排除状态列
# 🔥 不再恢复之前选中行的颜色,所有"已启动"的任务点击后都保持黑色
# 将新选中的行置为黑色
self._setRowColor(row_index, self.COLOR_BLACK, exclude_columns=[2]) # 排除状态列
self.selected_row = row_index
print(f"✅ [文本状态] 行 {row_index} 已置为黑色(选中)")
except Exception as e:
print(f"❌ [文本状态] 设置选中行颜色失败: {e}")
import traceback
traceback.print_exc()
......@@ -1784,7 +1688,6 @@ class MissionTextStatus:
if status_item:
status_item.setText("检测中")
status_item.setForeground(self.COLOR_GREEN)
print(f"✅ [文本状态] 任务 {task_folder_name} 状态列已置为绿色(检测中)")
else:
print(f"⚠️ [文本状态] 未找到任务 {task_folder_name}")
except Exception as e:
......@@ -1810,9 +1713,162 @@ class MissionTextStatus:
status_item.setForeground(self.COLOR_BLACK)
else:
status_item.setForeground(self.COLOR_GRAY)
print(f"✅ [文本状态] 任务 {task_folder_name} 状态列已恢复")
except Exception as e:
print(f"❌ [文本状态] 恢复状态颜色失败: {e}")
import traceback
traceback.print_exc()
def setChannelColumnGreenOnDetection(self, task_folder_name, channel_num):
"""
启动检测线程时对应任务的对应通道列置为绿色
Args:
task_folder_name: 任务文件夹名称(如 "1_1")
channel_num: 通道编号(1-4)
"""
try:
# 查找对应的任务行
row_index = self._findTaskRow(task_folder_name)
if row_index >= 0:
# 通道列从第3列开始(0:任务编号, 1:任务名称, 2:状态, 3-6:通道1-4)
col_index = 3 + (channel_num - 1)
channel_item = self.table.item(row_index, col_index)
if channel_item:
channel_item.setForeground(self.COLOR_GREEN)
print(f"✅ [文本状态] 任务 {task_folder_name} 通道{channel_num}列已置为绿色(检测中)")
else:
print(f"⚠️ [文本状态] 未找到任务 {task_folder_name}")
except Exception as e:
print(f"❌ [文本状态] 设置通道列检测状态颜色失败: {e}")
import traceback
traceback.print_exc()
def resetChannelColumnOnStopDetection(self, task_folder_name, channel_num):
"""
停止检测线程时恢复通道列颜色
Args:
task_folder_name: 任务文件夹名称(如 "1_1")
channel_num: 通道编号(1-4)
"""
try:
row_index = self._findTaskRow(task_folder_name)
if row_index >= 0:
col_index = 3 + (channel_num - 1)
channel_item = self.table.item(row_index, col_index)
if channel_item:
# 如果是选中行,恢复为黑色;否则恢复为灰色
if row_index == self.selected_row:
channel_item.setForeground(self.COLOR_BLACK)
else:
channel_item.setForeground(self.COLOR_GRAY)
print(f"✅ [文本状态] 任务 {task_folder_name} 通道{channel_num}列已恢复")
except Exception as e:
print(f"❌ [文本状态] 恢复通道列颜色失败: {e}")
import traceback
traceback.print_exc()
def updateAllChannelColumnColors(self, main_window):
"""
更新所有任务的通道列和状态列颜色
根据通道检测状态更新任务面板中的通道列和状态列:
- 获取每个通道当前执行的任务(从channelXmission标签)
- 更新通道列颜色:检测中为绿色,否则恢复
- 更新状态列颜色:所有通道都在检测时为绿色
Args:
main_window: 主窗口实例,用于访问通道任务标签和检测状态
"""
try:
print(f"🔍 [文本状态] 开始更新通道列颜色")
# 🔥 第一步:收集所有通道当前正在执行的任务
active_tasks = set() # 存储正在执行的任务名称
channel_task_map = {} # 通道 -> 任务映射
for channel_num in range(1, 5):
channel_id = f'channel{channel_num}'
mission_var_name = f'{channel_id}mission'
if hasattr(main_window, mission_var_name):
mission_label = getattr(main_window, mission_var_name)
current_task = mission_label.text()
if current_task and current_task != "未分配任务":
active_tasks.add(current_task)
channel_task_map[channel_id] = current_task
print(f" 📌 {channel_id}: 任务={current_task}")
# 🔥 第二步:遍历所有任务行,更新通道列颜色
for row in range(self.table.rowCount()):
task_id_item = self.table.item(row, 0)
task_name_item = self.table.item(row, 1)
status_item = self.table.item(row, 2)
if not (task_id_item and task_name_item and status_item):
continue
# 获取任务文件夹名称
task_folder_name = f"{task_id_item.text()}_{task_name_item.text()}"
# 🔥 处理所有任务的通道列(包括正在执行和未执行的)
# 获取该任务使用的通道列表(从表格中读取)
task_channels = []
for ch_idx in range(1, 5):
col_idx = 3 + (ch_idx - 1)
ch_item = self.table.item(row, col_idx)
if ch_item and ch_item.text():
task_channels.append(ch_idx)
# 检查每个通道的检测状态
for channel_num in task_channels:
channel_id = f'channel{channel_num}'
# 检查该通道是否正在执行这个任务
if channel_task_map.get(channel_id) == task_folder_name:
# 检查该通道的检测状态
detect_var_name = f'{channel_id}detect'
if hasattr(main_window, detect_var_name):
is_detecting = getattr(main_window, detect_var_name)
print(f" 🔸 任务{task_folder_name} 通道{channel_num}: 检测状态={is_detecting}")
if is_detecting:
# 🔥 设置对应通道列为绿色
self.setChannelColumnGreenOnDetection(task_folder_name, channel_num)
else:
# 🔥 恢复通道列颜色
self.resetChannelColumnOnStopDetection(task_folder_name, channel_num)
else:
# 通道未分配此任务,恢复颜色
self.resetChannelColumnOnStopDetection(task_folder_name, channel_num)
# 🔥 只处理正在执行的任务(更新状态列)
if task_folder_name in active_tasks:
# 检查该任务使用的所有通道是否都在检测
all_channels_detecting = True
has_detecting_channels = False
for channel_num in task_channels:
channel_id = f'channel{channel_num}'
# 检查该通道是否正在执行这个任务
if channel_task_map.get(channel_id) == task_folder_name:
# 检查该通道的检测状态
detect_var_name = f'{channel_id}detect'
if hasattr(main_window, detect_var_name):
is_detecting = getattr(main_window, detect_var_name)
if is_detecting:
has_detecting_channels = True
else:
all_channels_detecting = False
else:
all_channels_detecting = False
# 🔥 规则3:设置状态列为绿色
if has_detecting_channels and all_channels_detecting:
self.setStatusColumnGreenOnDetection(task_folder_name)
except Exception as e:
print(f"❌ [文本状态] 更新通道列和状态列失败: {e}")
import traceback
traceback.print_exc()
......@@ -1831,6 +1887,85 @@ class MissionTextStatus:
import traceback
traceback.print_exc()
def refreshAllTaskStatus(self, main_window):
"""
刷新任务面板中所有任务的状态和文本颜色
根据当前通道使用情况,动态更新每个任务的状态和颜色:
- 被通道使用的任务:已启动(灰色,等待用户点击时置黑)
- 未被通道使用的任务:未启动(灰色)
Args:
main_window: MainWindow实例,用于检查通道任务状态
"""
try:
# 遍历任务面板中的所有行
for row in range(self.table.rowCount()):
task_id_item = self.table.item(row, 0) # 任务编号列
task_name_item = self.table.item(row, 1) # 任务名称列
status_item = self.table.item(row, 2) # 状态列
if task_id_item and task_name_item and status_item:
task_id = task_id_item.text()
task_name = task_name_item.text()
if task_id and task_name:
task_folder_name = f"{task_id}_{task_name}"
# 检查任务是否被使用
is_in_use = self._isTaskInUse(main_window, task_folder_name)
new_status = "已启动" if is_in_use else "未启动"
# 更新状态显示
current_status = status_item.text()
if current_status != new_status:
status_item.setText(new_status)
print(f"🔄 [状态刷新] 任务 {task_folder_name}: {current_status} → {new_status}")
# 🔥 更新文本颜色
if new_status == "未启动":
# 任务未启动时,整行置为灰色(包括状态列)
# 如果该行是当前选中行,需要清除选中状态
if self.selected_row == row:
self.selected_row = -1
self._setRowColor(row, self.COLOR_GRAY, exclude_columns=[])
elif new_status == "已启动":
# 任务已启动时,不修改颜色,保持原有状态
# 如果是当前选中行,保持黑色;如果不是,保持灰色
pass
except Exception as e:
print(f"❌ [文本状态] 刷新任务状态失败: {e}")
import traceback
traceback.print_exc()
def _isTaskInUse(self, main_window, task_folder_name):
"""
检查指定任务是否被任何通道使用
Args:
main_window: MainWindow实例
task_folder_name: 任务文件夹名称(如 "2001115_test")
Returns:
bool: 如果任务被使用返回True,否则返回False
"""
try:
# 检查所有通道(channel1-channel4)
for channel_num in range(1, 5):
mission_var_name = f'channel{channel_num}mission'
if hasattr(main_window, mission_var_name):
mission_label = getattr(main_window, mission_var_name)
current_task = mission_label.text()
if current_task == task_folder_name:
return True
return False
except Exception as e:
print(f"❌ [文本状态] 检查任务使用状态失败: {e}")
return False
def _setRowColor(self, row_index, color, exclude_columns=None):
"""
设置指定行的所有列文本颜色
......
......@@ -51,7 +51,7 @@ class ChannelThreadContext:
# ========== 控制标志 ==========
self.capture_flag = False # 捕获线程运行标志
self.display_flag = False # 显示线程运行标志
self.detection_flag = False # 检测线程运行标志
self.channel_detect_status = False # 检测线程运行标志
# 注意:curve_flag已改为全局单例管理,不再存储在context中
self.storage_flag = False # 存储线程运行标志
......
......@@ -177,7 +177,7 @@ class ModelPoolManager:
# ========== UI进度条 ==========
self.progress_dialog: Optional[Any] = None # 进度条对话框
print("🏗️ [模型池管理器] 初始化完成")
def initialize(self, config_file_path: Optional[str] = None) -> bool:
"""初始化模型池
......@@ -190,11 +190,9 @@ class ModelPoolManager:
"""
with self._lock:
if self.is_initialized:
print("⚠️ [模型池管理器] 已经初始化,跳过重复初始化")
return True
try:
print("🔧 [模型池管理器] 开始初始化...")
# 1. 加载配置文件
config = self._load_config(config_file_path)
......@@ -241,9 +239,6 @@ class ModelPoolManager:
project_root = os.path.dirname(os.path.dirname(os.path.dirname(current_dir)))
config_file_path = os.path.join(project_root, 'database', 'config', 'default_config.yaml')
print(f" [模型池管理器] 当前目录: {current_dir}")
print(f" [模型池管理器] 项目根目录: {project_root}")
print(f" [模型池管理器] 配置文件路径: {config_file_path}")
if not os.path.exists(config_file_path):
print(f"❌ [模型池管理器] 配置文件不存在: {config_file_path}")
......@@ -256,10 +251,6 @@ class ModelPoolManager:
self.device = config.get('default_device', 'cuda') if config.get('gpu_enabled', True) else 'cpu'
self.batch_size = config.get('default_batch_size', 4)
print(f"📋 [模型池管理器] 配置加载成功: {config_file_path}")
print(f" - 设备: {self.device}")
print(f" - 批大小: {self.batch_size}")
return config
except Exception as e:
......@@ -304,9 +295,6 @@ class ModelPoolManager:
# 检查模型文件是否存在
if not os.path.exists(model_path):
print(f"⚠️ [模型池管理器] 模型文件不存在: {model_path} (通道: {channel_id})")
print(f" - 请检查配置文件中的路径是否正确")
print(f" - 项目根目录: {project_root}")
continue
# 统计相同路径的模型
......@@ -335,14 +323,9 @@ class ModelPoolManager:
self.model_path_to_id[model_path] = model_id
self.model_id_to_path[model_id] = model_path
print(f"📝 [模型池管理器] 发现模型: {model_id} -> {model_path}")
print(f" - 使用通道: {', '.join(channels)}")
print(f" [模型池管理器] 扫描完成,发现 {len(unique_models)} 个唯一模型")
return unique_models
except Exception as e:
print(f"❌ [模型池管理器] 模型扫描失败: {e}")
return {}
def _load_all_models(self, unique_models: Dict[str, str]) -> bool:
......@@ -356,7 +339,6 @@ class ModelPoolManager:
"""
try:
total_models = len(unique_models)
print(f"🚀 [模型池管理器] 开始在后台线程加载 {total_models} 个模型到显存...")
# 初始化加载状态
self._loading_success = False
......@@ -387,13 +369,10 @@ class ModelPoolManager:
# 确保所有信号处理完成
QApplication.processEvents()
print(f" [模型池管理器] 加载结果: _loading_success={self._loading_success}")
# 返回加载结果
return self._loading_success
except Exception as e:
print(f"❌ [模型池管理器] 批量加载模型失败: {e}")
import traceback
traceback.print_exc()
self._close_progress_dialog(False)
......@@ -417,7 +396,6 @@ class ModelPoolManager:
success: 是否成功
loaded_models: 已加载的模型字典
"""
print(f"✅ [模型池管理器] 后台加载完成,成功加载 {len(loaded_models)} 个模型")
# 将加载的模型添加到模型池
for model_id, detection_engine in loaded_models.items():
......@@ -428,15 +406,16 @@ class ModelPoolManager:
self._loading_success = success and len(loaded_models) > 0
self._loading_finished = True # 标记加载完成
print(f" [模型池管理器] 设置加载状态: _loading_success={self._loading_success}, _loading_finished={self._loading_finished}")
# 关闭进度条对话框
self._close_progress_dialog(self._loading_success)
if not self._loading_success:
print("❌ [模型池管理器] 没有任何模型加载成功")
import traceback
traceback.print_exc()
else:
print(f"✅ [模型池管理器] 所有模型加载成功")
import traceback
traceback.print_exc()
def _on_loading_error(self, error_msg: str):
"""处理加载错误信号
......@@ -444,7 +423,6 @@ class ModelPoolManager:
Args:
error_msg: 错误信息
"""
print(f"❌ [模型池管理器] 加载错误: {error_msg}")
self._loading_success = False
self._loading_finished = True # 标记加载完成(即使失败)
self._close_progress_dialog(False)
......@@ -471,7 +449,6 @@ class ModelPoolManager:
self.progress_dialog = ModelLoadingProgressDialog(parent, total_models)
self.progress_dialog.show()
print(f"📊 [模型池管理器] 进度条对话框已创建")
except Exception as e:
print(f"⚠️ [模型池管理器] 创建进度条对话框失败: {e}")
......@@ -490,7 +467,8 @@ class ModelPoolManager:
try:
self.progress_dialog.update_progress(current, model_id, step, sub_progress)
except Exception as e:
print(f"⚠️ [模型池管理器] 更新进度条失败: {e}")
import traceback
traceback.print_exc()
def _close_progress_dialog(self, success: bool = True):
"""关闭进度条对话框
......@@ -506,10 +484,10 @@ class ModelPoolManager:
self.progress_dialog.set_error("部分模型加载失败")
self.progress_dialog = None
print(f"📊 [模型池管理器] 进度条对话框已关闭")
except Exception as e:
print(f"⚠️ [模型池管理器] 关闭进度条对话框失败: {e}")
import traceback
traceback.print_exc()
def _load_single_model(self, model_id: str, model_path: str, current_idx: int = 1) -> Optional[Any]:
"""加载单个模型
......@@ -527,10 +505,6 @@ class ModelPoolManager:
self._update_progress_dialog(current_idx, model_id, "初始化检测引擎...", 0)
from handlers.videopage.detection import LiquidDetectionEngine
print(f" - 模型路径: {model_path}")
print(f" - 设备: {self.device}")
print(f" - 批大小: {self.batch_size}")
# 🔥 创建检测引擎实例(不传入model_path,避免自动加载)
engine = LiquidDetectionEngine(
model_path=None, # 不在构造函数中加载
......@@ -541,30 +515,28 @@ class ModelPoolManager:
# 步骤2: 加载模型文件 (20-60%)
self._update_progress_dialog(current_idx, model_id, "正在加载模型文件到显存...", 25)
print(f" [模型池管理器] 正在加载模型: {model_path}")
if not engine.load_model(model_path):
print(f"❌ [模型池管理器] 模型加载失败: {model_path}")
import traceback
traceback.print_exc()
return None
print(f"✅ [模型池管理器] 模型加载成功: {model_path}")
self._update_progress_dialog(current_idx, model_id, "模型文件加载完成", 60)
# 步骤3: 读取标注配置 (60-75%)
self._update_progress_dialog(current_idx, model_id, "正在读取标注配置文件...", 65)
print(f" [模型池管理器] 正在加载 {model_id} 的标注配置...")
annotation_config = self._load_annotation_config_for_model(model_id)
if not annotation_config:
print(f"❌ [模型池管理器] 未找到标注配置: {model_id}")
import traceback
traceback.print_exc()
return None
print(f"✅ [模型池管理器] 找到标注配置: {list(annotation_config.keys())}")
self._update_progress_dialog(current_idx, model_id, "标注配置文件读取完成", 75)
# 步骤4: 配置标注数据 (75-95%)
self._update_progress_dialog(current_idx, model_id, "正在配置检测区域和参数...", 80)
success = self._configure_annotation_data(engine, annotation_config)
if not success:
print(f"❌ [模型池管理器] 标注配置加载失败: {model_id}")
import traceback
traceback.print_exc()
return None
print(f"✅ [模型池管理器] 标注配置加载成功: {model_id}")
self._update_progress_dialog(current_idx, model_id, "检测区域配置完成", 95)
# 步骤5: 完成 (95-100%)
......@@ -573,7 +545,6 @@ class ModelPoolManager:
return engine
except Exception as e:
print(f"❌ [模型池管理器] 加载模型失败 {model_id}: {e}")
import traceback
traceback.print_exc()
return None
......@@ -596,7 +567,8 @@ class ModelPoolManager:
annotation_file = os.path.join(project_root, 'database', 'config', 'annotation_result.yaml')
if not os.path.exists(annotation_file):
print(f"⚠️ [模型池管理器] 标注文件不存在: {annotation_file}")
import traceback
traceback.print_exc()
return None
with open(annotation_file, 'r', encoding='utf-8') as f:
......@@ -648,14 +620,17 @@ class ModelPoolManager:
# 添加actual_heights到配置中
annotation_data['actual_heights'] = actual_heights
print(f"📋 [模型池管理器] 为模型 {model_id} 加载标注配置 (来源通道: {channel_id})")
import traceback
traceback.print_exc()
return annotation_data
print(f"⚠️ [模型池管理器] 未找到模型 {model_id} 的标注配置")
import traceback
traceback.print_exc()
return None
except Exception as e:
print(f"❌ [模型池管理器] 加载标注配置失败 {model_id}: {e}")
import traceback
traceback.print_exc()
return None
def _configure_annotation_data(self, engine: Any, annotation_config: Dict) -> bool:
......@@ -685,7 +660,8 @@ class ModelPoolManager:
return True
except Exception as e:
print(f"❌ [模型池管理器] 配置标注数据失败: {e}")
import traceback
traceback.print_exc()
return False
def _build_channel_mapping(self, config: Dict):
......@@ -719,12 +695,15 @@ class ModelPoolManager:
model_id = self.model_path_to_id.get(model_path)
if model_id:
self.channel_model_mapping[channel_id] = model_id
print(f"🔗 [模型池管理器] 通道映射: {channel_id} -> {model_id}")
import traceback
traceback.print_exc()
print(f"🔗 [模型池管理器] 建立了 {len(self.channel_model_mapping)} 个通道映射")
import traceback
traceback.print_exc()
except Exception as e:
print(f"❌ [模型池管理器] 建立通道映射失败: {e}")
import traceback
traceback.print_exc()
def _initialize_monitoring(self):
"""初始化性能监控"""
......@@ -735,14 +714,18 @@ class ModelPoolManager:
import torch
if torch.cuda.is_available():
self.stats['gpu_memory_usage'] = torch.cuda.memory_allocated() / 1024**3 # GB
print(f"📊 [模型池管理器] GPU内存使用: {self.stats['gpu_memory_usage']:.2f} GB")
import traceback
traceback.print_exc()
except ImportError:
print("⚠️ [模型池管理器] PyTorch未安装,无法监控GPU内存")
import traceback
traceback.print_exc()
except Exception as e:
print(f"⚠️ [模型池管理器] GPU内存监控初始化失败: {e}")
import traceback
traceback.print_exc()
except Exception as e:
print(f"❌ [模型池管理器] 监控初始化失败: {e}")
import traceback
traceback.print_exc()
def _print_model_summary(self):
"""打印模型池摘要信息"""
......@@ -778,17 +761,20 @@ class ModelPoolManager:
"""
with self._lock:
if not self.is_initialized:
print("❌ [模型池管理器] 尚未初始化")
import traceback
traceback.print_exc()
return None
model_id = self.channel_model_mapping.get(channel_id)
if not model_id:
print(f"❌ [模型池管理器] 通道 {channel_id} 没有对应的模型")
import traceback
traceback.print_exc()
return None
model = self.model_pool.get(model_id)
if not model:
print(f"❌ [模型池管理器] 模型 {model_id} 未加载")
import traceback
traceback.print_exc()
return None
# 更新使用计数
......@@ -873,7 +859,8 @@ class ModelPoolManager:
return annotation_data
except Exception as e:
print(f"❌ [模型池管理器] 加载通道 {channel_id} 标注配置失败: {e}")
import traceback
traceback.print_exc()
return None
def process_batches(self, scheduled_batches: List[Dict[str, Any]]) -> List[Dict[str, Any]]:
......@@ -887,7 +874,8 @@ class ModelPoolManager:
"""
with self._lock:
if not self.is_initialized:
print("❌ [模型池管理器] 尚未初始化")
import traceback
traceback.print_exc()
return []
results = []
......@@ -903,7 +891,8 @@ class ModelPoolManager:
# 获取对应的模型
model = self.model_pool.get(model_id)
if not model:
print(f"❌ [模型池管理器] 模型 {model_id} 未找到")
import traceback
traceback.print_exc()
continue
# 切换到目标模型
......@@ -939,7 +928,6 @@ class ModelPoolManager:
return results
except Exception as e:
print(f"❌ [模型池管理器] 批量推理失败: {e}")
import traceback
traceback.print_exc()
return []
......@@ -949,7 +937,8 @@ class ModelPoolManager:
"""清理模型池资源"""
with self._lock:
try:
print("🧹 [模型池管理器] 开始清理资源...")
import traceback
traceback.print_exc()
# 清理所有模型
for model_id, model in self.model_pool.items():
......@@ -957,9 +946,11 @@ class ModelPoolManager:
# 如果模型有cleanup方法,调用它
if hasattr(model, 'cleanup'):
model.cleanup()
print(f"✅ [模型池管理器] 模型 {model_id} 清理完成")
import traceback
traceback.print_exc()
except Exception as e:
print(f"⚠️ [模型池管理器] 模型 {model_id} 清理失败: {e}")
import traceback
traceback.print_exc()
# 清空所有数据结构
self.model_pool.clear()
......@@ -971,10 +962,12 @@ class ModelPoolManager:
self.current_model_id = None
self.is_initialized = False
print("✅ [模型池管理器] 资源清理完成")
import traceback
traceback.print_exc()
except Exception as e:
print(f"❌ [模型池管理器] 资源清理失败: {e}")
import traceback
traceback.print_exc()
def get_stats(self) -> Dict[str, Any]:
"""获取性能统计信息"""
......
......@@ -245,7 +245,7 @@ class ChannelThreadManager:
if not context:
return False
if context.detection_flag:
if context.channel_detect_status:
return True
try:
......@@ -271,17 +271,22 @@ class ChannelThreadManager:
global_thread.register_channel(channel_id, context, callback)
# 更新通道状态
context.detection_flag = True
context.channel_detect_status = True
context.detection_enabled = True
# 🔥 更新主窗口中的通道检测变量(channel1detect, channel2detect等)
if self.main_window:
detect_var_name = f'{channel_id}detect'
setattr(self.main_window, detect_var_name, True)
print(f"🔥 [线程管理器] 已设置 {detect_var_name} = True")
# 🔥 更新任务面板中状态列的颜色(只更新为绿色,不置黑)
if hasattr(self.main_window, '_updateChannelColumnColor'):
print(f"🔥 [线程管理器] 准备调用 _updateChannelColumnColor")
self.main_window._updateChannelColumnColor()
print(f"🔥 [线程管理器] _updateChannelColumnColor 调用完成")
else:
print(f"❌ [线程管理器] main_window 没有 _updateChannelColumnColor 方法!")
# 保持兼容性:设置一个占位符线程对象
context.detection_thread = threading.Thread(
......@@ -510,7 +515,7 @@ class ChannelThreadManager:
global_thread.unregister_channel(channel_id)
# 更新通道状态
context.detection_flag = False
context.channel_detect_status = False
context.detection_enabled = False
# 🔥 更新主窗口中的通道检测变量(channel1detect, channel2detect等)
......@@ -996,7 +1001,7 @@ class ChannelThreadManager:
'count': context.display_count
},
'detection': {
'running': context.detection_flag,
'running': context.channel_detect_status,
'count': context.detection_count,
'enabled': context.detection_enabled
},
......
......@@ -70,7 +70,7 @@ class DetectionThread:
channel_id = context.channel_id
frame_interval = 1.0 / frame_rate if frame_rate > 0 else 0.05
while context.detection_flag:
while context.channel_detect_status:
try:
frame_start_time = time.time()
......@@ -150,7 +150,7 @@ class DetectionThread:
print(f" - 批大小: {batch_size}")
print(f" - 目标FPS: {frame_rate}")
while context.detection_flag:
while context.channel_detect_status:
try:
frame_start_time = time.time()
......
......@@ -149,10 +149,10 @@ class ViewHandler:
print(f"📊 [检测状态判断] 任务状态: '{mission_status}'")
if mission_status == "未启动":
print(f"⚠️ [检测状态判断] 任务状态为'未启动',跳过detection_flag检查,直接使用历史回放模式(索引1)")
print(f"⚠️ [检测状态判断] 任务状态为'未启动',跳过channel_detect_status检查,直接使用历史回放模式(索引1)")
return False
else:
print(f"✅ [检测状态判断] 任务状态为'{mission_status}',继续检查detection_flag")
print(f"✅ [检测状态判断] 任务状态为'{mission_status}',继续检查channel_detect_status")
# 获取该任务使用的通道列表
task_channels = self._getTaskChannels(mission_name)
......@@ -172,21 +172,21 @@ class ViewHandler:
print(f"🔑 [检测状态判断] 转换后的通道ID: {channel_ids}")
# 检查这些通道的detection_flag状态
# 只要有任意一个通道的detection_flag为True,就返回True
# 检查这些通道的channel_detect_status状态
# 只要有任意一个通道的channel_detect_status为True,就返回True
for channel_id in channel_ids:
context = self.thread_manager.get_channel_context(channel_id)
if context:
detection_flag = context.detection_flag
print(f" 🔸 {channel_id}: detection_flag={detection_flag}, type={type(detection_flag)}")
# 确保 detection_flag 是布尔值 True
if detection_flag is True or detection_flag == True:
channel_detect_status = context.channel_detect_status
print(f" 🔸 {channel_id}: channel_detect_status={channel_detect_status}, type={type(channel_detect_status)}")
# 确保 channel_detect_status 是布尔值 True
if channel_detect_status is True or channel_detect_status == True:
print(f"✅ [检测状态判断] 发现运行中的检测线程: {channel_id}")
return True
else:
print(f" ⚠️ {channel_id}: 没有context")
# 所有通道的detection_flag都为False
# 所有通道的channel_detect_status都为False
print(f"❌ [检测状态判断] 所有通道的检测线程都已停止")
return False
......
1曲线模式索引0布局,只显示根据curvemission筛选使用的通道面板失效了
1曲线模式索引0布局,只显示根据curvemission筛选使用的通道面板失效了
......@@ -8,16 +8,18 @@
├─ 是 → 返回 False → 索引1(历史回放)
└─ 否 → 继续检查
检查通道 detection_flag
检查通道 channel_detect_status
任意通道 detection_flag = True?
任意通道 channel_detect_status = True?
├─ 是 → 返回 True → 索引0(实时检测)
└─ 否 → 返回 False → 索引1(历史回放)
保存标注结果用于持久显示
self._last_annotation_pixmap
任务面板任务信息文本状态切换逻辑 class missiontexe_status
任务面板任务信息文本状态切换逻辑 class missiontexe_status,channel_detect_status
1任务面板信息文本显示初始默认都为灰色
2单击选中行时文本该行文本置为黑色
3启动检测线程时对应任务的对应通道列置为绿色
4新建任务信息文本显示初始默认都为灰色
5单击任务行后该任务mission_status为true时才置黑该任务行
6mission_status判断逻辑,只要任意channelmission值为此任务,则此任务mission_status=true
\ No newline at end of file
......@@ -648,6 +648,23 @@ class MissionPanel(QtWidgets.QWidget):
# 更新分页显示(如果需要)
if update_display:
# 🔥 检查新行是否在当前页,如果是则直接添加到表格,否则更新分页
display_data = self._filtered_rows_data if self._search_text else self._all_rows_data
total_rows = len(display_data)
start_index = (self._current_page - 1) * self._page_size
end_index = start_index + self._page_size
# 新行的索引
new_row_index = len(self._all_rows_data) - 1
# 如果新行在当前页范围内,直接添加到表格
if start_index <= new_row_index < end_index and self.table.rowCount() < self._page_size:
self._addRowToTable(row_data, user_data, button_callback)
# 只更新页码标签,不刷新整个表格
total_pages = (total_rows + self._page_size - 1) // self._page_size if total_rows > 0 else 1
self.page_label.setText(f"{self._current_page} / {total_pages}")
else:
# 新行不在当前页,需要完整刷新分页
self._updatePagination()
# 返回在全部数据中的索引
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment