alielie
2025-03-17 c401a2f2fd1a509cdeb33e850bb5c2827074af48
Plugin.TsExecution/TsExecution.xaml.cs
@@ -5,6 +5,7 @@
using HMI.ParameterManage.Util;
using HMI.UI;
using HMI.UI.Util;
using HMI.Util;
using NationalInstruments.TestStand.Interop.API;
using NationalInstruments.TestStand.Interop.UI.Ax;
using Panuon.WPF.UI;
@@ -14,6 +15,7 @@
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Drawing;
using System.IO;
using System.Linq;
@@ -101,6 +103,8 @@
            }
        }
        private Pie pie;
        private string CountIniPath;
        public TsExecution()
        {
@@ -111,63 +115,29 @@
            InitTsEngine();
            //初始化TestStand引擎
            this.InitTestStandEngine();
        }
        public override void SetBaseFolder(string folder)
        {
            CountIniPath = Path.Combine(folder, "Count.ini");
            base.SetBaseFolder(folder);
        }
        public override void InitFinish()
        {
            this.ReadCount(out int pass, out int fail);
            this.DisplayCount(pass, fail);
            UpdateChart(pass, fail);
            InitProducts();
            base.InitFinish();
        }
        private Pie pie;
        /// <summary>
        /// 初始化Winform图表
        /// </summary>
        private void InitChart()
        {
            //ChartArea chartArea1 = new ChartArea();
            //Legend legend1 = new Legend();
            //Series series1 = new Series();
            //DataPoint dataPoint1 = new DataPoint(0D, 10D);
            //DataPoint dataPoint2 = new DataPoint(0D, 10D);
            //chart = new Chart();
            ////
            //// chart
            ////
            //this.chart.BackColor = System.Drawing.SystemColors.Control;
            //chartArea1.BackColor = System.Drawing.SystemColors.Control;
            //chartArea1.Name = "ChartArea1";
            //this.chart.ChartAreas.Add(chartArea1);
            //this.chart.Dock = System.Windows.Forms.DockStyle.Fill;
            //legend1.BackColor = System.Drawing.SystemColors.Control;
            //legend1.Name = "Legend1";
            //this.chart.Legends.Add(legend1);
            //this.chart.Location = new System.Drawing.Point(0, 0);
            //this.chart.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
            //this.chart.Name = "chart";
            //this.chart.Palette = ChartColorPalette.None;
            //series1.BorderColor = System.Drawing.SystemColors.Control;
            //series1.ChartArea = "ChartArea1";
            //series1.ChartType = SeriesChartType.Pie;
            //series1.Color = System.Drawing.SystemColors.Control;
            //series1.LabelBackColor = System.Drawing.Color.White;
            //series1.Legend = "Legend1";
            //series1.Name = "Series1";
            //dataPoint1.AxisLabel = "OK";
            //dataPoint1.Color = Color.Green;
            //dataPoint1.IsVisibleInLegend = true;
            //dataPoint1.Label = "";
            //dataPoint2.AxisLabel = "NG";
            //dataPoint2.Color = Color.FromArgb(230, 0, 18);
            //series1.Points.Add(dataPoint1);
            //series1.Points.Add(dataPoint2);
            //this.chart.Series.Add(series1);
            //this.chart.Size = new System.Drawing.Size(215, 191);
            //this.chart.TabIndex = 0;
            //this.chart.Text = "chart1";
            //((System.ComponentModel.ISupportInitialize)(chart)).BeginInit();
            //chartHost.Child = chart;
            //((System.ComponentModel.ISupportInitialize)(chart)).EndInit();
            pieChart.Plot.Axes.Frameless();
            pieChart.Plot.HideGrid();
            pieChart.Plot.DataBackground.Color = Colors.Transparent;
@@ -274,7 +244,7 @@
                //重新生成子面板
                for (int i = 0; i < this.socketNum; i++)
                {
                    SingleControl control = new SingleControl(i, 0, 0);
                    SingleControl control = new SingleControl(i, CountIniPath);
                    panel.Children.Add(control);
                    tsSockets.Add(control);
                }
@@ -308,14 +278,14 @@
        /// <param name="fail">不合格数</param>
        private void ReadCount(out int pass, out int fail)
        {
            pass = 0; //Convert.ToInt32(OperateIniFile.ReadIniData("Count", "Pass", "", CountiniPath));
            fail = 0; //Convert.ToInt32(OperateIniFile.ReadIniData("Count", "Fail", "", CountiniPath));
            pass = Convert.ToInt32(IniFileHelper.ReadIniData("Count", "Pass", "", CountIniPath));
            fail = Convert.ToInt32(IniFileHelper.ReadIniData("Count", "Fail", "", CountIniPath));
        }
        private void WriteCount(int pass, int fail)
        {
            //OperateIniFile.WriteIniData("Count", "Pass", pass.ToString(), CountiniPath);
            //OperateIniFile.WriteIniData("Count", "Fail", fail.ToString(), CountiniPath);
            IniFileHelper.WriteIniData("Count", "Pass", pass.ToString(), CountIniPath);
            IniFileHelper.WriteIniData("Count", "Fail", fail.ToString(), CountIniPath);
        }
        /// <summary>
@@ -400,6 +370,26 @@
            }
        }
        public void StopSequenceClick()
        {
            new MaskWindow((WindowX)Window.GetWindow(this),
                    (win) =>
                    {
                        Dispatcher.Invoke(() =>
                        {
                            try
                            {
                                StopSequence();
                            }
                            finally
                            {
                                win.Close();
                            }
                        });
                    }
                    ).Info(LangUtil.Get("App.SequenceIsStopping"));
        }
        /// <summary>
        /// 停止测试序列
        /// </summary>
