From 2e889843b4c171f2d6ad8e0d53084040703d11f6 Mon Sep 17 00:00:00 2001
From: wenxiangchao <wenxiangchao@ihengxin.com.cn>
Date: 星期一, 09 十一月 2026 13:18:21 +0800
Subject: [PATCH] docs: CAN 总线级应答器 + 硬件调试页多标签多会话 设计规格

---
 HMI.ParameterManage/Model/XmlModel.cs |   23 +++++++++++++++++++----
 1 files changed, 19 insertions(+), 4 deletions(-)

diff --git a/HMI.ParameterManage/Model/XmlModel.cs b/HMI.ParameterManage/Model/XmlModel.cs
index 9f0f984..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)
@@ -96,7 +106,6 @@
             if (SelectedProduct != null)
             {
                 parameters = ProductManager.GetParametersByProductName<ObservableCollection<ParameterData>>(SelectedProduct.Name);
-
             }
             parameters = parameters ?? new ObservableCollection<ParameterData>();
             Parameters = parameters;
@@ -126,6 +135,7 @@
             else
             {
                 InsertParameter(data);
+                LogHelper.Info("HMI", $"[{data.ProductName}] Add New Parameter {data.Name}. Value: {data.Value}", out _);
             }
         }
 
@@ -192,7 +202,7 @@
         /// <param name="datas"></param>
         private void SaveProduct(IList<ProductData> datas)
         {
-            XmlHelper.SerializeToXml(PathHelper.ProductDataFile, datas);
+            XmlHelper.SerializeToXml(ProductManager.GetDataFilePath(), datas);
         }
         #endregion
 
@@ -216,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>
@@ -258,13 +273,13 @@
         /// <param name="datas"></param>
         private void SaveParameter(IList<ParameterData> datas)
         {
-            string fileName = Path.Combine(PathHelper.ProductDataFolder, "Parameter", $"Parameter_{SelectedProduct.Name}.data");
+            string fileName = ProductManager.GetParamFolderByProductName(SelectedProduct.Name);
             XmlHelper.SerializeToXml(fileName, datas);
         }
 
         private void SaveParameter(string product, IList<ParameterData> datas)
         {
-            string fileName = Path.Combine(PathHelper.ProductDataFolder, "Parameter", $"Parameter_{product}.data");
+            string fileName = ProductManager.GetParamFolderByProductName(product);
             XmlHelper.SerializeToXml(fileName, datas);
         }
         #endregion

--
Gitblit v1.9.1