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

---
 Plugin.TestResult/TestResultView.xaml.cs |  140 ++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 121 insertions(+), 19 deletions(-)

diff --git a/Plugin.TestResult/TestResultView.xaml.cs b/Plugin.TestResult/TestResultView.xaml.cs
index b5877c6..4f73cfe 100644
--- a/Plugin.TestResult/TestResultView.xaml.cs
+++ b/Plugin.TestResult/TestResultView.xaml.cs
@@ -1,4 +1,6 @@
-锘縰sing NationalInstruments.TestStand.Interop.API;
+锘縰sing HMI.Core.Util;
+using HMI.UI.Util;
+using NationalInstruments.TestStand.Interop.API;
 using NationalInstruments.TestStand.Interop.UI.Ax;
 using NationalInstruments.TestStand.Utility;
 using Plugin.TestResult_WPF.Constant;
@@ -33,7 +35,7 @@
         /// <summary>
         /// 娴嬭瘯搴忓垪鎿嶄綔鍙ユ焺
         /// </summary>
-        private SequenceContext SequenceContext = null;
+        public SequenceContext SequenceContext { get; private set; } = null;
         /// <summary>
         /// 娴嬭瘯妯″瀷搴忓垪
         /// </summary>
@@ -70,7 +72,7 @@
             ((System.ComponentModel.ISupportInitialize)(this.testApp)).BeginInit();//myClient涓虹涓夋柟鎺т欢鍚�
             host.Child = testApp;
             ((System.ComponentModel.ISupportInitialize)(this.testApp)).EndInit();
-            InitMainGrid();
+
             //InitTestStandEngine();
             //StartTestSequence();
         }
@@ -88,27 +90,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()
@@ -129,7 +141,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;
@@ -143,7 +155,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;
         }
 
@@ -160,11 +172,11 @@
                 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)
             {
-                throw new Exception("鍒濆鍖朤S寮曟搸澶辫触:" + ex.Message);
+                ViewControl.Logger.Error("InitTestStandEngine Failed.", ex);
+                throw new Exception($"{this.lang("Ts.InitTestStandEngineFail")}: {ex.Message}");
             }
         }
 
@@ -179,7 +191,8 @@
             }
             catch (Exception ex)
             {
-                throw new Exception("鍚姩娴嬭瘯搴忓垪澶辫触:" + ex.Message);
+                ViewControl.Logger.Error("StartTestSequence Failed.", ex);
+                throw new Exception($"{this.lang("Ts.StartTestSequenceFailed")}: {ex.Message}");
             }
         }
 
@@ -198,7 +211,8 @@
             }
             catch (Exception ex)
             {
-                throw new Exception(ex.Message);
+                ViewControl.Logger.Error("StopTest Failed.", ex);
+                throw new Exception($"{this.lang("Ts.StopTestSequenceFailed")}: {ex.Message}");
             }
         }
 
@@ -216,7 +230,8 @@
             }
             catch (Exception ex)
             {
-                MessageBox.Show("閲婃斁娴嬭瘯搴忓垪澶辫触:" + ex.Message);
+                MsgBoxHelper.Error(Window.GetWindow(this),
+                    $"{this.lang("Ts.ReleaseSequenceFileFail")}: {ex.Message}");
             }
         }
 
@@ -313,6 +328,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)
@@ -357,17 +382,58 @@
                     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)
             {
-
+                ViewControl.Logger.Warn("TestStand Event Error.", ex);
             }
         }
 
         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);
@@ -375,9 +441,45 @@
             //bool val = this.SequenceContext.StationGlobals.GetValBoolean(key, 0);
         }
 
-        public void SetSnrToSeqContext(int index, string snr)
+        public void ReleaseResource()
         {
+            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);
         }
     }
 }

--
Gitblit v1.9.1