From 9d1660270272180cd71147d6ddd53d1382643d2e Mon Sep 17 00:00:00 2001
From: wenxiangchao <wenxiangchao@ihengxin.com.cn>
Date: 星期一, 02 十一月 2026 18:00:14 +0800
Subject: [PATCH] merge: 并入远程 Initial commit 作为历史根节点

---
 Plugin.TestResult/TestResultView.xaml.cs |  145 +++++++++++++++++++----------------------------
 1 files changed, 59 insertions(+), 86 deletions(-)

diff --git a/Plugin.TestResult/TestResultView.xaml.cs b/Plugin.TestResult/TestResultView.xaml.cs
index 9182ea0..a207482 100644
--- a/Plugin.TestResult/TestResultView.xaml.cs
+++ b/Plugin.TestResult/TestResultView.xaml.cs
@@ -2,13 +2,11 @@
 using HMI.Core.Manager;
 using HMI.Core.Util;
 using HMI.UI.Util;
-using NationalInstruments.TestStand.Interop.API;
 using NationalInstruments.TestStand.Interop.UI.Ax;
 using Plugin.TestResult_WPF.Model;
 using Plugin.TsSupport;
 using System;
 using System.Collections.Generic;
-using System.Runtime.InteropServices;
 using System.Windows;
 using System.Windows.Controls;
 
@@ -143,26 +141,19 @@
 
             InitializeComponent();
 
-            executionWrapper = new TsExecutionWrapper(); //new TsExecutionWrapper();
-            if (executionWrapper is TsExecutionWrapper tsWrapper)
+            
+        }
+
+        private void ExecutionWrapper_UIMessageEvent(object sender, UIMessageEvent e)
+        {
+            try
             {
-                tsWrapper.AxApplicationMgr.ExitApplication += this.axApplicationMgr_ExitApplication;
-                tsWrapper.AxApplicationMgr.UIMessageEvent += this.axApplicationMgr_UIMessageEvent;
-                tsWrapper.AxApplicationMgr.ExecutionClosed += this.axApplicationMgr_ExecutionClosed;
-                ((System.ComponentModel.ISupportInitialize)(tsWrapper.AxApplicationMgr)).BeginInit();//myClient涓虹涓夋柟鎺т欢鍚�
-                host.Child = tsWrapper.AxApplicationMgr;
-                ((System.ComponentModel.ISupportInitialize)(tsWrapper.AxApplicationMgr)).EndInit();
+                HandleUIMessage(e.EventCode, Convert.ToInt16(e.NumberData), e.StrData, e.Data);
             }
+            catch (Exception ex)
+            {
 
-
-
-            //testApp = TestAppManager.GetAxApplicationMgr();
-            //testApp.ExitApplication += this.axApplicationMgr_ExitApplication;
-            //testApp.UIMessageEvent += this.axApplicationMgr_UIMessageEvent;
-            //testApp.ExecutionClosed += this.axApplicationMgr_ExecutionClosed;
-            //((System.ComponentModel.ISupportInitialize)(this.testApp)).BeginInit();//myClient涓虹涓夋柟鎺т欢鍚�
-            //host.Child = testApp;
-            //((System.ComponentModel.ISupportInitialize)(this.testApp)).EndInit();
+            }
         }
 
         private void Refresh()
@@ -217,10 +208,26 @@
         /// <summary>
         /// 鍚姩娴嬭瘯搴忓垪
         /// </summary>