@@ -407,15 +397,14 @@
        {
            try
            {
                if (this.tsSockets.Count == 0)
                    return;
                if (this.tsSockets[0].SequenceFileContext == null)
                    return;
                bool val = this.tsSockets[0].SequenceFileContext.StationGlobals.Exists("StationState.StopTest", 0);
                if (val)
                if (this.tsSockets.Count > 0 && this.tsSockets[0]?.SequenceFileContext != null)
                {
                    tsSockets[0].SequenceFileContext.StationGlobals.SetValBoolean("StationState.StopTest", 0, true);
                    bool isStop = this.execution.WaitForEndEx(2000, true, null, null);
                    bool val = this.tsSockets[0].SequenceFileContext.StationGlobals.Exists("StationState.StopTest", 0);
                    if (val)
                    {
                        tsSockets[0].SequenceFileContext.StationGlobals.SetValBoolean("StationState.StopTest", 0, true);
                        bool isStop = this.execution.WaitForEndEx(2000, true, null, null);
                    }
                }
                this.CbProduct.IsEnabled = true;
                this.BtnStartSeq.IsEnabled = true;
@@ -435,10 +424,9 @@
            {
                case "BtnStartSeq":
                    StartClick();
                    break;
                case "BtnStopSeq":
                    StopSequence();
                    StopSequenceClick();
                    break;
                case "BtnClearNum":
                    ClearNum();
@@ -627,13 +615,6 @@
            pie.Slices[0].Value = pass;
            pie.Slices[1].Value = fail;
            pieChart.Refresh();
            //Dispatcher.Invoke(() => {
            //    ((System.ComponentModel.ISupportInitialize)(chart)).BeginInit();
            //    chart.Series[0].Points[0].YValues[0] = pass;
            //    chart.Series[0].Points[1].YValues[0] = fail;
            //    ((System.ComponentModel.ISupportInitialize)(chart)).EndInit();
            //});
        }
        private void SetTestSeqFile(ProductData product)
@@ -659,6 +640,17 @@
            }
        }
        public override void OnClose(object sender, CancelEventArgs e)
        {
            StopSequence();
            this.engine?.ReleaseSequenceFileEx(this.testSeq, 0);
            this.engine?.ReleaseSequenceFileEx(this.modeSeq, 0);
            this.engine?.UnloadAllModules();
            this.testSeq = null;
            this.modeSeq = null;
            base.OnClose(sender, e);
        }
        private void PluginControl_SizeChanged(object sender, SizeChangedEventArgs e)
        {