From d0c990eaf6cfdbf77c1f4f8db272f4964ec43310 Mon Sep 17 00:00:00 2001
From: C3204 <zhengyabo@lanpucloud.cn>
Date: 星期四, 15 一月 2026 15:58:15 +0800
Subject: [PATCH] 优化西门子S7通讯:支持多数据类型、UI布局调整及配置持久化修复   详细说明:    1. 通讯核心 (SiemensLBS7)        * 多类型支持:完善 SendMessage 和 ReceiveMsg,支持 Bool, Byte, Int, DInt, Real, Double, Word, DWord, String的读写。        * Bool 解析优化:增强布尔值解析逻辑,支持字符串 "1"/"0" 及 "True"/"False"(不区分大小写)。        * 错误反馈:捕获数据转换异常(如格式错误),将具体错误信息写入 Msg 属性,便于 UI 展示。

---
 LB_VisionProcesses/Cameras/HRCameras/HRCamera.cs |   24 +++++++++++++-----------
 1 files changed, 13 insertions(+), 11 deletions(-)

diff --git a/LB_VisionProcesses/Cameras/HRCameras/HRCamera.cs b/LB_VisionProcesses/Cameras/HRCameras/HRCamera.cs
index 2d4067b..ea8b86d 100644
--- a/LB_VisionProcesses/Cameras/HRCameras/HRCamera.cs
+++ b/LB_VisionProcesses/Cameras/HRCameras/HRCamera.cs
@@ -218,21 +218,23 @@
             try
             {
                 Bitmap bitmap = ConvertFrameToBitmap(frame);
-
                 // 閲婃斁甯ф暟鎹�
                 // release frame
                 _camera.IMV_ReleaseFrame(ref frame);
-                CallBackImg = (Bitmap)bitmap.Clone();
-                if (CallBackImg == null)
+                Task.Factory.StartNew(() =>
                 {
-                    return;
-                }
-                if (GetTriggerMode(out TriggerMode mode, out TriggerSource source))
-                {
-                    if (mode == TriggerMode.On && source != TriggerSource.Software)
-                        TriggerRunMessageReceived?.Invoke(SN, source.ToString());  // 瑙﹀彂杩愯浜嬩欢
-                }
-                bitmap.Dispose();
+                    CallBackImg = (Bitmap)bitmap.Clone();
+                    if (CallBackImg == null)
+                    {
+                        return;
+                    }
+                    if (GetTriggerMode(out TriggerMode mode, out TriggerSource source))
+                    {
+                        if (mode == TriggerMode.On && source != TriggerSource.Software)
+                            TriggerRunMessageReceived?.Invoke(SN, source.ToString());  // 瑙﹀彂杩愯浜嬩欢
+                    }
+                    bitmap.Dispose();
+                });
             }
             catch { }
             AsyncLogHelper.Info(SN + "Get frame blockId = {0}" + frame.frameInfo.blockId);

--
Gitblit v1.9.3