alielie
2025-10-13 e3868d4d61ded0e76fc8fe3fdacdd9e6d9113cf1
Plugin.TestResult/TestResultView.xaml.cs
@@ -5,6 +5,7 @@
using NationalInstruments.TestStand.Utility;
using Plugin.TestResult_WPF.Constant;
using Plugin.TestResult_WPF.Model;
using Plugin.TsSupport;
using System;
using System.Collections.Generic;
using System.Windows;
@@ -35,7 +36,7 @@
        /// <summary>
        /// 测试序列操作句柄
        /// </summary>
        private SequenceContext SequenceContext = null;
        public SequenceContext SequenceContext { get; private set; } = null;
        /// <summary>
        /// 测试模型序列
        /// </summary>
@@ -45,6 +46,8 @@
        {
        }
        public bool IsRunning { get; set; } = false;
        public TestResultView(BaseConfig config)
        {
@@ -63,16 +66,16 @@
            InitializeComponent();
            testApp = new AxApplicationMgr();
            testApp.ExitApplication += new EventHandler(this.axApplicationMgr_ExitApplication);
            testApp.UIMessageEvent += new _ApplicationMgrEvents_UIMessageEventEventHandler(this.axApplicationMgr_UIMessageEvent);
            testApp.ExecutionClosed += new _ApplicationMgrEvents_ExecutionClosedEventHandler(this.axApplicationMgr_ExecutionClosed);
            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();
            InitMainGrid();
            //InitTestStandEngine();
            //StartTestSequence();
        }
@@ -90,27 +93,37 @@
                Random random = new Random(i * 13);
                sb.Elapsed += (s, e) =>
                {
                    table.RefreshCount(1, 0);
                    table.SetTemperature(random.Next(100));
                    for (int j = 0; j < 3; j++)
                    {
                        table.SetTemperature(j + "89", random.Next(100));
                    }
                    table.SetOkCount(random.Next(100));
                    table.SetNgCount(random.Next(100));
                    //table.SetOkCount(random.Next(100));
                    //table.SetNgCount(random.Next(100));
                    table.SetStatus(CommonStatus.GetRandomStatus());
                    table.SetStartTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                    table.SetEndTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                    table.SetConsumeTime(random.Next(10000));
                    tables[0].GetSingleCell(0).AddElectricData(random.Next(100));
                    var cell = table.GetSingleCell(random.Next(table.GetSize()));
                    var cell = tables[0].GetSingleCell(0);//table.GetSingleCell(random.Next(table.GetSize()));
                    cell.SetStatus(CommonStatus.GetRandomStatus());
                    cell.SetInfos(random.Next(1000) + "", random.Next(1000) + "");
                    cell.SetInfos(new Info
                    {
                        step = random.Next(1000) + "",
                        value = random.Next(1000) + ""
                    });
                    table.SetStatusText(DateTime.Now + "");
                };
                sb.Start();
            }
        }
        private string CountIniPath;
        public void SetCountIniPath(string countIniPath)
        {
            CountIniPath = countIniPath;
        }
        public void InitMainGrid()
@@ -131,7 +144,7 @@
            for (int n = 0; n < cellCount; n++)
            {
                string name = n < names.Length ? names[n] : "";
                DataTable child = new DataTable(this, n, name, config);
                DataTable child = new DataTable(this, n, name, CountIniPath, config);
                mainGrid.Children.Add(child);
                tables[n] = child;
                nameTables[name] = child;
@@ -145,7 +158,7 @@
        public DataTable GetDataTable(int index)
        {
            if (index > 0 && index < tables.Length) return tables[index];
            if (index >= 0 && index < tables.Length) return tables[index];
            return null;
        }
@@ -162,7 +175,6 @@
                this.testApp.LoginOnStart = false;
                this.testApp.Start();
                this.modeSeq = this.engine.GetSequenceFileEx(@"C:\Program Files\National Instruments\TestStand 2020\Components\Models\TestStandModels\ParallelModel.seq");
            }
            catch (Exception ex)
            {
@@ -319,6 +331,16 @@
                    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);
                    }
                    return;
                }
                if (MethodCode == 7)
@@ -363,6 +385,46 @@
                    tables[ovenIndex].GetSingleCell(cellIndex).ClearInfo();
                    return;
                }
                if (MethodCode == 12)
                {
                    /// 保存温度文件
                    strData = e.uiMsg.StringData;
                    string[] datas = strData.Split(';');
                    int ovenIndex = int.Parse(datas[0]);
                    string folder = datas[1];
                    tables[ovenIndex].SaveTempFile(folder);
                    return;
                }
                if (MethodCode == 13)
                {
                    /// 添加电流数据
                    strData = e.uiMsg.StringData;
                    string[] datas = strData.Split(';');
                    int ovenIndex = int.Parse(datas[0]);
                    int cellIndex = int.Parse(datas[1]);
                    double eData = double.Parse(datas[2]);
                    tables[ovenIndex].GetSingleCell(cellIndex).AddElectricData(eData);
                    return;
                }
                if (MethodCode == 14)
                {
                    /// 清空电流数据
                    strData = e.uiMsg.StringData;
                    int ovenIndex = int.Parse(strData);
                    tables[ovenIndex].ClearElectricData();
                    return;
                }
                if (MethodCode == 15)
                {
                    /// 清空电流数据
                    strData = e.uiMsg.StringData;
                    string[] datas = strData.Split(';');
                    int ovenIndex = int.Parse(datas[0]);
                    int cellIndex = int.Parse(datas[1]);
                    string filePath = datas[2];
                    tables[ovenIndex].GetSingleCell(cellIndex).SaveElectricDataToCSV(filePath);
                    return;
                }
            }
            catch (Exception ex)
            {
@@ -373,17 +435,56 @@
        public void SetStartFlag(int index, bool data)
        {
            if (this.SequenceContext == null) return;
            char name = (char)(index + 65);
            string name = tables[index].title;
            string key = $"StationState.Start_{name}";
            this.engine.Globals.SetValBoolean(key, 0, data);
            bool val = this.engine.Globals.GetValBoolean(key, 0);
            this.engine.Globals.SetValBoolean(key, 1, data);
            //bool val = this.engine.Globals.GetValBoolean(key, 0);
            //this.SequenceContext.StationGlobals.SetValBoolean(key, 0, data);
            //bool val = this.SequenceContext.StationGlobals.GetValBoolean(key, 0);
        }
        public void SetSnrToSeqContext(int index, string snr)
        public void ReleaseResource()
        {
            testApp.ExitApplication -= this.axApplicationMgr_ExitApplication;
            testApp.UIMessageEvent -= this.axApplicationMgr_UIMessageEvent;
            testApp.ExecutionClosed -= this.axApplicationMgr_ExecutionClosed;
            foreach (var table in tables)
            {
                table.RelaseResource();
            }
        }
        /// <summary>
        /// 计数清零
        /// </summary>
        public void ClearNumber()
        {
            foreach (var table in tables)
            {
                table.ClearNumber();
            }
        }
        public void SetProductSource(List<string> productSource)
        {
            foreach (var table in tables)
            {
                table.SetProductSource(productSource);
            }
        }
        public void SetCurrentProduct(string currentProduct)
        {
            foreach (var table in tables)
            {
                table.SetCurrentProduct(currentProduct);
            }
        }
        public void SetOvenProduct(int index, string product)
        {
            string LookupStr = $"StationState.ProductModel_{tables[index].title}";
            engine?.Globals?.SetValString(LookupStr, 1, product);
        }
    }
}