alielie
2025-11-24 9211ec11c112e18cd99e77f889a01110a70031ce
Plugin.TestResult/ViewControl.xaml.cs
@@ -2,6 +2,7 @@
using HMI.Core.Entity;
using HMI.Core.Manager;
using HMI.Core.Util;
using HMI.StdControl;
using HMI.UI;
using HMI.UI.Util;
using log4net;
@@ -13,6 +14,7 @@
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading;
using System.Windows;
using System.Windows.Controls;
@@ -30,7 +32,6 @@
        private double TestVoltage = 12;
        private double Time_Heating_Low = 300;
        private double Time_Heating_High = 2400;
        private string testSeqFile;
        private Scanner scannerWindow1;
        private Scanner scannerWindow2;
        /// <summary>
@@ -57,6 +58,14 @@
            set => Set(ref _produceStatus, value);
        }
        private string _fileName;
        public string FileName
        {
            get => _fileName;
            set => Set(ref _fileName, value);
        }
        public override void SetLogger(ILog logger)
        {
            base.SetLogger(logger);
@@ -76,6 +85,8 @@
                this.btnStop.IsEnabled = value;
            }
        }
        private bool AutoExecuteSeq = true;
        public ViewControl()
        {
@@ -107,6 +118,28 @@
            }
            SannerIniFile = path;
            LoadProduct();
            try
            {
                var value = ParameterManager.GetCommonParameterByName("AutoExecuteSeq");
                AutoExecuteSeq = bool.Parse(value.Value);
            }
            catch
            {
                AutoExecuteSeq = true;
            }
            try
            {
                var value = ParameterManager.GetCommonParameterByName("BurnInMainSeq");
                testResultView.testSeqFile = value.Value;
                FileName = Path.GetFileName(value.Value);
            }
            catch
            {
                testResultView.testSeqFile = string.Empty;
                FileName = string.Empty;
            }
        }
        public override void DoClose(object sender, EventArgs e)
@@ -136,16 +169,22 @@
                int MethodCode = Convert.ToInt16(e.uiMsg.NumericData);
                string strData;
                if (EventCase != 10014) return;
                try
                {
                    log.Info($"EventCase: {EventCase}, MethodCode: {MethodCode}, StrData: {e.uiMsg.StringData}");
                    log.Debug($"EventCase: {EventCase}, MethodCode: {MethodCode}, StrData: {e.uiMsg.StringData}");
                }
                catch
                {
                }
                if (EventCase == 8)
                {
                    IsRunning = false;
                    return;
                }
                if (EventCase != 10014) return;
                if (MethodCode == 0)
                {
@@ -178,24 +217,45 @@
        private bool isLoaded;
        private void UserControl_Loaded(object sender, RoutedEventArgs e)
        {
            new MaskWindow(Window.GetWindow(this), (win) =>
            if (AutoExecuteSeq)
            {
                try
                ShowMask(() =>
                {
                    Dispatcher.BeginInvoke(new Action(() =>
                    {
                        Start_Click(null, null);
                        Loaded -= UserControl_Loaded;
                    }));
                }
                finally
                    }), System.Windows.Threading.DispatcherPriority.Background);
                }, (ex) =>
                {
                    Dispatcher.Invoke(() =>
                    {
                        win.Close();
                    });
                }
            }).Info(LangUtil.Get("Ts.SequenceIsStarting"), 100);
                    ToastHelper.Error("Loaded Failed.");
                    log.Error("Loaded Failed.", ex);
                }, "请稍后", LangUtil.Get("Ts.SequenceIsStarting"));
            }
            else
            {
                IsRunning = false;
            }
            Loaded -= UserControl_Loaded;
            //new MaskWindow(Window.GetWindow(this), (win) =>
            //{
            //    try
            //    {
            //        Dispatcher.BeginInvoke(new Action(() =>
            //        {
            //            Start_Click(null, null);
            //            Loaded -= UserControl_Loaded;
            //        }));
            //    }
            //    finally
            //    {
            //        Dispatcher.Invoke(() =>
            //        {
            //            win.Close();
            //        });
            //    }
            //}).Info(LangUtil.Get("Ts.SequenceIsStarting"), 100);
            //ShowMask(() =>
            //{
