From 1afe548ac40cc7f975917ef9bf2e156595cf81f3 Mon Sep 17 00:00:00 2001
From: alielie <alielie@git.com>
Date: 星期四, 16 四月 2026 08:58:04 +0800
Subject: [PATCH] 优化;

---
 Plugin.TestResult/ViewControl.xaml.cs |  171 +++++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 136 insertions(+), 35 deletions(-)

diff --git a/Plugin.TestResult/ViewControl.xaml.cs b/Plugin.TestResult/ViewControl.xaml.cs
index 47d1fe5..d7e2f96 100644
--- a/Plugin.TestResult/ViewControl.xaml.cs
+++ b/Plugin.TestResult/ViewControl.xaml.cs
@@ -4,6 +4,7 @@
 using HMI.Core.Manager;
 using HMI.Core.Setting;
 using HMI.Core.Util;
+using HMI.LogUtil;
 using HMI.StdControl;
 using HMI.UI.Util;
 using log4net;
@@ -11,6 +12,7 @@
 using NationalInstruments.TestStand.Interop.UI.Ax;
 using PLCHelper;
 using Plugin.TestResult.Util;
+using Plugin.TsSupport;
 using System;
 using System.Collections.Generic;
 using System.ComponentModel;
@@ -25,10 +27,6 @@
     /// </summary>
     public partial class ViewControl : PluginMaskControl, IAlarmHandler
     {
-        /// <summary>
-        /// 娴嬭瘯搴忓垪鎿嶄綔鍙ユ焺
-        /// </summary>
-        private SequenceContext SequenceContext = null;
 
         private System.Timers.Timer timer;
 
@@ -59,6 +57,22 @@
             set => Set(ref _fileName, value);
         }
 
+        private bool enableManualDebug;
+        public bool EnableManualDebug
+        {
+            get => enableManualDebug;
+            set
+            {
+                if (IsRunning)
+                {
+                    MsgBoxHelper2.Warn("璇峰厛缁撴潫鑷姩娴嬭瘯");
+                    return;
+                }
+                testResultView.inManualDebugMode = value;
+                Set(ref enableManualDebug, value);
+            }
+        }
+
         public override void SetLogger(ILog logger)
         {
             base.SetLogger(logger);
@@ -74,13 +88,20 @@
                 Set(ref isRunning, value);
                 testResultView.IsRunning = value;
                 this.modelSelect.IsEnabled = !value;
-                this.btnStart.IsEnabled = !value;
                 this.btnStop.IsEnabled = value;
                 stdEnableMes.CbEnabled = !value;
             }
         }
 
         private bool AutoExecuteSeq = true;
+
+        #region TS鐩稿叧
+
+        /// <summary>
+        /// 娴嬭瘯搴忓垪鎿嶄綔鍙ユ焺
+        /// </summary>
+        private SequenceContext SequenceContext = null;
+        #endregion
 
         public ViewControl()
         {
@@ -90,9 +111,18 @@
             timer.Interval = 1000;
             timer.Elapsed += Timer_Elapsed;
             InitializeComponent();
-            testResultView.testApp.ExitApplication += new EventHandler(this.axApplicationMgr_ExitApplication);
-            testResultView.testApp.UIMessageEvent += new _ApplicationMgrEvents_UIMessageEventEventHandler(this.axApplicationMgr_UIMessageEvent);
-            testResultView.testApp.ExecutionClosed += new _ApplicationMgrEvents_ExecutionClosedEventHandler(this.axApplicationMgr_ExecutionClosed);
+
+            if (testResultView.executionWrapper is TsExecutionWrapper tsWrapper)
+            {
+                tsWrapper.AxApplicationMgr.ExitApplication += new EventHandler(this.axApplicationMgr_ExitApplication);
+                tsWrapper.AxApplicationMgr.UIMessageEvent += new _ApplicationMgrEvents_UIMessageEventEventHandler(this.axApplicationMgr_UIMessageEvent);
+                tsWrapper.AxApplicationMgr.ExecutionClosed += new _ApplicationMgrEvents_ExecutionClosedEventHandler(this.axApplicationMgr_ExecutionClosed);
+            }
+
+
+            //testResultView.testApp.ExitApplication += new EventHandler(this.axApplicationMgr_ExitApplication);
+            //testResultView.testApp.UIMessageEvent += new _ApplicationMgrEvents_UIMessageEventEventHandler(this.axApplicationMgr_UIMessageEvent);
+            //testResultView.testApp.ExecutionClosed += new _ApplicationMgrEvents_ExecutionClosedEventHandler(this.axApplicationMgr_ExecutionClosed);
         }
 
         private void Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
