From 0940f31b7eba1cf6b6a8c1fca72d97cf686e79f2 Mon Sep 17 00:00:00 2001
From: alielie <alielie@git.com>
Date: 星期五, 04 七月 2025 10:43:00 +0800
Subject: [PATCH] 优化插件,完善TreeListView

---
 SimpleUtil/HMI.Simple.Util/ParameterUtil.cs |  185 ++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 152 insertions(+), 33 deletions(-)

diff --git a/SimpleUtil/HMI.Simple.Util/ParameterUtil.cs b/SimpleUtil/HMI.Simple.Util/ParameterUtil.cs
index e979546..7b86228 100644
--- a/SimpleUtil/HMI.Simple.Util/ParameterUtil.cs
+++ b/SimpleUtil/HMI.Simple.Util/ParameterUtil.cs
@@ -1,4 +1,4 @@
-锘縰sing Microsoft.Win32;
+锘縰sing NationalInstruments.TestStand.Interop.API;
 using System;
 using System.Collections.Generic;
 using System.IO;
@@ -8,8 +8,12 @@
 {
     public class ParameterUtil
     {
-        private static string Company = "JingCe";
-        private static string Program = "HMI";
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="path"></param>
+        /// <param name="name"></param>
+        /// <returns></returns>
         public static string GetCommonParameterValue(string path, string name)
         {
             if (!File.Exists(path)) return null;
@@ -29,38 +33,21 @@
             errMsg = string.Empty;
             try
             {
-                string registryPath = $@"SOFTWARE\{Company}\{Program}";
-                // 灏濊瘯鎵撳紑娉ㄥ唽琛ㄩ敭
-                using (RegistryKey key = Registry.LocalMachine.OpenSubKey(registryPath))
+                string value = RegUtil.GetLocaltion();
+                string path = Path.Combine(value, "Config", "Parameter", "CommonParameter.data");
+                if (!File.Exists(path))
                 {
-                    if (key == null)
-                    {
-                        errMsg = "娉ㄥ唽琛ㄤ笉瀛樺湪锛岃鍏堣繍琛屼竴娆MI";
-                        return null;
-                    }
-
-                    string value = key.GetValue("Location")?.ToString();
-                    if (string.IsNullOrEmpty(value))
-                    {
-                        errMsg = "娉ㄥ唽琛ㄤ笉瀛樺湪锛岃鍏堣繍琛屼竴娆MI";
-                        return null;
-                    }
-                    string path = Path.Combine(value, "Config", "Parameter", "CommonParameter.data");
-                    if (!File.Exists(path))
-                    {
-                        errMsg = "鏈壘鍒伴厤缃枃浠�";
-                        return null;
-                    }
-                    List<ParameterData> datas = XmlHelper.DeserializeFromXml<List<ParameterData>>(path);
-                    ParameterData data = datas.FirstOrDefault(d => d.Name == name);
-                    if (data == null)
-                    {
-                        errMsg = "鏈壘鍒板弬鏁帮紝璇锋鏌ラ厤缃�";
-                        return null;
-                    }
-                    ;
-                    return data.Value;
+                    errMsg = "鏈壘鍒伴厤缃枃浠�";
+                    return null;
                 }
+                List<ParameterData> datas = XmlHelper.DeserializeFromXml<List<ParameterData>>(path);
+                ParameterData data = datas.FirstOrDefault(d => d.Name == name);
+                if (data == null)
+                {
+                    errMsg = "鏈壘鍒板弬鏁帮紝璇锋鏌ラ厤缃�";
+                    return null;
+                }
+                return data.Value;
             }
             catch (Exception ex)
             {
@@ -68,5 +55,137 @@
                 return null;
             }
         }
+
+        private static void WriteParameterData(SequenceContext context, ParameterData data)
+        {
+            string prefix = "SystemSetting";
+            if (data.Type == "Bool")
+            {
+                context.StationGlobals.SetValBoolean($"{prefix}.{data.Name}", 1, bool.Parse(data.Value));
+            }
+            else if (data.Type == "Int")
+            {
+                context.StationGlobals.SetValInteger64($"{prefix}.{data.Name}", 1, int.Parse(data.Value));
+            }
+            else if (data.Type == "Double")
+            {
+                context.StationGlobals.SetValNumber($"{prefix}.{data.Name}", 1, double.Parse(data.Value));
+            }
+            else
+            {
+                context.StationGlobals.SetValString($"{prefix}.{data.Name}", 1, data.Value);
+            }
+        }
+
+        /// <summary>
+        /// 灏嗗弬鏁板啓杩汦ngine鐨凷tationGlobals.StationState
+        /// </summary>
+        /// <param name="name"></param>
+        /// <returns></returns>
+        public static bool WriteConfigToContext(object instance, out string errMsg)
+        {
+            errMsg = string.Empty;
+            try
+            {
+                string value = RegUtil.GetLocaltion();
+                string path = Path.Combine(value, "Config", "Parameter", "CommonParameter.data");
+                return WriteConfigToContext(path, instance, out errMsg);
+            }
+            catch (Exception ex)
+            {
+                errMsg = ex.Message;
+                return false;
+            }
+        }
+
+        /// <summary>
+        /// 灏嗗弬鏁板啓杩汦ngine鐨凷tationGlobals.StationState
+        /// </summary>
+        /// <param name="name"></param>
+        /// <returns></returns>
+        public static bool WriteConfigToContext(string xmlPath, object instance, out string errMsg)
+        {
+            errMsg = string.Empty;
+            try
+            {
+                SequenceContext context = (SequenceContext)instance;
+                if (string.IsNullOrEmpty(xmlPath))
+                {
+                    throw new Exception("閰嶇疆鏂囦欢璺緞涓嶈兘涓虹┖");
+                }
+                if (!File.Exists(xmlPath))
+                {
+                    throw new Exception("鏈壘鍒伴厤缃枃浠�");
+                }
+                List<ParameterData> datas = XmlHelper.DeserializeFromXml<List<ParameterData>>(xmlPath);
+                foreach (var data in datas)
+                {
+                    WriteParameterData(context, data);
+                }
+                return true;
+            }
+            catch (Exception ex)
+            {
+                errMsg = ex.Message;
+                return false;
+            }
+        }
+
+        /// <summary>
+        /// 灏嗗弬鏁板啓杩汦ngine鐨凷tationGlobals.StationState
+        /// </summary>
+        /// <param name="name"></param>
+        /// <returns></returns>
+        public static bool WriteConfigToEngineByName(string xmlPath, object instance, string name, out string errMsg)
+        {
+            errMsg = string.Empty;
+            try
+            {
+                SequenceContext context = (SequenceContext)instance;
+                if (string.IsNullOrEmpty(xmlPath))
+                {
+                    throw new Exception("閰嶇疆鏂囦欢璺緞涓嶈兘涓虹┖");
+                }
+                if (!File.Exists(xmlPath))
+                {
+                    throw new Exception("鏈壘鍒伴厤缃枃浠�");
+                }
+                List<ParameterData> datas = XmlHelper.DeserializeFromXml<List<ParameterData>>(xmlPath);
+                ParameterData data = datas.FirstOrDefault(d => d.Name == name);
+                if (data == null)
+                {
+                    throw new Exception("鏈壘鍒板弬鏁帮紝璇锋鏌ラ厤缃�");
+                }
+                WriteParameterData(context, data);
+                return true;
+            }
+            catch (Exception ex)
+            {
+                errMsg = ex.Message;
+                return false;
+            }
+        }
+
+        /// <summary>
+        /// 灏嗗弬鏁板啓杩汦ngine鐨凷tationGlobals.StationState
+        /// </summary>
+        /// <param name="name"></param>
+        /// <returns></returns>
+        public static bool WriteConfigToEngineByName(object instance, string name, out string errMsg)
+        {
+            errMsg = string.Empty;
+            try
+            {
+                SequenceContext engine = (SequenceContext)instance;
+                string value = RegUtil.GetLocaltion();
+                string path = Path.Combine(value, "Config", "Parameter", "CommonParameter.data");
+                return WriteConfigToEngineByName(path, instance, name, out errMsg);
+            }
+            catch (Exception ex)
+            {
+                errMsg = ex.Message;
+                return false;
+            }
+        }
     }
 }

--
Gitblit v1.9.1