alielie
2025-10-13 e3868d4d61ded0e76fc8fe3fdacdd9e6d9113cf1
Plugin.TestResult/DataTable.xaml.cs
@@ -1,6 +1,9 @@
using HMI.Core.Util;
using HMI.UI.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.Collections.Generic;
@@ -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,59 @@
            ClearChartData();
            parent.SetStartFlag(this.index, true);
        }
        private void ScanWindow_Click(object sender, RoutedEventArgs e)
        {
            if (!parent.IsRunning)
            {
                MsgBoxHelper.WarnMessage(this, "请先点击右侧启动按钮启动测试程序!", null, MessageBoxButton.OK);
                return;
            }
            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 需要增加条码校验功能
            //将读到的条码写入到SN中
            int dutNo = Convert.ToInt16(positionCode.Split('-')[2]) - 1;
            dutNo = this.index * this.cellCount + dutNo;
            string LookupStr = $"StationState.SN[{dutNo}]";
            ViewControl.Logger.Info($"PositionCode: [{e.positionCode}], SNR: [{e.snrCode}], LookUpStr: [{LookupStr}]");
            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>
        /// 清空两个图表数据
@@ -317,6 +376,7 @@
        private void TcpServer_NewRequestReceived(TcpSession session, StringRequestInfo requestInfo)
        {
            string msg = requestInfo.Body;
            //ViewControl.Logger.Info($"TCP Data From {session.RemoteEndPoint}: {msg}.");
            string[] datas_10015 = msg.Split(';');
            int cellIndex = int.Parse(datas_10015[1]);
@@ -426,5 +486,83 @@
                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);
        }
        private void ClearAllSnr_Click(object sender, RoutedEventArgs e)
        {
            var str = $"StationState.Start_{title}";
            if (parent.engine.Globals.GetValBoolean(str, 0) == true)
            {
                MsgBoxHelper.Error(Window.GetWindow(this), "程序运行中,不能清空条码");
                return;
            }
            if (MsgBoxHelper.WarnMessage(Window.GetWindow(this), LangUtil.Get("Tr.MakeSureClearAllSNR")) == MessageBoxResult.OK)
            {
                try
                {
                    for (int i = 0; i < this.cellCount; i++)
                    {
                        int dutNo = this.index * this.cellCount + i;
                        string LookupStr = $"StationState.SN[{dutNo}]";
                        parent.engine.Globals.SetValString(LookupStr, 0, "");
                        GetSingleCell(i).SetStatus("waiting");
                    }
                    ToastHelper.Success(LangUtil.Get("App.DeleteSuccess"));
                }
                catch (Exception ex)
                {
                    ViewControl.Logger.Error("ClearAllSnr_Click Error.", ex);
                    MsgBoxHelper.Error(Window.GetWindow(this), ex.Message);
                }
            }
        }
        private void Button_Click_2(object sender, RoutedEventArgs e)
        {
            if (MsgBoxHelper.WarnMessage(Window.GetWindow(this), "确定要停止该炉位的老化测试吗?") == MessageBoxResult.OK)
            {
                parent.SetStartFlag(this.index, false);
            }
        }
    }
}