@@ -144,26 +174,35 @@
                 testResultView.testSeqFile = string.Empty;
                 FileName = string.Empty;
             }
+            RefreshUIConfig();
         }
 
-        public override void DoClose(object sender, EventArgs e)
+        /// <summary>
+        /// 鍒锋柊UI閰嶇疆
+        /// </summary>
+        private void RefreshUIConfig()
         {
             try
             {
-                timer?.Stop();
-                testResultView.ReleaseResource();
+                /// 杩愯涓氨涓嶇
+                if (IsRunning)
+                {
+                    return;
+                }
+                bool enableManualDebug = ParameterManager.GetCommonParameterByName("EnableManualDebug", false);
+                if (enableManualDebug)
+                {
+                    FgEnableManualDebug.Visibility = Visibility.Visible;
+                }
+                else
+                {
+                    FgEnableManualDebug.Visibility = Visibility.Collapsed;
+                    EnableManualDebug = false;
+                }
             }
-            catch
+            catch (Exception ex)
             {
-            }
-        }
-
-        public override void OnClose(object sender, CancelEventArgs e)
-        {
-            if (IsRunning)
-            {
-                MsgBoxHelper2.Warn("璇峰厛鍋滄鑰佸寲娴嬭瘯锛�");
-                e.Cancel = true;
+                log.Error("RefreshUIConfig Error.", ex);
             }
         }
 
@@ -265,18 +304,20 @@
                 productSource.Add(prd.Name);
             }
             testResultView.SetProductSource(productSource);
+            testResultView.SetCurrentProduct(null);
 
-            string model = testResultView.engine.Globals.GetValString("ProductModel", 1);
-            if (!string.IsNullOrEmpty(model))
-            {
-                this.modelSelect.SelectedItem = model;
-                testResultView.SetCurrentProduct(model);
-            }
-            else if (products.Count > 0)
-            {
-                this.modelSelect.SelectedIndex = 0;
-                testResultView.SetCurrentProduct(products[0].Name);
-            }
+            //string model = testResultView.executionWrapper.GetStationGlobalValue<string>("ProductModel", 1);
+            ////testResultView.engine.Globals.GetValString("ProductModel", 1);
+            //if (!string.IsNullOrEmpty(model))
+            //{
+            //    this.modelSelect.SelectedItem = model;
+            //    testResultView.SetCurrentProduct(model);
+            //}
+            //else if (products.Count > 0)
+            //{
+            //    this.modelSelect.SelectedIndex = 0;
+            //    testResultView.SetCurrentProduct(products[0].Name);
+            //}
         }
 
         private void modelSelect_SelectionChanged(object sender, SelectionChangedEventArgs e)
@@ -285,8 +326,12 @@
             {
                 string currentModel = this.modelSelect.SelectedItem.ToString();
                 List<ParameterData> parameters = ProductManager.GetParametersByProductName(currentModel);
-                testResultView.engine.Globals.SetValString("ProductModel", 0, currentModel);
-                testResultView.engine.CommitGlobalsToDisk(promptOnSaveConflicts: false);
+
+                testResultView.executionWrapper.SetStationGlobalValue<string>("ProductModel", 0, currentModel);
+                testResultView.executionWrapper.CommitToDisk(false);
+
+                //testResultView.engine.Globals.SetValString("ProductModel", 0, currentModel);
+                //testResultView.engine.CommitGlobalsToDisk(promptOnSaveConflicts: false);
             }
             catch (Exception ex)
             {
@@ -304,6 +349,8 @@
                     IsRunning = false;
                     return;
                 }
