From d1b72117058f1131046b6aa3add8e3ccfae033d8 Mon Sep 17 00:00:00 2001
From: wenxiangchao <wenxiangchao@ihengxin.com.cn>
Date: 星期一, 09 十一月 2026 10:36:07 +0800
Subject: [PATCH] docs: CAN 模拟器独立 TCP 服务进程设计规格(统一 CanDeviceDriver + 双工推送协议)

---
 HMI.ParameterManage/Model/XmlModel.cs |   16 ++++++++++++++++
 1 files changed, 16 insertions(+), 0 deletions(-)

diff --git a/HMI.ParameterManage/Model/XmlModel.cs b/HMI.ParameterManage/Model/XmlModel.cs
index 92210e2..c04e4ad 100644
--- a/HMI.ParameterManage/Model/XmlModel.cs
+++ b/HMI.ParameterManage/Model/XmlModel.cs
@@ -1,10 +1,12 @@
 锘縰sing HMI.Core.Entity;
 using HMI.Core.Manager;
 using HMI.Core.Util;
+using HMI.LogUtil;
 using System.Collections.Generic;
 using System.Collections.ObjectModel;
 using System.IO;
 using System.Linq;
+using System.Text.RegularExpressions;
 
 namespace HMI.ParameterManage.Model
 {
@@ -71,8 +73,16 @@
 
         public bool ValidateParameterName(object value, out string msg)
         {
+            string pattern = @"^[\p{L}_][\p{L}\p{N}_]*$";
             msg = null;
             string name = value.ToString();
+
+            if (!Regex.IsMatch(name, pattern))
+            {
+                msg = "鍙傛暟鍚嶄笉鑳戒互鏁板瓧寮�澶�";
+                return false;
+            }
+
             if (Products == null) return true;
             var temp = Parameters.FirstOrDefault(p => p.Name == name);
             if (temp != null && temp != SelectedParameter)
@@ -125,6 +135,7 @@
             else
             {
                 InsertParameter(data);
+                LogHelper.Info("HMI", $"[{data.ProductName}] Add New Parameter {data.Name}. Value: {data.Value}", out _);
             }
         }
 
@@ -215,8 +226,13 @@
         public void UpdateParameter(int index, ParameterData data)
         {
             var temp = XmlHelper.DeepClone(Parameters);
+            var old = temp[index];
             temp[index] = data;
             SaveParameter(temp);
+            if (old.Value != data.Value)
+            {
+                LogHelper.Info("HMI", $"Update Parameter {data.Name}. Value: {old.Value} => {data.Value}", out _);
+            }
         }
 
         /// <summary>

--
Gitblit v1.9.1