From b48ac75b89e94e3f70da5a2233e18734aa271682 Mon Sep 17 00:00:00 2001
From: C3204 <zhengyabo@lanpucloud.cn>
Date: 星期四, 16 四月 2026 13:45:50 +0800
Subject: [PATCH] 丐版相机外触发同一流程触发一次。

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

diff --git a/LB_VisionProcesses/Cameras/HRCameras/HRCamera.cs b/LB_VisionProcesses/Cameras/HRCameras/HRCamera.cs
index c46d1f1..f8db5fb 100644
--- a/LB_VisionProcesses/Cameras/HRCameras/HRCamera.cs
+++ b/LB_VisionProcesses/Cameras/HRCameras/HRCamera.cs
@@ -129,6 +129,54 @@
         }
 
         /// <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);
+                    }
+                }
+                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>
         /// 鍒濆鍖栫浉鏈鸿澶�
         /// </summary>
         /// <param name="SN">鐩告満搴忓垪鍙�</param>
@@ -154,7 +202,7 @@
                 }
 
                 // 鏋氫妇璁惧骞跺尮閰峉N
-                List<string> cameraList = GetListEnum();
+                List<string> cameraList = GetListEnumAll();
                 int cameraIndex = -1;
 
                 for (int i = 0; i < cameraList.Count; i++)
@@ -1412,7 +1460,6 @@
         public override bool GetImage(out Bitmap bitmap, int outtime = 3000)
         {
             bitmap = null;
-
             try
             {
                 // 璁剧疆瓒呮椂鏃堕棿
@@ -1425,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