+                LogHelper.Info("UI", "鎬诲惎鍔ㄦ寜閽寜涓�", out _);
+                log.Info("鎬诲惎鍔ㄦ寜閽寜涓�");
                 ShowMask(() =>
                 {
                     testResultView.StartTestSequence();
@@ -332,7 +379,30 @@
         {
             try
             {
+                bool breakStop = false;
+                foreach (var oven in TestResultView.tables)
+                {
+                    if (oven.IsTesting)
+                    {
+                        breakStop = true;
+                        break;
+                    }
+                }
+                if (breakStop)
+                {
+                    MsgBoxHelper2.Warn(this.lang("Tr.OvenIsTesting"));
+                    return;
+                }
+
+                if (MsgBoxHelper2.WarnChoose(this.lang("Tr.MakeSureStopAllTest")) != MessageBoxResult.OK)
+                {
+                    return;
+                }
+
+                LogHelper.Info("UI", "鎬诲仠姝㈡寜閽寜涓�", out _);
+                log.Info("鎬诲仠姝㈡寜閽寜涓�");
                 testResultView.StopTest();
+                /// 宸茬粡鍔犱簡WaitForExit,杩欓噷鍙互鏀逛负false
                 IsRunning = false;
             }
             catch (Exception ex)
@@ -368,13 +438,15 @@
 
         private void StdEnableMes_ValueChanged(object sender, StdUIEventArg e)
         {
-            testResultView.SequenceContext?.StationGlobals.SetValBoolean($"SystemSetting.{e.StringValue}", 1, e.BoolValue);
+            testResultView.executionWrapper.SetStationGlobalValue<bool>($"SystemSetting.{e.StringValue}", 1, e.BoolValue);
+            //testResultView.SequenceContext?.StationGlobals.SetValBoolean($"SystemSetting.{e.StringValue}", 1, e.BoolValue);
         }
 
         public void HandleAlarm(AlarmText alarm)
         {
             if (alarm.Level >= 4 && TestResultView.tables != null)
             {
+                log.Info($"4绾ф姤璀﹁Е鍙�: [{alarm.AlarmInfo}],灏嗗仠姝㈡墍鏈夌倝浣撴祴璇�");
                 foreach (var oven in TestResultView.tables)
                 {
                     testResultView.SetStartFlag(oven.index, false);
@@ -398,8 +470,37 @@
             if (alarm.Level >= 3)
             {
                 /// 3绾т互涓婄殑鎶ヨ浼氬仠姝㈡祴璇�
+                log.Info($"3绾ф姤璀﹁Е鍙�: [{alarm.AlarmInfo}],灏嗗仠姝㈣�佸寲鐐塠{targetOven.title}]娴嬭瘯");
                 testResultView.SetStartFlag(targetOven.index, false);
             }
         }
+
+        public override void Active()
+        {
+            base.Active();
+            LoadProduct();
+            RefreshUIConfig();
+        }
+
+        public override void OnClose(object sender, CancelEventArgs e)
+        {
+            if (IsRunning)
+            {
+                MsgBoxHelper2.Warn("璇峰厛鍋滄鑰佸寲娴嬭瘯锛�");
+                e.Cancel = true;
+            }
+        }
+
+        public override void DoClose(object sender, EventArgs e)
+        {
+            try
+            {
+                timer?.Stop();
+                testResultView.ReleaseResource();
+            }
+            catch
+            {
+            }
+        }
     }
 }

--
Gitblit v1.9.1