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