@@ -228,7 +288,7 @@
            }
            testResultView.SetProductSource(productSource);
            string model = testResultView.engine.Globals.GetValString("ProductModel", 0);
            string model = testResultView.engine.Globals.GetValString("ProductModel", 1);
            if (!string.IsNullOrEmpty(model))
            {
                this.modelSelect.SelectedItem = model;
@@ -254,7 +314,7 @@
                //this.SaftyTemperature = Convert.ToDouble(this.parameterManager.Find("SaftyTemperature").ParmValue);
                //this.Time_Heating_Low = Convert.ToDouble(this.parameterManager.Find("Time_Heat_Low").ParmValue);
                //this.Time_Heating_High = Convert.ToDouble(this.parameterManager.Find("Time_Heat_High").ParmValue);
                testResultView.testSeqFile = parameters.FirstOrDefault(p => p.Name == "TestSequence")?.Value;
                //testResultView.testSeqFile = parameters.FirstOrDefault(p => p.Name == "TestSequence")?.Value;
                testResultView.engine.Globals.SetValString("ProductModel", 0, currentModel);
                testResultView.engine.CommitGlobalsToDisk(promptOnSaveConflicts: false);
@@ -269,6 +329,12 @@
        {
            try
            {
                if (string.IsNullOrEmpty(testResultView.testSeqFile))
                {
                    MsgBoxHelper2.Warn("请先设置BurnInMainSeq属性!");
                    IsRunning = false;
                    return;
                }
                testResultView.StartTestSequence();
                IsRunning = true;
            }
@@ -293,70 +359,6 @@
                MsgBoxHelper.Error(Window.GetWindow(this),
                    $"{this.lang("Ts.StopTestSequenceFailed")}: {ex.Message}");
            }
        }
        private void Scan_Click_1(object sender, RoutedEventArgs e)
        {
            if (scannerWindow1 == null)
            {
                scannerWindow1 = new Scanner(this.lang("Tr.Zone1Scan"))
                {
                    Tag = "Zone1"
                };
                scannerWindow1.FinishBarcode += ScannerWindow_FinishBarcode;
                //scannerWindow1.Owner = Window.GetWindow(this);
                scannerWindow1.Closed += ScannerWindow1_Closed;
                scannerWindow1.Show();
            }
            else
            {
                scannerWindow1.Activate();
            }
        }
        private void Scan_Click_2(object sender, RoutedEventArgs e)
        {
            if (scannerWindow2 == null)
            {
                scannerWindow2 = new Scanner(this.lang("Tr.Zone2Scan"))
                {
                    Tag = "Zone2"
                };
                scannerWindow2.FinishBarcode += ScannerWindow_FinishBarcode;
                scannerWindow2.Owner = Window.GetWindow(this);
                scannerWindow2.Closed += ScannerWindow2_Closed;
                scannerWindow2.Show();
            }
            else
            {
                scannerWindow2.Activate();
            }
        }
        /// <summary>
        /// 扫码完成逻辑
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ScannerWindow_FinishBarcode(object sender, BarcodeEventArg e)
        {
            if (this.SequenceContext == null) return;
            CellInfo cellInfo = codeParser.GetCellInfoByCode(e.positionCode);
            string paramName = e.name == "Zone1" ? "StationState.StartScanner_A" : "StationState.StartScanner_B";
            testResultView.engine.Globals.SetValBoolean(paramName, 0, true);
            string positionCode = e.positionCode, snrCode = e.snrCode;
            //需要增加条码校验功能
            //将读到的条码写入到SN中
            int dutNo = Convert.ToInt16(positionCode.Split('-')[2]) - 1;
            string LookupStr = e.name == "Zone1" ? $"StationState.SN[{dutNo}]" : $"StationState.SN[{(dutNo + 54)}]";
            //this.SequenceContext.StationGlobals.SetValString(LookupStr, 0, snrCode);
            //string code = this.SequenceContext.StationGlobals.GetValString(LookupStr, 0);
            testResultView.engine.Globals.SetValString(LookupStr, 0, snrCode);
            string code = testResultView.engine.Globals.GetValString(LookupStr, 0);
            testResultView.nameTables[cellInfo.OvenName].GetSingleCell(cellInfo.Index).SetStatus("hadCode");
        }
        private void ScannerWindow1_Closed(object sender, EventArgs e)
@@ -391,5 +393,10 @@
            };
            setting.Open(false, "Config");
        }
        private void StdEnableMes_ValueChanged(object sender, StdUIEventArg e)
        {
            testResultView.SequenceContext?.StationGlobals.SetValBoolean($"SystemSetting.{e.StringValue}", 1, e.BoolValue);
        }
    }
}