From 116ed6b584bbdb40c5b65e7cb57e039b6ae57800 Mon Sep 17 00:00:00 2001
From: C3032 <C3032@BC3032>
Date: 星期四, 08 一月 2026 11:12:25 +0800
Subject: [PATCH] 优化相机配置和图像获取逻辑

---
 LB_VisionProcesses/Communicators/SiemensS7/SiemensLBS7.cs |   93 +++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 91 insertions(+), 2 deletions(-)

diff --git a/LB_VisionProcesses/Communicators/SiemensS7/SiemensLBS7.cs b/LB_VisionProcesses/Communicators/SiemensS7/SiemensLBS7.cs
index f9fac67..006d3c6 100644
--- a/LB_VisionProcesses/Communicators/SiemensS7/SiemensLBS7.cs
+++ b/LB_VisionProcesses/Communicators/SiemensS7/SiemensLBS7.cs
@@ -1,4 +1,6 @@
-锘縰sing System;
+锘縰sing LB_SmartVisionCommon;
+using S7.Net;
+using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
@@ -6,7 +8,94 @@
 
 namespace LB_VisionProcesses.Communicators.SiemensS7
 {
-    internal class SiemensLBS7
+    public class SiemensLBS7 : BaseCommunicator
     {
+        private Plc plc;
+        public string variable = string.Empty;
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="name"></param>
+        public SiemensLBS7(string name = "瑗块棬瀛怱7")
+        {
+            CommunicatorConnections.Add("鍦板潃", "127.0.0.1");
+            CommunicatorConnections.Add("绔彛", "1");
+            CommunicatorConnections.Add("鍨嬪彿", S7.Net.CpuType.S71500);
+            CommunicatorBrand = CommunicatorBrand.SiemensS7;
+            CommunicatorName = name;
+        }
+        public override bool Connect()
+        {
+            try
+            {
+                string IP = CommunicatorConnections["鍦板潃"].ToString();
+                short slot;
+                short.TryParse(CommunicatorConnections["绔彛"].ToString(), out slot);
+                S7.Net.CpuType cpuType = (CpuType)CommunicatorConnections["鍨嬪彿"];
+                variable = CommunicatorConnections["鍙橀噺鍦板潃"].ToString();
+                plc = new Plc(cpuType, IP, 0, slot);
+                plc.Open();
+                return true;
+
+            }
+            catch
+            {
+                return false;
+            }
+        }
+
+        public override bool Disconnect()
+        {
+            try
+            {
+                plc?.Close();
+                return true;
+            }
+            catch
+            {
+                return false;
+            }
+        }
+
+        public override bool SendMessage(string message)
+        {
+            try
+            {
+                if (plc!=null)
+                {
+                    if (string.IsNullOrEmpty(variable))
+                    {
+                        variable = CommunicatorConnections["鍙橀噺鍦板潃"].ToString();
+                    }
+                    plc.Write(variable, message);
+                    return true;
+                }
+                else
+                {
+                    return false;
+                }
+            }
+            catch
+            {
+                return false;
+            }
+        }
+
+        public override void Dispose()
+        {
+            try
+            {
+                AsyncLogHelper.Info($"Device:[{CommunicatorName}],Dispose()");
+
+                plc = null;
+
+                // Suppress finalization.
+                GC.SuppressFinalize(this);
+            }
+            catch (Exception ex)
+            {
+                AsyncLogHelper.Error($"Device:[{CommunicatorName}],Dispose(),Error" + ex);
+            }
+        }
     }
 }

--
Gitblit v1.9.3