From 6e14b76f38ea713b43430bc86b1411172d9530f6 Mon Sep 17 00:00:00 2001
From: C3204 <zhengyabo@lanpucloud.cn>
Date: 星期四, 16 四月 2026 15:59:00 +0800
Subject: [PATCH] 修复S7测试工具信号发送地址不更新的bug.

---
 LB_VisionProcesses/Cameras/HRCameras/HRCamera.cs |   67 +++++++++++++++++++++++++++++----
 1 files changed, 59 insertions(+), 8 deletions(-)

diff --git a/LB_VisionProcesses/Cameras/HRCameras/HRCamera.cs b/LB_VisionProcesses/Cameras/HRCameras/HRCamera.cs
index 4da37db..f8db5fb 100644
--- a/LB_VisionProcesses/Cameras/HRCameras/HRCamera.cs
+++ b/LB_VisionProcesses/Cameras/HRCameras/HRCamera.cs
@@ -2,6 +2,7 @@
 using LB_SmartVisionCommon;
 using LB_VisionProcesses.Cameras.LBCameras;
 using MVSDK_Net;
+using Sunny.UI;
 using System;
 using System.Collections;
 using System.Collections.Concurrent;
@@ -102,6 +103,57 @@
                                 typeof(IMVDefine.IMV_DeviceInfo));
 
                         string cameraInfo = $"{deviceInfo.cameraName}[{deviceInfo.serialNumber}]";
+                        if (!cameraInfo.Contains("L"))
+                        {
+                            cameraList.Add(cameraInfo);
+                        }
+                    }
+                }
+                else
+                {
+                    // 璁板綍鏃ュ織鎴栨姏鍑哄紓甯�
+                    //throw new Exception($"鏋氫妇璁惧澶辫触锛岄敊璇爜锛歿result}");
+                    AsyncLogHelper.Error("鏋氫妇璁惧澶辫触锛�");
+                    System.Diagnostics.Debug.WriteLine("鏋氫妇璁惧澶辫触锛�");
+                }
+            }
+            catch (Exception ex)
+            {
+                // 璁板綍閿欒鏃ュ織
+                System.Diagnostics.Debug.WriteLine($"鑾峰彇鐩告満鍒楄〃澶辫触锛歿ex.Message}");
+                AsyncLogHelper.Error($"鑾峰彇鐩告満鍒楄〃澶辫触锛歿ex.Message}");
+                throw;
+            }
+
+            return cameraList;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鐩告満SN鏋氫妇鍒楄〃
+        /// </summary>
+        /// <returns>鐩告満SN鍒楄〃</returns>
+        public  List<string> GetListEnumAll()
+        {
+            List<string> cameraList = new List<string>();
+
+            try
+            {
+                // 鏋氫妇鎵�鏈夎澶�
+                IMVDefine.IMV_DeviceList deviceList = new IMVDefine.IMV_DeviceList();
+                IMVDefine.IMV_EInterfaceType interfaceType = IMVDefine.IMV_EInterfaceType.interfaceTypeAll;
+
+                int result = MyCamera.IMV_EnumDevices(ref deviceList, (uint)interfaceType);
+
+                if (result == IMVDefine.IMV_OK && deviceList.nDevNum > 0)
+                {
+                    for (int i = 0; i < deviceList.nDevNum; i++)
+                    {
+                        IMVDefine.IMV_DeviceInfo deviceInfo = (IMVDefine.IMV_DeviceInfo)
+                            Marshal.PtrToStructure(
+                                deviceList.pDevInfo + Marshal.SizeOf(typeof(IMVDefine.IMV_DeviceInfo)) * i,
+                                typeof(IMVDefine.IMV_DeviceInfo));
+
+                        string cameraInfo = $"{deviceInfo.cameraName}[{deviceInfo.serialNumber}]";
                         cameraList.Add(cameraInfo);
                     }
                 }
@@ -150,7 +202,7 @@
                 }
 
                 // 鏋氫妇璁惧骞跺尮閰峉N
-                List<string> cameraList = GetListEnum();
+                List<string> cameraList = GetListEnumAll();
                 int cameraIndex = -1;
 
                 for (int i = 0; i < cameraList.Count; i++)
@@ -233,10 +285,9 @@
                     AsyncLogHelper.Warn(SN + "甯ц浆鎹负Bitmap澶辫触锛岃烦杩囧鐞�");
                     return;
                 }
-                AsyncLogHelper.Info(SN + $"鍥惧儚宸插姞鍏ョ紦瀛橈紝褰撳墠缂撳瓨鏁伴噺锛歿CollectedImages[SN].Count}");
                 // 3. 鑾峰彇/鍒涘缓绾跨▼瀹夊叏闃熷垪
                 var queue = CollectedImages.GetOrAdd(SN, new ConcurrentQueue<Bitmap>());
-
+                AsyncLogHelper.Info(SN + $"鍥惧儚宸插姞鍏ョ紦瀛橈紝褰撳墠缂撳瓨鏁伴噺锛歿CollectedImages[SN].Count}");
                 // 4. 闃熷垪闄愭祦锛岄槻姝㈠唴瀛樻孩鍑�
                 if (queue.Count >= MAX_QUEUE_CAPACITY)
                 {
@@ -308,6 +359,7 @@
                             {
                                 // 瑙﹀彂鍥惧儚浜嬩欢
                                 ImageGrabbed?.Invoke(this, new LBCameraEventArgs(SN, clone, true));
+                                CallBackImg = (Bitmap)clone.Clone();
                             }
 
                             // 瑙﹀彂妯″紡鍒ゆ柇
@@ -1408,7 +1460,6 @@
         public override bool GetImage(out Bitmap bitmap, int outtime = 3000)
         {
             bitmap = null;
-
             try
             {
                 // 璁剧疆瓒呮椂鏃堕棿
@@ -1421,12 +1472,12 @@
                         lock (CallBackImg)
                         {
                             // 淇濆瓨鏃� Bitmap 骞堕噴鏀�
-                            bitmap = CallBackImg.Clone() as Bitmap; // 鍒涘缓鍓湰
+                            bitmap = CallBackImg; // 鍒涘缓鍓湰
                         }
 
-                        // 閲婃斁鏃ц祫婧�
-                        CallBackImg.Dispose();
-                        CallBackImg = null;
+                        //// 閲婃斁鏃ц祫婧�
+                        //CallBackImg.Dispose();
+                        //CallBackImg = null;
                         return true;
                     }
                 }

--
Gitblit v1.9.3