From 6bcafc823e836ecd5790f87178a906333699f868 Mon Sep 17 00:00:00 2001
From: alielie <alielie@git.com>
Date: 星期四, 10 四月 2025 10:46:47 +0800
Subject: [PATCH] 优化插件结构;
---
Plugin.TsExecution/TsExecution.xaml.cs | 315 +++++++++++++++++++++++++++-------------------------
1 files changed, 163 insertions(+), 152 deletions(-)
diff --git a/Plugin.TsExecution/TsExecution.xaml.cs b/Plugin.TsExecution/TsExecution.xaml.cs
index df139b3..5239693 100644
--- a/Plugin.TsExecution/TsExecution.xaml.cs
+++ b/Plugin.TsExecution/TsExecution.xaml.cs
@@ -1,20 +1,20 @@
锘縰sing 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;
using NationalInstruments.TestStand.Interop.API;
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.Drawing;
+using System.ComponentModel;
using System.IO;
using System.Linq;
using System.Timers;
@@ -101,6 +101,18 @@
}
}
+ private Pie pie;
+ private string CountIniPath;
+
+ private bool alarmVisiable;
+ public bool AlarmVisiable
+ {
+ get => alarmVisiable;
+ set
+ {
+ Set(ref alarmVisiable, value);
+ }
+ }
public TsExecution()
{
@@ -111,63 +123,29 @@
InitTsEngine();
//鍒濆鍖朤estStand寮曟搸
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>
/// 鍒濆鍖朩inform鍥捐〃
/// </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;
@@ -193,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 =
@@ -268,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, 0, 0);
- 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;
}
}
@@ -308,14 +291,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 +383,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 +410,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 +437,9 @@
{
case "BtnStartSeq":
StartClick();
-
break;
case "BtnStopSeq":
- StopSequence();
+ StopSequenceClick();
break;
case "BtnClearNum":
ClearNum();
@@ -512,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://浼犻�扴ocketContext
- 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://浼犻�扴ocketContext
+ 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);
}
}
@@ -627,19 +634,12 @@
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)
{
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();
}
@@ -659,6 +659,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)
{
--
Gitblit v1.9.1