-        public void InitTestStandEngine()
+        public void InitTestStandEngine(bool isTap)
         {
             try
             {
+                if (isTap)
+                {
+                    executionWrapper = new TapWrapper();
+                }
+                else
+                {
+                    executionWrapper = new TeststandWrapper();
+                }
+                executionWrapper.UIMessageEvent += ExecutionWrapper_UIMessageEvent;
+
+                if (executionWrapper is TeststandWrapper tsWrapper)
+                {
+                    ((System.ComponentModel.ISupportInitialize)(tsWrapper.AxApplicationMgr)).BeginInit();
+                    host.Child = tsWrapper.AxApplicationMgr;
+                    ((System.ComponentModel.ISupportInitialize)(tsWrapper.AxApplicationMgr)).EndInit();
+                }
                 //this.engine = this.testApp.GetEngine();
                 //this.engine.PersistBreakpoints = false;
                 //this.testApp.IsEditor = true;
@@ -258,7 +265,7 @@
             try
             {
                 executionWrapper?.SetStationGlobalValue<bool>("StationState.StopTest", 0, true, true);
-                
+
                 try
                 {
                     executionWrapper?.WaitForExit();
@@ -284,12 +291,14 @@
             }
         }
 
+        [Obsolete]
         private void axApplicationMgr_ExitApplication(object sender, EventArgs e)
         {
             //Environment.ExitCode = testApp.ExitCode;
             //TSHelper.DoSynchronousGCForCOMObjectDestruction();
         }
 
+        [Obsolete]
         private void axApplicationMgr_ExecutionClosed(object sender, _ApplicationMgrEvents_ExecutionClosedEvent e)
         {
             try
@@ -303,31 +312,23 @@
             }
         }
 
-        private void axApplicationMgr_UIMessageEvent(object sender, _ApplicationMgrEvents_UIMessageEventEvent e)
+
+        private void HandleUIMessage(int EventCase, int MethodCode, string strData, object xData)
         {
             try
             {
-                int EventCase = Convert.ToInt32(e.uiMsg.Event);
-                int MethodCode = Convert.ToInt16(e.uiMsg.NumericData);
-                string strData;
-
                 if (EventCase != 10014) return;
 
                 if (MethodCode == 0)
                 {
                     /// 璁剧疆鍙ユ焺
-                    //this.SequenceContext = (SequenceContext)e.uiMsg.ActiveXData;
-                    if (executionWrapper is TsExecutionWrapper tsWrapper)
-                    {
-                        tsWrapper.context = (SequenceContext)e.uiMsg.ActiveXData;
-                    }
+                    executionWrapper.SetContext(xData);
                     return;
                 }
 
                 if (MethodCode == 1)
                 {
                     /// 鏇存柊鐐夊瓙鐘舵��
-                    strData = e.uiMsg.StringData;
                     string[] datas_10014 = strData.Split(';');
                     int ovenIndex = int.Parse(datas_10014[0]);
 
@@ -338,7 +339,6 @@
                 if (MethodCode == 2)
                 {
                     /// 鏇存柊鐐夊瓙鏁伴噺淇℃伅
-                    strData = e.uiMsg.StringData;
                     string[] datas_10014 = strData.Split(';');
                     int ovenIndex = int.Parse(datas_10014[0]);
 
@@ -351,7 +351,6 @@
                 if (MethodCode == 3)
                 {
                     /// 鏇存柊鐐夊瓙鏃堕棿淇℃伅
-                    strData = e.uiMsg.StringData;
                     string[] datas_10014 = strData.Split(';');
                     int ovenIndex = int.Parse(datas_10014[0]);
                     string startTime = datas_10014[1];
@@ -372,7 +371,6 @@
                 if (MethodCode == 4)
                 {
                     /// 鏇存柊鑰佸寲鐐夊簳閮ㄧ姸鎬佹爮
-                    strData = e.uiMsg.StringData;
                     string[] datas_10014 = strData.Split(';');
                     int ovenIndex = int.Parse(datas_10014[0]);
 
@@ -383,7 +381,6 @@
                 if (MethodCode == 5)
                 {
                     /// 閲囬泦鐐夋俯搴�
-                    strData = e.uiMsg.StringData;
                     string[] datas_10016 = strData.Split(';');
                     int ovenIndex = int.Parse(datas_10016[0]);
 
@@ -399,29 +396,28 @@
                 }
                 if (MethodCode == 6)
                 {
-                    /// 鏇存柊绌翠綅鐘舵��
-                    strData = e.uiMsg.StringData;
-                    string[] datas_10015 = strData.Split(';');
-                    int ovenIndex = int.Parse(datas_10015[0]);
-                    int cellIndex = int.Parse(datas_10015[1]);
-                    string status_10015 = datas_10015[2];
-                    tables[ovenIndex].GetSingleCell(cellIndex).SetStatus(status_10015);
+                    Dispatcher.Invoke(() =>
+                    {/// 鏇存柊绌翠綅鐘舵��
+                        string[] datas_10015 = strData.Split(';');
+                        int ovenIndex = int.Parse(datas_10015[0]);
+                        int cellIndex = int.Parse(datas_10015[1]);
+                        string status_10015 = datas_10015[2];
+                        tables[ovenIndex].GetSingleCell(cellIndex).SetStatus(status_10015);
 
-                    if (status_10015 == "OK" || status_10015 == "ok")
-                    {
-                        tables[ovenIndex].RefreshCount(1, 0);
-                    }
-                    else if (status_10015 == "ng" || status_10015 == "NG")
-                    {
-                        tables[ovenIndex].RefreshCount(0, 1);
-                    }
-
+                        if (status_10015 == "OK" || status_10015 == "ok")
+                        {
+                            tables[ovenIndex].RefreshCount(1, 0);
+                        }
+                        else if (status_10015 == "ng" || status_10015 == "NG")
+                        {
+                            tables[ovenIndex].RefreshCount(0, 1);
+                        }
+                    });
                     return;
                 }
                 if (MethodCode == 7)
                 {
                     /// 鏇存柊绌翠綅鍙傛暟
-                    strData = e.uiMsg.StringData;
                     string[] datas_10015 = strData.Split(';');
                     int ovenIndex = int.Parse(datas_10015[0]);
                     int cellIndex = int.Parse(datas_10015[1]);
@@ -446,7 +442,6 @@
                 if (MethodCode == 10)
                 {
                     /// 娓呯┖鐐夊瓙鐨勬俯搴﹀浘琛�
-                    strData = e.uiMsg.StringData;
                     int ovenIndex = int.Parse(strData);
                     tables[ovenIndex].ClearChartData();
                     return;
@@ -454,7 +449,6 @@
                 if (MethodCode == 11)
                 {
                     /// 娓呴櫎绌翠綅鍙傛暟
-                    strData = e.uiMsg.StringData;
                     string[] datas_10015 = strData.Split(';');
                     int ovenIndex = int.Parse(datas_10015[0]);
                     int cellIndex = int.Parse(datas_10015[1]);
@@ -465,7 +459,6 @@
                 if (MethodCode == 12)
                 {
                     /// 淇濆瓨鐐変綋娓╁害鏂囦欢
-                    strData = e.uiMsg.StringData;
                     string[] datas = strData.Split(';');
                     int ovenIndex = int.Parse(datas[0]);
                     string folder = datas[1];
@@ -475,7 +468,6 @@
                 if (MethodCode == 13)
                 {
                     /// 娣诲姞鐢垫祦鏁版嵁
-                    strData = e.uiMsg.StringData;
                     string[] datas = strData.Split(';');
                     int ovenIndex = int.Parse(datas[0]);
                     int cellIndex = int.Parse(datas[1]);
@@ -487,7 +479,6 @@
                 if (MethodCode == 14)
                 {
                     /// 娓呯┖鐢垫祦鍜岀數鍘嬫暟鎹�
-                    strData = e.uiMsg.StringData;
                     int ovenIndex = int.Parse(strData);
                     tables[ovenIndex].ClearCellData();
                     //tables[ovenIndex].ClearElectricData();
@@ -499,7 +490,6 @@
                 if (MethodCode == 15)
                 {
                     /// 淇濆瓨鐢垫祦鏁版嵁
-                    strData = e.uiMsg.StringData;
                     string[] datas = strData.Split(';');
                     int ovenIndex = int.Parse(datas[0]);
                     int cellIndex = int.Parse(datas[1]);
@@ -511,7 +501,6 @@
                 if (MethodCode == 16)
                 {
                     /// 娣诲姞鐢靛帇鍥捐〃鏁版嵁
-                    strData = e.uiMsg.StringData;
                     string[] datas = strData.Split(';');
                     int ovenIndex = int.Parse(datas[0]);
                     int cellIndex = int.Parse(datas[1]);
@@ -523,7 +512,6 @@
                 if (MethodCode == 17)
                 {
                     /// 淇濆瓨鐢靛帇鏁版嵁
-                    strData = e.uiMsg.StringData;
                     string[] datas = strData.Split(';');
                     int ovenIndex = int.Parse(datas[0]);
                     int cellIndex = int.Parse(datas[1]);
@@ -535,7 +523,6 @@
                 if (MethodCode == 18)
                 {
                     /// 淇濆瓨绌翠綅娴嬭瘯鏁版嵁鍒癈SV
-                    strData = e.uiMsg.StringData;
                     string[] datas = strData.Split(';');
                     int ovenIndex = int.Parse(datas[0]);
                     int cellIndex = int.Parse(datas[1]);
@@ -546,7 +533,6 @@
                 if (MethodCode == 180)
                 {
                     /// 淇濆瓨绌翠綅娴嬭瘯鏁版嵁鍒癈SV
-                    strData = e.uiMsg.StringData;
                     string[] datas = strData.Split(';');
                     int ovenIndex = int.Parse(datas[0]);
                     int cellIndex = int.Parse(datas[1]);
@@ -558,7 +544,6 @@
                 if (MethodCode == 19)
                 {
                     /// 淇濆瓨绌翠綅娴嬭瘯鏁版嵁鍒癝qlite
-                    strData = e.uiMsg.StringData;
                     string[] datas = strData.Split(';');
                     int ovenIndex = int.Parse(datas[0]);
                     int cellIndex = int.Parse(datas[1]);
@@ -569,7 +554,6 @@
                 if (MethodCode == 20)
                 {
                     /// 娓呯┖鏉$爜
-                    strData = e.uiMsg.StringData;
                     int ovenIndex = int.Parse(strData);
                     tables[ovenIndex].ClearAllSN();
                     return;
@@ -578,7 +562,6 @@
                 if (MethodCode == 21)
                 {
                     /// 娣诲姞姘存祦鍥捐〃鏁版嵁
-                    strData = e.uiMsg.StringData;
                     string[] datas = strData.Split(';');
                     int ovenIndex = int.Parse(datas[0]);
                     int cellIndex = int.Parse(datas[1]);
@@ -591,7 +574,6 @@
 
                 if (MethodCode == 99)
                 {
-                    strData = e.uiMsg.StringData;
                     string[] datas = strData.Split(';');
                     int index = int.Parse(datas[0]);
                     if (MsgBoxHelper2.WarnChoose(datas[1], "鎻愮ず") == MessageBoxResult.OK)
@@ -613,6 +595,14 @@
             }
         }
 
+        private void axApplicationMgr_UIMessageEvent(object sender, _ApplicationMgrEvents_UIMessageEventEvent e)
+        {
+            int EventCase = Convert.ToInt32(e.uiMsg.Event);
+            int MethodCode = Convert.ToInt16(e.uiMsg.NumericData);
+            string strData = e.uiMsg.StringData;
+            HandleUIMessage(EventCase, MethodCode, strData, e.uiMsg.ActiveXData);
+        }
+
         public void SetStartFlag(int index, bool data)
         {
             string name = tables[index].title;
@@ -620,29 +610,12 @@
             string key = $"StationState.Start[{index}]";
 
             executionWrapper?.SetStationGlobalValue<bool>(key, 1, data);
-
-            if (data == false)
-            {
-                key = $"StationState.Scanner[{index}]";
-                executionWrapper?.SetStationGlobalValue<bool>(key, 1, false);
-            }
-        }
-
-        public bool? GetStartFlag(int index)
-        {
-            string key = $"StationState.Start[{index}]";
-            return executionWrapper.GetStationGlobalValue<bool>(key, 0);
         }
 
         public void ReleaseResource()
         {
-            if (executionWrapper is TsExecutionWrapper tsWrapper)
-            {
-                tsWrapper.AxApplicationMgr.ExitApplication -= this.axApplicationMgr_ExitApplication;
-                tsWrapper.AxApplicationMgr.UIMessageEvent -= this.axApplicationMgr_UIMessageEvent;
-                tsWrapper.AxApplicationMgr.ExecutionClosed -= this.axApplicationMgr_ExecutionClosed;
-            }
-
+            executionWrapper.UIMessageEvent -= ExecutionWrapper_UIMessageEvent;
+            executionWrapper.Dispose();
             foreach (var table in tables)
             {
                 table.RelaseResource();

--
Gitblit v1.9.1