From c1c3772a11b1f3fbad8846cc714120771d85fa53 Mon Sep 17 00:00:00 2001
From: alielie <alielie@git.com>
Date: 星期四, 12 六月 2025 20:10:59 +0800
Subject: [PATCH] 新增SeqEditor

---
 Plugin.TestResult/DataTable.xaml.cs |   96 +++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 94 insertions(+), 2 deletions(-)

diff --git a/Plugin.TestResult/DataTable.xaml.cs b/Plugin.TestResult/DataTable.xaml.cs
index 39e223c..200341f 100644
--- a/Plugin.TestResult/DataTable.xaml.cs
+++ b/Plugin.TestResult/DataTable.xaml.cs
@@ -1,8 +1,11 @@
 锘縰sing HMI.Core.Util;
 using HMI.Util;
+using Plugin.TestResult;
 using Plugin.TestResult_WPF.Model;
+using Plugin.TestResult_WPF.Util;
 using SuperSocket.SocketBase.Protocol;
 using System;
+using System.CodeDom.Compiler;
 using System.Collections.Generic;
 using System.ComponentModel;
 using System.IO;
@@ -64,7 +67,7 @@
             set { RaiseAndSetIfchanged(ref tcpServerInfo, value); }
         }
 
-
+        private static CommonCodeParser codeParser = new CommonCodeParser();
         private readonly int index;
         private readonly int cellCount;
         private readonly string chartTitle;
@@ -97,6 +100,7 @@
             this.chartTitle = config.MainChartTitle;
             DataContext = this;
             InitializeComponent();
+            mainGrid.Columns = config.PositionColumn;
             this.chart = new Chart(this.chartTitle, false, config.MaxSize, config.RefreshInterval);
             this.multiChart = new Chart(config.DetailChartTitle, true, config.MaxSize, config.RefreshInterval)
             {
@@ -108,7 +112,7 @@
 
             for (int i = 0; i < this.cellCount; i++)
             {
-                var cell = new SingleCell(title, i, config.CellListMaxSize);
+                var cell = new SingleCell(title, i, config.CellListMaxSize, countIniPath);
                 mainGrid.Children.Add(cell);
                 cells[i] = cell;
             }
@@ -202,6 +206,8 @@
             }
         }
 
+        private Scanner scanner;
+
         private void Window_Closed(object sender, EventArgs e)
         {
             window = null;
@@ -212,6 +218,52 @@
             ClearChartData();
             parent.SetStartFlag(this.index, true);
         }
+
+        private void ScanWindow_Click(object sender, RoutedEventArgs e)
+        {
+            if (scanner != null)
+            {
+                scanner.Activate();
+            }
+            else
+            {
+                scanner = new Scanner(this.lang("Tr.ScanTitle", title))
+                {
+                    Tag = title
+                };
+                scanner.FinishBarcode += Scanner_FinishBarcode;
+                scanner.Closed += Scanner_Closed;
+                scanner.Show();
+            }
+        }
+
+        private void Scanner_Closed(object sender, EventArgs e)
+        {
+            scanner = null;
+        }
+
+        private void Scanner_FinishBarcode(object sender, BarcodeEventArg e)
+        {
+            if (parent.SequenceContext == null) return;
+            CellInfo cellInfo = codeParser.GetCellInfoByCode(e.positionCode);
+
+            string paramName = $"StationState.StartScanner_{title}";
+            parent.engine.Globals.SetValBoolean(paramName, 0, true);
+            string positionCode = e.positionCode, snrCode = e.snrCode;
+            //TODO 闇�瑕佸鍔犳潯鐮佹牎楠屽姛鑳�
+
+            //灏嗚鍒扮殑鏉$爜鍐欏叆鍒癝N涓�
+            int dutNo = Convert.ToInt16(positionCode.Split('-')[2]) - 1;
+            dutNo = this.index * this.cellCount + dutNo;
+
+            string LookupStr = $"StationState.SN[{dutNo}]";
+
+            parent.engine.Globals.SetValString(LookupStr, 0, snrCode);
+            parent.engine.CommitGlobalsToDisk(promptOnSaveConflicts: false);
+            string code = parent.engine.Globals.GetValString(LookupStr, 0);
+            parent.nameTables[cellInfo.OvenName].GetSingleCell(cellInfo.Index).SetStatus("hadCode");
+        }
+
 
         /// <summary>
         /// 娓呯┖涓や釜鍥捐〃鏁版嵁
@@ -426,5 +478,45 @@
                 Console.WriteLine(ex.ToString());
             }
         }
+
+        public void SetProductSource(List<string> productSource)
+        {
+            CbProduct.ItemsSource = productSource;
+        }
+
+        public void SetCurrentProduct(string currentProduct)
+        {
+            CbProduct.SelectedItem = currentProduct;
+        }
+
+        private void CbProduct_SelectionChanged(object sender, SelectionChangedEventArgs e)
+        {
+            if (e.AddedItems.Count > 0)
+            {
+                var str = e.AddedItems[0];
+                parent.SetOvenProduct(index, str.ToString());
+            }
+            else
+            {
+                parent.SetOvenProduct(index, "");
+            }
+        }
+
+        public void ClearElectricData()
+        {
+            foreach (var cell in cells)
+            {
+                cell.ClearElectricData();
+            }
+        }
+
+        private void Button_Click_1(object sender, RoutedEventArgs e)
+        {
+            ScannerSetting setting = new ScannerSetting()
+            {
+                Owner = Window.GetWindow(this)
+            };
+            setting.Open(true, this.title);
+        }
     }
 }

--
Gitblit v1.9.1