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_SmartVision/Forms/Pages/CommunicatorPage/CommunicatorsEditPage.cs | 38 ++++++++++++++++++++++++++++++++++----
1 files changed, 34 insertions(+), 4 deletions(-)
diff --git a/LB_SmartVision/Forms/Pages/CommunicatorPage/CommunicatorsEditPage.cs b/LB_SmartVision/Forms/Pages/CommunicatorPage/CommunicatorsEditPage.cs
index 30de3e4..ad09050 100644
--- a/LB_SmartVision/Forms/Pages/CommunicatorPage/CommunicatorsEditPage.cs
+++ b/LB_SmartVision/Forms/Pages/CommunicatorPage/CommunicatorsEditPage.cs
@@ -34,7 +34,9 @@
if (string.IsNullOrEmpty(ClassName) || string.IsNullOrEmpty(IP) || string.IsNullOrEmpty(PORT))
return;
- string CommunicatorConnectionString = $"({ClassName}){IP}:{PORT}";
+ string DataType = item.Value.CommunicatorConnections.Contains("鏁版嵁绫诲瀷") ?
+ item.Value.CommunicatorConnections["鏁版嵁绫诲瀷"].ToString() : "String";
+ string CommunicatorConnectionString = $"({ClassName}){IP}:{PORT} [{DataType}]";
UserItem flow = new UserItem(new string[] { "娴嬭瘯", "鍒锋柊", "绉婚櫎", "閲嶅懡鍚�" });
//flow.SetDPIScale();
@@ -69,7 +71,9 @@
if (string.IsNullOrEmpty(ClassName) || string.IsNullOrEmpty(IP) || string.IsNullOrEmpty(PORT))
return;
- string CommunicatorConnectionString = $"({ClassName}){IP}:{PORT}";
+ string DataType = communicator.CommunicatorConnections.Contains("鏁版嵁绫诲瀷") ?
+ communicator.CommunicatorConnections["鏁版嵁绫诲瀷"].ToString() : "String";
+ string CommunicatorConnectionString = $"({ClassName}){IP}:{PORT} [{DataType}]";
GlobalVar.dicCommunicators.TryAdd(Name, communicator);
communicator.CommunicatorName = Name;
@@ -126,8 +130,34 @@
if (GlobalVar.dicCommunicators.ContainsKey(name))
{
- CommunicatorForm cameraForm = new CommunicatorForm(GlobalVar.dicCommunicators[name], name);
- cameraForm.Show();
+ CommunicatorForm communicatorFForm = new CommunicatorForm(GlobalVar.dicCommunicators[name], name);
+ communicatorFForm.CommunicatorChanged += CommunicatorFForm_CommunicatorChanged;
+ communicatorFForm.Show();
+ }
+ }
+ }
+
+ private void CommunicatorFForm_CommunicatorChanged(BaseCommunicator communicator)
+ {
+ if (this.InvokeRequired)
+ {
+ this.Invoke(new Action<BaseCommunicator>(CommunicatorFForm_CommunicatorChanged), communicator);
+ return;
+ }
+
+ for (int i = 0; i < uiFlowLayoutPanel1.Controls.Count; i++)
+ {
+ if (uiFlowLayoutPanel1.Controls[i] is UserItem flow && flow.Name == communicator.CommunicatorName)
+ {
+ string ClassName = communicator.GetType().Name;
+ string IP = communicator.CommunicatorConnections["鍦板潃"].ToString();
+ string PORT = communicator.CommunicatorConnections["绔彛"].ToString();
+ string DataType = communicator.CommunicatorConnections.Contains("鏁版嵁绫诲瀷") ?
+ communicator.CommunicatorConnections["鏁版嵁绫诲瀷"].ToString() : "String";
+
+ flow.Text = $"({ClassName}){IP}:{PORT} [{DataType}]";
+ flow.Refresh();
+ break;
}
}
}
--
Gitblit v1.9.3