From 771a0e7b6b1276087515bbe94de28358cb92963b Mon Sep 17 00:00:00 2001
From: alielie <alielie@git.com>
Date: 星期四, 04 六月 2026 10:32:27 +0800
Subject: [PATCH] 优化老化;
---
Plugin.TestResult/DataTable.xaml.cs | 384 ++++++++++++++++++++++++++++++++++++++----------------
1 files changed, 271 insertions(+), 113 deletions(-)
diff --git a/Plugin.TestResult/DataTable.xaml.cs b/Plugin.TestResult/DataTable.xaml.cs
index 71069df..29d402c 100644
--- a/Plugin.TestResult/DataTable.xaml.cs
+++ b/Plugin.TestResult/DataTable.xaml.cs
@@ -1,22 +1,24 @@
-锘縰sing HMI.Core.Util;
+锘縰sing HMI.Base;
+using HMI.Core.Setting;
+using HMI.Core.Util;
+using HMI.LogUtil;
using HMI.UI.Util;
using HMI.Util;
using Plugin.TestResult;
using Plugin.TestResult.Util;
using Plugin.TestResult_WPF.Model;
-using Plugin.TestResult_WPF.Util;
+using Plugin.TsSupport;
using SuperSocket.SocketBase.Config;
using SuperSocket.SocketBase.Protocol;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
-using System.Net.WebSockets;
using System.Runtime.CompilerServices;
-using System.Threading.Tasks;
using System.Timers;
using System.Windows;
using System.Windows.Controls;
+using System.Windows.Markup;
namespace Plugin.TestResult_WPF
{
@@ -64,6 +66,16 @@
set => RaiseAndSetIfchanged(ref _isTesting, value);
}
+ private ushort coolerStatus;
+ public ushort CoolerStatus
+ {
+ get => coolerStatus;
+ set
+ {
+ RaiseAndSetIfchanged(ref coolerStatus, value);
+ }
+ }
+
private string tcpServerStatus;
public string TcpServerStatus
@@ -79,17 +91,15 @@
get { return tcpServerInfo; }
set { RaiseAndSetIfchanged(ref tcpServerInfo, value); }
}
-
- private static ICodeParser codeParser;
- private readonly int index;
- private readonly int cellCount;
+ public int index { get; private set; }
+ public readonly int cellCount;
private readonly string chartTitle;
- private readonly TestResultView parent;
+ public readonly TestResultView parent;
private BaseConfig config;
- private Chart chart;
- private Chart multiChart;
- private SingleCell[] cells;
+ private LiveChart chart;
+ private LiveChart multiChart;
+ public SingleCell[] cells { get; private set; }
private TcpServer tcpServer;
private string CountIniPath;
@@ -114,12 +124,12 @@
this.title = title;
this.cellCount = config.PositionCount;
this.cells = new SingleCell[cellCount];
- this.chartTitle = config.MainChartTitle;
+ this.chartTitle = this.lang("Tr.AvgTemp");
DataContext = this;
InitializeComponent();
mainGrid.Columns = config.PositionColumn;
- this.chart = new Chart(this.chartTitle, false, config.MaxSize, config.RefreshInterval);
- this.multiChart = new Chart(config.DetailChartTitle, true, config.MaxSize, config.RefreshInterval)
+ this.chart = new LiveChart("骞冲潎娓╁害,骞冲潎娓╁害(鈩�)", false, true);
+ this.multiChart = new LiveChart(",璇︾粏娓╁害(鈩�)", true)
{
BorderThickness = new Thickness(0)
};
@@ -138,19 +148,15 @@
cells[i] = cell;
}
- if (config.CodeParserType == "JK01")
- {
- codeParser = new JKCodeParser();
- }
- else
- {
- codeParser = new CommonCodeParser();
- }
+ ScannerParser.Init(config.CodeParserType);
+
ReadCount();
testTimeTimer = new Timer();
testTimeTimer.Interval = 10000;
testTimeTimer.AutoReset = true;
testTimeTimer.Elapsed += TestTimeTimer_Elapsed;
+ if (!ParamSetting.ShowCoolerSetting) coolerSetting.Visibility = Visibility.Collapsed;
+ if (!ParamSetting.ShowBurnInAbort) abortBtn.Visibility = Visibility.Collapsed;
}
private void TestTimeTimer_Elapsed(object sender, ElapsedEventArgs e)
@@ -159,7 +165,7 @@
var now = DateTime.Now;
Dispatcher.BeginInvoke(new Action(() =>
{
- SetConsumeTime((now - testStartTime).Value.TotalSeconds);
+ //SetConsumeTime((now - testStartTime).Value.TotalSeconds);
}));
}
@@ -182,23 +188,25 @@
{
infoTable.temperature = t;
tempratures.Add(t);
- chart.AddData(t);
+ chart.AddDynamicData("骞冲潎娓╁害", "骞冲潎娓╁害(鈩�)", DateTime.Now, t);
}
public void SetTemperature(string name, double t)
{
- List<double> list;
- if (detailTempratures.ContainsKey(name))
- {
- list = detailTempratures[name];
- }
- else
- {
- list = new List<double>();
- detailTempratures.Add(name, list);
- }
- list.Add(t);
- multiChart.AddData(name, t);
+ //List<double> list;
+ //if (detailTempratures.ContainsKey(name))
+ //{
+ // list = detailTempratures[name];
+ //}
+ //else
+ //{
+ // list = new List<double>();
+ // detailTempratures.Add(name, list);
+ //}
+ //list.Add(t);
+
+ multiChart.AddDynamicData(name, "璇︾粏娓╁害(鈩�)", DateTime.Now, t);
+ //multiChart.AddData(name, t);
}
public void SetStatus(string status)
@@ -224,20 +232,20 @@
}
infoTable.status = status;
- if (lastStatus != "testing" && status == "testing")
- {
- testStartTime = DateTime.Now;
- SetStartTime(testStartTime?.ToString("yyyy-MM-dd HH:mm:ss"));
- testTimeTimer.Start();
- }
- if (lastStatus == "testing" && status != "testing")
- {
- testTimeTimer.Stop();
- var now = DateTime.Now;
- SetConsumeTime((now - testStartTime).Value.TotalSeconds);
- SetEndTime(now.ToString("yyyy-MM-dd HH:mm:ss"));
- testStartTime = null;
- }
+ //if (lastStatus != "testing" && status == "testing")
+ //{
+ // testStartTime = DateTime.Now;
+ // SetStartTime(testStartTime?.ToString("yyyy-MM-dd HH:mm:ss"));
+ // testTimeTimer.Start();
+ //}
+ //if (lastStatus == "testing" && status != "testing")
+ //{
+ // testTimeTimer.Stop();
+ // var now = DateTime.Now;
+ // infoTable.UpdateConsumeTime((now - testStartTime).Value.TotalSeconds, null);
+ // SetEndTime(now.ToString("yyyy-MM-dd HH:mm:ss"));
+ // testStartTime = null;
+ //}
}));
}
@@ -261,9 +269,9 @@
infoTable.endTimeStr = endTime;
}
- public void SetConsumeTime(double consumeTime)
+ public void UpdateConsumeTime(double consumeTime, double? leftTime)
{
- infoTable.consumeTime = consumeTime;
+ infoTable.UpdateConsumeTime(consumeTime, leftTime);
}
private ChartWindow window;
@@ -301,15 +309,44 @@
{
if (IsTesting)
{
- if (MsgBoxHelper2.WarnChoose($"纭疄鍋滄鑰佸寲鐐塠{title}]鐨勬祴璇曞悧") == MessageBoxResult.OK)
+ if (MsgBoxHelper2.WarnChoose(this.lang("Tr.MakeSureStopOvenTest", title)) == MessageBoxResult.OK)
{
+ LogHelper.Info("UI", $"鑰佸寲鐐塠{title}]鍋滄鎸夐挳鎸変笅", out _);
+ ViewControl.Logger.Info($"鑰佸寲鐐塠{title}]鍋滄鎸夐挳鎸変笅");
parent.SetStartFlag(this.index, false);
}
}
else
{
- ClearChartData();
- parent.SetStartFlag(this.index, true);
+ /// 妫�鏌ユ槸鍚﹀叧闂�
+ if (!GetDoorClose(parent.executionWrapper))
+ {
+ /// 娌″叧闂ㄤ笉鍏佽鍚姩
+ MsgBoxHelper2.Warn("璇峰厛鍏抽棴鑸遍棬锛�");
+ return;
+ }
+
+ /// 妫�鏌ユ槸鍚︽湁鏉$爜
+ bool flag = false;
+ foreach (var cell in cells)
+ {
+ if (!string.IsNullOrEmpty(cell.sn))
+ {
+ flag = true;
+ break;
+ }
+ }
+ if (flag)
+ {
+ LogHelper.Info("UI", $"鑰佸寲鐐塠{title}]鍚姩鎸夐挳鎸変笅", out _);
+ ViewControl.Logger.Info($"鑰佸寲鐐塠{title}]鍚姩鎸夐挳鎸変笅");
+ ClearChartData();
+ parent.SetStartFlag(this.index, true);
+ }
+ else
+ {
+ MsgBoxHelper2.Warn("璇峰厛瀹屾垚鎵爜锛�");
+ }
}
}
@@ -317,7 +354,7 @@
{
if (!parent.IsRunning)
{
- MsgBoxHelper.WarnMessage(this, "璇峰厛鐐瑰嚮鍙充晶鍚姩鎸夐挳鍚姩娴嬭瘯绋嬪簭锛�", null, MessageBoxButton.OK);
+ MsgBoxHelper.WarnMessage(this, this.lang("Tr.StartSeqFirst"), null, MessageBoxButton.OK);
return;
}
@@ -327,7 +364,8 @@
}
else
{
- scanner = new Scanner(this.lang("Tr.ScanTitle", title))
+ int rows = config.CellCount / config.PositionColumn + 1;
+ scanner = new Scanner(this.index, this.lang("Tr.ScanTitle", title), CbProduct.SelectedItem?.ToString(), mainGrid.Columns, rows)
{
Owner = Window.GetWindow(this),
Tag = title
@@ -342,8 +380,9 @@
private void Scanner_ComplateClick(object sender, RoutedEventArgs e)
{
string paramName = $"StationState.Scanner[{index}]";
- parent.engine.Globals.SetValBoolean(paramName, 1, true);
- //parent.engine.CommitGlobalsToDisk(promptOnSaveConflicts: false);
+
+ parent.executionWrapper.SetStationGlobalValue<bool>(paramName, 1, true);
+ //parent.engine.Globals.SetValBoolean(paramName, 1, true);
}
private void Scanner_Closed(object sender, EventArgs e)
@@ -351,36 +390,63 @@
scanner = null;
}
+ public bool GetDoorClose(ITestExecutionWrapper wrapper)
+ {
+ return wrapper?.GetStationGlobalValue<bool>($"StationState.DoorClose[{this.index}]", 0) == true;
+ }
+
private void Scanner_FinishBarcode(object sender, BarcodeEventArg e)
{
- if (parent.SequenceContext == null) return;
+ if (parent.executionWrapper == null) return;
+ //if (parent.SequenceContext == null) return;
- CellInfo cellInfo = codeParser.GetCellInfoByCode(e.positionCode);
+ int rows = (config.CellCount / config.PositionColumn) + 1;
+ CellInfo cellInfo = ScannerParser.GetCellInfoByCode(CbProduct.SelectedItem?.ToString(), mainGrid.Columns, rows, e.positionCode);
string positionCode = e.positionCode, snrCode = e.snrCode;
+ //if (cellInfo.OvenName != this.title)
+ //{
+ // MsgBoxHelper2.Warn($"璇峰垏鎹㈣嚦 [{cellInfo.OvenName}] 鍖烘壂鐮侊紝褰撳墠涓� [{this.title}] 鍖猴紒");
+ // return;
+ //}
+
+
+ var targetTable = TestResultView.nameTables[cellInfo.OvenName];
+
//灏嗚鍒扮殑鏉$爜鍐欏叆鍒癝N涓�
- int dutNo = this.index * this.cellCount + cellInfo.Index;
-
+ int dutNo = targetTable.index * targetTable.cellCount + cellInfo.Index;
string LookupStr = $"StationState.SN[{dutNo}]";
+ cellInfo.LookUpStr = LookupStr;
- ViewControl.Logger.Debug($"PositionCode: [{e.positionCode}], SNR: [{e.snrCode}], LookUpStr: [{LookupStr}]");
- ViewControl.Logger.Debug($"OvenName: [{cellInfo.OvenName}], CellIndex: [{cellInfo.Index}]");
- var cell = parent.nameTables[cellInfo.OvenName].GetSingleCell(cellInfo.Index);
+ ViewControl.Logger.Info($"PositionCode: [{e.positionCode}], SNR: [{e.snrCode}], LookUpStr: [{LookupStr}]");
+ ViewControl.Logger.Info($"OvenName: [{cellInfo.OvenName}], CellIndex: [{cellInfo.Index}]");
+ var cell = targetTable.GetSingleCell(cellInfo.Index);
+
+ if (targetTable.GetDoorClose(parent.executionWrapper))
+ {
+ /// 鍏抽棬浜嗗氨涓嶅厑璁告竻鏉$爜
+ MsgBoxHelper2.Warn($"{targetTable.title}鐐夌敓浜т腑锛屼笉鍏佽鎿嶄綔鏉$爜");
+ //MsgBoxHelper2.Warn(this.lang("Tr.CantClearSNR"));
+ return;
+ }
+
if (snrCode == null)
{
- string oldLookUp = $"StationState.SN[{e.oldIndex}]";
- var oldCellInfo = codeParser.GetCellInfoByCode(e.oldPosition);
- var oldCell = parent.nameTables[oldCellInfo.OvenName].GetSingleCell(oldCellInfo.Index);
+ var oldCellInfo = e.lastInfo;
+ var oldTable = TestResultView.nameTables[oldCellInfo.OvenName];
+ var oldCell = oldTable.GetSingleCell(oldCellInfo.Index);
if (oldCell.status != "hadCode")
{
- throw new Exception($"绌翠綅[{e.oldPosition}]褰撳墠涓嶅厑璁告竻闄ゆ潯鐮�!");
+ throw new Exception(this.lang("Tr.PositionCantClearSNR", oldCellInfo.OriginCode));
}
// 绉婚櫎鏉$爜
- parent.engine.Globals.SetValString(oldLookUp, 1, "");
- parent.engine.CommitGlobalsToDisk(promptOnSaveConflicts: false);
+ parent.executionWrapper.SetStationGlobalValue<string>(oldCellInfo.LookUpStr, 1, "");
+ parent.executionWrapper.CommitToDisk(false);
+ //parent.engine.Globals.SetValString(oldCellInfo.LookUpStr, 1, "");
+ //parent.engine.CommitGlobalsToDisk(promptOnSaveConflicts: false);
oldCell.SetStatus("waiting");
- oldCell.sn = "";
+ oldCell.ClearSN();
return;
}
@@ -392,12 +458,16 @@
}
// 鍐欏叆鏉$爜
- parent.engine.Globals.SetValString(LookupStr, 1, snrCode);
- parent.engine.CommitGlobalsToDisk(promptOnSaveConflicts: false);
+ parent.executionWrapper.SetStationGlobalValue<string>(LookupStr, 1, snrCode);
+ parent.executionWrapper.CommitToDisk(false);
- parent.nameTables[cellInfo.OvenName].GetSingleCell(cellInfo.Index).SetStatus("hadCode");
- parent.nameTables[cellInfo.OvenName].GetSingleCell(cellInfo.Index).sn = snrCode;
- Scanner.InsertNewCode(snrCode, positionCode, dutNo);
+ //parent.engine.Globals.SetValString(LookupStr, 1, snrCode);
+ //parent.engine.CommitGlobalsToDisk(promptOnSaveConflicts: false);
+
+ cell.SetStatus("hadCode");
+ cell.sn = snrCode;
+ Scanner.InsertNewCode(snrCode, cellInfo);
+ cell.LightGreen(true, out string msg);
}
@@ -517,18 +587,18 @@
string strs = datas_10015[2];
string[] values = strs.Split(',');
-
- //string step = datas_10015[2];
- //string result = datas_10015[3];
- GetSingleCell(cellIndex).SetInfos(new Info
+ Dispatcher.Invoke(() =>
{
- step = values[0],
- value = values[1],
- limitUp = values[2],
- limitDown = values[3],
- unit = values[4],
- result = values[5],
- updateTime = values[6]
+ GetSingleCell(cellIndex).SetInfos(new Info
+ {
+ step = values[0],
+ value = values[1],
+ limitUp = values[2],
+ limitDown = values[3],
+ unit = values[4],
+ result = values[5],
+ updateTime = values[6]
+ });
});
//session.Send("1");
}
@@ -536,10 +606,18 @@
public void RefreshCount(int ok, int ng)
{
infoTable.UpdateNumber(infoTable.okCount + ok, infoTable.ngCount + ng);
- IniFileHelper.WriteIniData($"Oven_{index}", "Pass", infoTable.okCount.ToString(),
- this.CountIniPath);
- IniFileHelper.WriteIniData($"Oven_{index}", "Fail", infoTable.ngCount.ToString(),
- this.CountIniPath);
+
+ if (ParamSetting.ProbeByModel)
+ {
+
+ }
+ else
+ {
+ IniFileHelper.WriteIniData($"Oven_{index}", "Pass", infoTable.okCount.ToString(),
+ this.CountIniPath);
+ IniFileHelper.WriteIniData($"Oven_{index}", "Fail", infoTable.ngCount.ToString(),
+ this.CountIniPath);
+ }
}
/// <summary>
@@ -595,7 +673,7 @@
using (FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write))
using (StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.UTF8))
{
- string title = string.Join(",", detailTempratures.Keys) + ",骞冲潎鍊�";
+ string title = string.Join(",", detailTempratures.Keys) + "," + this.lang("Tr.AvgTemp");
sw.WriteLine(title);
for (int i = 0; i < tempratures.Count; i++)
@@ -644,23 +722,45 @@
{
parent.SetOvenProduct(index, "");
}
- }
- public void ClearElectricData()
- {
foreach (var cell in cells)
{
- cell.ClearElectricData();
+ cell.RefreshProbe();
+ cell.RefreshCharts();
}
}
- public void ClearVData()
+ public void ClearCellData()
{
foreach (var cell in cells)
{
- cell.ClearVData();
+ cell.ClearChart();
}
}
+
+ //public void ClearElectricData()
+ //{
+ // foreach (var cell in cells)
+ // {
+ // cell.ClearElectricData();
+ // }
+ //}
+
+ //public void ClearVData()
+ //{
+ // foreach (var cell in cells)
+ // {
+ // cell.ClearVData();
+ // }
+ //}
+
+ //public void ClearWaterData()
+ //{
+ // foreach (var cell in cells)
+ // {
+ // cell.ClearWaterData();
+ // }
+ //}
private void Button_Click_1(object sender, RoutedEventArgs e)
{
@@ -671,12 +771,42 @@
setting.Open(true, this.title);
}
+ private void Manual_Cooler_Opt(object sender, RoutedEventArgs e)
+ {
+ //var btn = (Button)sender;
+ //var target = CoolerStatus == 2 ? 0 : 2;
+ //if (MsgBoxHelper2.WarnChoose($"纭畾瑕佽繘琛寋btn.Content}鍚楋紵") == MessageBoxResult.OK)
+ //{
+ // if (S7Context.WriteData("1", $"Oven{index + 1}_CoolerStatus", (ushort)target, out string msg))
+ // {
+ // CoolerStatus = (ushort)target;
+ // ToastHelper.Success("Success");
+ // }
+ // else
+ // {
+ // ToastHelper.Error($"{msg}");
+ // }
+ //}
+ if (parent.IsRunning)
+ {
+ MsgBoxHelper2.Warn(this.lang("Tr.CantOptCooler"));
+ return;
+ }
+ var columns = mainGrid.Columns;
+ var window = new CoolerStatus(this.index, columns, title + this.lang("Tr.CoolerSetting"))
+ {
+
+ Owner = Window.GetWindow(this)
+ };
+ window.ShowDialog();
+ }
+
private void ClearAllSnr_Click(object sender, RoutedEventArgs e)
{
- var str = $"StationState.DoorClose[{index}]";
- if (parent.engine.Globals.GetValBoolean(str, 0) == true)
+ if (GetDoorClose(parent.executionWrapper))
{
- MsgBoxHelper.Error(Window.GetWindow(this), "绋嬪簭杩愯涓紝涓嶈兘娓呯┖鏉$爜");
+ /// 鍏抽棬浜嗗氨涓嶅厑璁告竻鏉$爜
+ MsgBoxHelper2.Warn(this.lang("Tr.CantClearSNR"));
return;
}
@@ -705,10 +835,9 @@
public void TryClearCellSN(int cellIndex)
{
- var str = $"StationState.DoorClose[{this.index}]";
- if (parent.engine.Globals.GetValBoolean(str, 0) == true)
+ if (GetDoorClose(parent.executionWrapper))
{
- MsgBoxHelper.Error(Window.GetWindow(this), "绋嬪簭杩愯涓紝涓嶈兘娓呯┖鏉$爜");
+ MsgBoxHelper.Error(Window.GetWindow(this), this.lang("Tr.CantClearSNR"));
return;
}
ClearCellSN(cellIndex);
@@ -720,19 +849,48 @@
int dutNo = this.index * this.cellCount + index;
string LookupStr = $"StationState.SN[{dutNo}]";
var lastSN = cell.sn;
- cell.sn = "";
cell.SetStatus("waiting");
- parent.engine.Globals.SetValString(LookupStr, 1, "");
- parent.engine.CommitGlobalsToDisk(promptOnSaveConflicts: false);
+
+ parent.executionWrapper.SetStationGlobalValue<string>(LookupStr, 1, "");
+ parent.executionWrapper.CommitToDisk(false);
+
+ //parent.engine.Globals.SetValString(LookupStr, 1, "");
+ //parent.engine.CommitGlobalsToDisk(promptOnSaveConflicts: false);
if (!string.IsNullOrEmpty(lastSN)) Scanner.RemoveSNR(lastSN);
+ cell.ClearSN();
}
- private void Button_Click_2(object sender, RoutedEventArgs e)
+ private void Abort_Click(object sender, RoutedEventArgs e)
{
- if (MsgBoxHelper.WarnMessage(Window.GetWindow(this), "纭畾瑕佸仠姝㈣鐐変綅鐨勮�佸寲娴嬭瘯鍚楋紵") == MessageBoxResult.OK)
+ if (!parent.IsRunning)
{
- parent.SetStartFlag(this.index, false);
+ MsgBoxHelper.WarnMessage(this, this.lang("Tr.StartSeqFirst"), null, MessageBoxButton.OK);
+ return;
}
+
+ //string key = $"StationState.Start[{this.index}]";
+ //if (parent.executionWrapper?.GetStationGlobalValue<bool>(key, 0) == true)
+ //{
+ // MsgBoxHelper2.Warn("娴嬭瘯鍚姩涓紝涓嶅厑璁窤bort");
+ // return;
+ //}
+ var win = new RequirePasswordByUser("admin")
+ {
+ Owner = Window.GetWindow(this)
+ };
+ if (win.ShowDialog() != true)
+ {
+ return;
+ }
+
+ if (MsgBoxHelper2.WarnChoose("璇风‘璁よ�佸寲浠撳湪瀹夊叏娓╁害锛屾按鍐锋満鍚规按瀹屾垚锛屽崟鍑籓K鎸夐挳浠撲綅鍥炲埌鍒濆鍖栫姸鎬�") != MessageBoxResult.OK)
+ {
+ return;
+ }
+ LogHelper.Info("UI", $"{title} Abort鎸夐挳鎸変笅", out _);
+ ViewControl.Logger.Info($"{title} Abort鎸夐挳鎸変笅");
+ string key = $"StationState.Abort[{this.index}]";
+ parent.executionWrapper?.SetStationGlobalValue(key, 0, true);
}
}
}
--
Gitblit v1.9.1