alielie
2025-03-26 4cac1b533e133fdc8b3def90a0f998820f51907a
Plugin.TsExecution/TsExecution.xaml.cs
@@ -1,8 +1,8 @@
using HMI.Base;
using HMI.Core;
using HMI.Core.Entity;
using HMI.Core.Manager;
using HMI.Core.Util;
using HMI.ParameterManage.Entity;
using HMI.ParameterManage.Util;
using HMI.UI;
using HMI.UI.Util;
using HMI.Util;
@@ -10,13 +10,11 @@
using NationalInstruments.TestStand.Interop.UI.Ax;
using Panuon.WPF.UI;
using ScottPlot;
using ScottPlot.AxisLimitManagers;
using ScottPlot.Plottables;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Timers;
@@ -106,6 +104,16 @@
        private Pie pie;
        private string CountIniPath;
        private bool alarmVisiable;
        public bool AlarmVisiable
        {
            get => alarmVisiable;
            set
            {
                Set(ref alarmVisiable, value);
            }
        }
        public TsExecution()
        {
            DataContext = this;
@@ -163,7 +171,7 @@
        private void InitProducts()
        {
            Products = ParameterManager.GetProducts<ObservableCollection<ProductData>>();
            Products = ProductManager.GetProducts<ObservableCollection<ProductData>>();
            if (Products != null && Products.Count > 0)
            {
                List<ParameterData> parameters =
@@ -238,16 +246,21 @@
        private void RefershUI()
        {
            if (this.tsSockets.Count == 0)
            panel.Children.Clear();
            //重新生成子面板
            for (int i = 0; i < this.socketNum; i++)
            {
                panel.Children.Clear();
                //重新生成子面板
                for (int i = 0; i < this.socketNum; i++)
                {
                    SingleControl control = new SingleControl(i, CountIniPath);
                    panel.Children.Add(control);
                    tsSockets.Add(control);
                }
                SingleControl control = new SingleControl(i, CountIniPath);
                panel.Children.Add(control);
                tsSockets.Add(control);
            }
            if (tsSockets.Count == 1)
            {
                panel.Columns = 1;
            }
            else
            {
                panel.Columns = 2;
            }
        }
@@ -500,100 +513,106 @@
        /// <param name="e"></param>
        private void AxApplicationMgr_UIMessageEvent(object sender, _ApplicationMgrEvents_UIMessageEventEvent e)
        {
            int EventCase = Convert.ToInt32(e.uiMsg.Event);
            int Index = Convert.ToInt16(e.uiMsg.NumericData);//SocketIndex
            switch (EventCase)
            try
            {
                case 10001://传递SocketContext
                    tsSockets[Index].SequenceFileContext = (SequenceContext)e.uiMsg.ActiveXData;
                    break;
                int EventCase = Convert.ToInt32(e.uiMsg.Event);
                int Index = Convert.ToInt16(e.uiMsg.NumericData);//SocketIndex
                switch (EventCase)
                {
                    case 10001://传递SocketContext
                        tsSockets[Index].SequenceFileContext = (SequenceContext)e.uiMsg.ActiveXData;
                        break;
                case 10002://更新测试状态
                    string status = e.uiMsg.StringData;
                    this.tsSockets[Index].UpdateStatus(status);
                    this.UpdateTestCounter();
                    break;
                    case 10002://更新测试状态
                        string status = e.uiMsg.StringData;
                        this.tsSockets[Index].UpdateStatus(status);
                        this.UpdateTestCounter();
                        break;
                case 10003://发送测试数据
                    string[] TestItems = e.uiMsg.StringData.Split('\t');
                    tsSockets[Index].AddTestData(TestItems[0], TestItems[4], TestItems[1], TestItems[2], TestItems[3], TestItems[5]);
                    case 10003://发送测试数据
                        string[] TestItems = e.uiMsg.StringData.Split('\t');
                        tsSockets[Index].AddTestData(TestItems[0], TestItems[4], TestItems[1], TestItems[2], TestItems[3], TestItems[5]);
                    break;
                        break;
                case 10004://发送测试过程信息
                    this.tsSockets[Index].CurrentStep = e.uiMsg.StringData;
                    break;
                    case 10004://发送测试过程信息
                        this.tsSockets[Index].CurrentStep = e.uiMsg.StringData;
                        break;
                case 10005://初始化测试数据,清空测试数据
                    this.tsSockets[Index].IniTestData();
                    break;
                    case 10005://初始化测试数据,清空测试数据
                        this.tsSockets[Index].IniTestData();
                        break;
                case 10006://发送产品条码
                    this.tsSockets[Index].Barcode = e.uiMsg.StringData;
                    break;
                    case 10006://发送产品条码
                        this.tsSockets[Index].Barcode = e.uiMsg.StringData;
                        break;
                case 10007://开始测试计时
                    tsSockets[Index].ElapseTime = "Start Timing";
                    BtnStopSeq.IsEnabled = false;
                    break;
                    case 10007://开始测试计时
                        tsSockets[Index].ElapseTime = "Start Timing";
                        BtnStopSeq.IsEnabled = false;
                        break;
                case 10008://停止测试计时
                    tsSockets[Index].ElapseTime = "Stop Timing";
                    BtnStopSeq.IsEnabled = true;
                    break;
                    case 10008://停止测试计时
                        tsSockets[Index].ElapseTime = "Stop Timing";
                        BtnStopSeq.IsEnabled = true;
                        break;
                case 10009:
                    // reset the value of controls units failed/pass rate
                    break;
                    case 10009:
                        //
                        break;
                case 10010:
                    case 10010:
                    //PropertyObj.SetValBoolean("Locals.MD5_Used", 0, true);
                    //PropertyObj.SetValVariant("FileGlobals.MD5_Value", 0, MD5_DATA);
                    //PropertyObj.SetValVariant("StationGlobals.MD5", 0, MD5_DATA);
                    break;
                        //PropertyObj.SetValBoolean("Locals.MD5_Used", 0, true);
                        //PropertyObj.SetValVariant("FileGlobals.MD5_Value", 0, MD5_DATA);
                        //PropertyObj.SetValVariant("StationGlobals.MD5", 0, MD5_DATA);
                        break;
                case 10011:
                    // write model
                    case 10011:
                        // write model
                    break;
                        break;
                case 10012:
                    // read model
                    case 10012:
                        // read model
                    break;
                        break;
                case 10013:
                    // read continue
                    case 10013:
                        // read continue
                    break;
                        break;
                case 10014:
                    case 10014:
                    break;
                        break;
                case 10015:
                    case 10015:
                    break;
                case 10016://显示3D拼接图片
                        break;
                    case 10016://显示3D拼接图片
                    break;
                case 10017://更新测试计时,针对部分计时有PLC完成的项目
                    this.tsSockets[Index].ElapseTime = e.uiMsg.StringData;
                    break;
                case (int)UIMessageCodes.UIMsg_EndExecution://执行结束
                    this.BtnStartSeq.IsEnabled = true;
                    this.BtnStopSeq.IsEnabled = true;
                    // this.ReleaseSequenceFile();
                    break;
                case 10030://显示测试进度
                    int ProcessVal = Convert.ToInt32(e.uiMsg.StringData);
                    this.tsSockets[Index].SetTestProcess(ProcessVal);
                    break;
                default:
                    break;
                        break;
                    case 10017://更新测试计时,针对部分计时有PLC完成的项目
                        this.tsSockets[Index].ElapseTime = e.uiMsg.StringData;
                        break;
                    case (int)UIMessageCodes.UIMsg_EndExecution://执行结束
                        this.BtnStartSeq.IsEnabled = true;
                        this.BtnStopSeq.IsEnabled = true;
                        // this.ReleaseSequenceFile();
                        break;
                    case 10030://显示测试进度
                        int ProcessVal = Convert.ToInt32(e.uiMsg.StringData);
                        this.tsSockets[Index].SetTestProcess(ProcessVal);
                        break;
                    default:
                        break;
                }
            }
            catch (Exception ex)
            {
                log.Warn("Ts Event Error.", ex);
            }
        }
@@ -620,7 +639,7 @@
        private void SetTestSeqFile(ProductData product)
        {
            string name = product.Name;
            List<ParameterData> parameters = ParameterManager.GetParametersByProductName(name);
            List<ParameterData> parameters = ProductManager.GetParametersByProductName(name);
            testSeqFile = parameters.FirstOrDefault(p => p.Name == "TestSequence")?.Value?.ToString();
        }