alielie
2025-07-04 0940f31b7eba1cf6b6a8c1fca72d97cf686e79f2
Plugin.TsExecution/SingleControl.xaml.cs
@@ -1,4 +1,7 @@
using HMI.Core.Util;
using HMI.Core.Manager;
using HMI.Core.Util;
using HMI.UI;
using HMI.UI.Util;
using HMI.Util;
using NationalInstruments.TestStand.Interop.API;
using Plugin.TsExecution.Entity;
@@ -7,6 +10,7 @@
using System.ComponentModel;
using System.IO;
using System.Runtime.CompilerServices;
using System.Threading;
using System.Timers;
using System.Windows;
using System.Windows.Controls;
@@ -58,15 +62,15 @@
            }
        }
        private double passNum;
        public double PassNum
        private int passNum;
        public int PassNum
        {
            get => passNum;
            private set { Set(ref passNum, value); }
        }
        private double failNum;
        public double FailNum
        private int failNum;
        public int FailNum
        {
            get => failNum;
            private set { Set(ref failNum, value); }
@@ -135,7 +139,7 @@
        private DateTime TimeNow = new DateTime();
        private TimeSpan TimeCount = new TimeSpan();
        private Timer refreshTimer;
        private System.Timers.Timer refreshTimer;
        private string currentStep = "等待扫码";
        public string CurrentStep
@@ -198,6 +202,16 @@
        public int ProbeWarn { get; private set; }
        private bool isAutoMode;
        public bool IsAutoMode
        {
            get => isAutoMode;
            set
            {
                Set(ref isAutoMode, value);
            }
        }
        public SingleControl(int Index, string CountIniPath, int probeWarn)
        {
            this.CountIniPath = CountIniPath;
@@ -205,7 +219,7 @@
            this.index = Index;
            ProbeWarn = probeWarn;
            refreshTimer = new Timer()
            refreshTimer = new System.Timers.Timer()
            {
                Interval = 100
            };
@@ -213,6 +227,15 @@
            ReadProbeCount();
            ReadCounter();
            InitializeComponent();
            try
            {
                var value = ParameterManager.GetCommonParameterByName("AutoTestMode");
                IsAutoMode = bool.Parse(value.Value);
            }
            catch
            {
                IsAutoMode = true;
            }
            //if (ProbeWarn > 0)
            //{
            //    probeWarnPanel.Visibility = Visibility.Visible;
@@ -328,16 +351,20 @@
            if (result == true)
            {
                PassNum += 1;
                //Interlocked.Increment(ref passNum);
                //Set("PassNum");
            }
            else if (result == false)
            {
                FailNum += 1;
                //Interlocked.Increment(ref failNum);
                //Set("FailNum");
            }
            TotalNum = PassNum + FailNum;
            if (TotalNum != 0)
            {
                PassRate = (PassNum / TotalNum);
                PassRate = ((double)PassNum / TotalNum);
            }
            else
            {
@@ -462,17 +489,57 @@
                    SequenceFileContext?.StationGlobals.SetValBoolean($"StationState.IsContinue_{index}", 1, true);
                    pausePanel.Visibility = Visibility.Collapsed;
                    break;
                case "scannerSetting":
                    //ScannerSetting setting = new ScannerSetting()
                    //{
                    //    Owner = Window.GetWindow(this)
                    //};
                    //setting.Open(true, $"Socket{index}", CountIniPath);
                    ShowScannerPanel();
                    break;
                case "scannerOkBtn":
                    SendSnr2Ts();
                    break;
                default:
                    break;
            }
        }
        public void ShowScannerPanel()
        {
            scannerPanel.Visibility = Visibility.Visible;
        }
        private void SendSnr2Ts()
        {
            try
            {
                string snr = TbManualSnr.Text;
                SequenceFileContext?.StationGlobals.SetValString($"StationState.SN[{index}]", 1, snr);
                scannerPanel.Visibility = Visibility.Collapsed;
                TbManualSnr.Text = string.Empty;
            }
            catch (Exception ex)
            {
                ToastHelper.Error(ex.Message);
            }
        }
        private void pausePanel_Loaded(object sender, RoutedEventArgs e)
        {
            if (sender == pausePanel)
            {
            var can = pausePanel;
            var modal = visualModal;
            Canvas.SetLeft(modal, (pausePanel.ActualWidth - visualModal.ActualWidth) / 2);
            Canvas.SetTop(modal, (pausePanel.ActualHeight - visualModal.ActualHeight) / 2);
        }
            else
            {
                var can = scannerPanel;
                var modal = scannerVisualModal;
                Canvas.SetLeft(modal, (scannerPanel.ActualWidth - scannerVisualModal.ActualWidth) / 2);
                Canvas.SetTop(modal, (scannerPanel.ActualHeight - scannerVisualModal.ActualHeight) / 2);
            }
        }
    }
}