From f3b1cd8c7e62c04d8b1a3acace9396f3dbadafd4 Mon Sep 17 00:00:00 2001
From: C3032 <C3032@BC3032>
Date: 星期一, 22 十二月 2025 11:01:23 +0800
Subject: [PATCH] 修复相同SN相机重新创建后引用失效导致无法采集的问题   1. 修复引用更新逻辑:修改`CameraConfig.Run` 方法,将仅对比SN字符串改为对比全局 `dicCameras`中的对象实例,解决相机删除重建(SN不变)后流程仍调用已销毁旧对象的问题。    2. 增强健壮性:在检测到相机实例变更后,增加自动检查并调用 `StartGrabbing()`的逻辑,确保新相机能自动进入采集状态,防止报“相机未打开”错误。

---
 LB_VisionProcesses/Cameras/CameraConfig.cs |   22 +++++++++++++++++-----
 1 files changed, 17 insertions(+), 5 deletions(-)

diff --git a/LB_VisionProcesses/Cameras/CameraConfig.cs b/LB_VisionProcesses/Cameras/CameraConfig.cs
index fa0bb79..66303bd 100644
--- a/LB_VisionProcesses/Cameras/CameraConfig.cs
+++ b/LB_VisionProcesses/Cameras/CameraConfig.cs
@@ -206,12 +206,24 @@
                         return Result;
                     }
 
-                    if (Camera == null || Camera.SN != SN)
+                    // 濮嬬粓妫�鏌ョ紦瀛樼殑Camera瀵硅薄鏄惁涓庡叏灞�瀛楀吀涓殑涓�鑷�
+                    // 闃叉鐩告満琚垹闄ゅ苟閲嶅缓鍚�(SN鐩稿悓), 浠嶇劧寮曠敤鏃х殑宸查攢姣佸璞�
+                    if (dicCameras.ContainsKey(SN))
                     {
-                        if (dicCameras.ContainsKey(SN))
-                            Camera = dicCameras[SN];
-                        else
-                            Camera = null;
+                        var currentCam = dicCameras[SN];
+                        if (Camera != currentCam)
+                        {
+                            Camera = currentCam;
+                            // 濡傛灉鍒囨崲浜嗙浉鏈哄疄渚嬶紝涓旀湭寮�濮嬮噰闆嗭紝灏濊瘯寮�鍚噰闆�
+                            if (Camera != null && !Camera.isGrabbing)
+                            {
+                                try { Camera.StartGrabbing(); } catch { }
+                            }
+                        }
+                    }
+                    else
+                    {
+                        Camera = null;
                     }
 
                     if (Camera == null)

--
Gitblit v1.9.3