From 006c98e5650b530e5220f279c1e803fefe69d40d Mon Sep 17 00:00:00 2001
From: alielie <alielie@git.com>
Date: 星期二, 25 十一月 2025 15:47:33 +0800
Subject: [PATCH] 优化一些东西;
---
Plugin.TestResult/DataTable.xaml.cs | 260 +++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 238 insertions(+), 22 deletions(-)
diff --git a/Plugin.TestResult/DataTable.xaml.cs b/Plugin.TestResult/DataTable.xaml.cs
index 200341f..71069df 100644
--- a/Plugin.TestResult/DataTable.xaml.cs
+++ b/Plugin.TestResult/DataTable.xaml.cs
@@ -1,15 +1,20 @@
锘縰sing HMI.Core.Util;
+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 SuperSocket.SocketBase.Config;
using SuperSocket.SocketBase.Protocol;
using System;
-using System.CodeDom.Compiler;
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;
@@ -51,6 +56,14 @@
set => RaiseAndSetIfchanged(ref _statusText, value);
}
+ private bool _isTesting;
+
+ public bool IsTesting
+ {
+ get { return _isTesting; }
+ set => RaiseAndSetIfchanged(ref _isTesting, value);
+ }
+
private string tcpServerStatus;
public string TcpServerStatus
@@ -67,7 +80,7 @@
set { RaiseAndSetIfchanged(ref tcpServerInfo, value); }
}
- private static CommonCodeParser codeParser = new CommonCodeParser();
+ private static ICodeParser codeParser;
private readonly int index;
private readonly int cellCount;
private readonly string chartTitle;
@@ -80,6 +93,10 @@
private TcpServer tcpServer;
private string CountIniPath;
+
+ private DateTime? testStartTime;
+
+ private Timer testTimeTimer;
// 骞冲潎娓╁害
public List<double> tempratures = new List<double>();
@@ -112,11 +129,38 @@
for (int i = 0; i < this.cellCount; i++)
{
- var cell = new SingleCell(title, i, config.CellListMaxSize, countIniPath);
+ var cellRow = (i / config.PositionColumn) + 1;
+ var cellCol = (i % config.PositionColumn) + 1;
+ var cellTitle = $"{title}-{cellRow}-{cellCol}";
+
+ var cell = new SingleCell(this, cellTitle, i, config.CellListMaxSize, countIniPath);
mainGrid.Children.Add(cell);
cells[i] = cell;
}
+
+ if (config.CodeParserType == "JK01")
+ {
+ codeParser = new JKCodeParser();
+ }
+ else
+ {
+ codeParser = new CommonCodeParser();
+ }
ReadCount();
+ testTimeTimer = new Timer();
+ testTimeTimer.Interval = 10000;
+ testTimeTimer.AutoReset = true;
+ testTimeTimer.Elapsed += TestTimeTimer_Elapsed;
+ }
+
+ private void TestTimeTimer_Elapsed(object sender, ElapsedEventArgs e)
+ {
+ if (testStartTime == null) return;
+ var now = DateTime.Now;
+ Dispatcher.BeginInvoke(new Action(() =>
+ {
+ SetConsumeTime((now - testStartTime).Value.TotalSeconds);
+ }));
}
public int GetSize()
@@ -159,7 +203,42 @@
public void SetStatus(string status)
{
- infoTable.status = status;
+ ViewControl.Logger.Debug($"In Status: {status}");
+ Dispatcher.BeginInvoke(new Action(() =>
+ {
+ var lastStatus = infoTable.status;
+ if (status == "preCheck")
+ {
+ ViewControl.Logger.Debug($"In preCheck");
+ IsTesting = true;
+ return;
+ }
+ if (status == "stop")
+ {
+ IsTesting = false;
+ return;
+ }
+ if (status == "abort")
+ {
+ IsTesting = false;
+ }
+ 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;
+ }
+ }));
}
public void SetOkCount(int count)
@@ -215,26 +294,56 @@
private void SetStationGlobal_Click(object sender, RoutedEventArgs e)
{
- ClearChartData();
- parent.SetStartFlag(this.index, true);
+
+ }
+
+ private void StartSingleClick(object sender, RoutedEventArgs e)
+ {
+ if (IsTesting)
+ {
+ if (MsgBoxHelper2.WarnChoose($"纭疄鍋滄鑰佸寲鐐塠{title}]鐨勬祴璇曞悧") == MessageBoxResult.OK)
+ {
+ parent.SetStartFlag(this.index, false);
+ }
+ }
+ else
+ {
+ ClearChartData();
+ parent.SetStartFlag(this.index, true);
+ }
}
private void ScanWindow_Click(object sender, RoutedEventArgs e)
{
+ if (!parent.IsRunning)
+ {
+ MsgBoxHelper.WarnMessage(this, "璇峰厛鐐瑰嚮鍙充晶鍚姩鎸夐挳鍚姩娴嬭瘯绋嬪簭锛�", null, MessageBoxButton.OK);
+ return;
+ }
+
if (scanner != null)
{
- scanner.Activate();
+ scanner.ShowDialog();
}
else
{
scanner = new Scanner(this.lang("Tr.ScanTitle", title))
{
+ Owner = Window.GetWindow(this),
Tag = title
};
scanner.FinishBarcode += Scanner_FinishBarcode;
+ scanner.ComplateClick += Scanner_ComplateClick; ;
scanner.Closed += Scanner_Closed;
- scanner.Show();
+ scanner.ShowDialog();
}
+ }
+
+ 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);
}
private void Scanner_Closed(object sender, EventArgs e)
@@ -245,23 +354,50 @@
private void Scanner_FinishBarcode(object sender, BarcodeEventArg e)
{
if (parent.SequenceContext == null) return;
- CellInfo cellInfo = codeParser.GetCellInfoByCode(e.positionCode);
- string paramName = $"StationState.StartScanner_{title}";
- parent.engine.Globals.SetValBoolean(paramName, 0, true);
+ CellInfo cellInfo = codeParser.GetCellInfoByCode(e.positionCode);
string positionCode = e.positionCode, snrCode = e.snrCode;
- //TODO 闇�瑕佸鍔犳潯鐮佹牎楠屽姛鑳�
//灏嗚鍒扮殑鏉$爜鍐欏叆鍒癝N涓�
- int dutNo = Convert.ToInt16(positionCode.Split('-')[2]) - 1;
- dutNo = this.index * this.cellCount + dutNo;
+ int dutNo = this.index * this.cellCount + cellInfo.Index;
string LookupStr = $"StationState.SN[{dutNo}]";
- parent.engine.Globals.SetValString(LookupStr, 0, snrCode);
+ 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);
+ if (snrCode == null)
+ {
+ string oldLookUp = $"StationState.SN[{e.oldIndex}]";
+ var oldCellInfo = codeParser.GetCellInfoByCode(e.oldPosition);
+ var oldCell = parent.nameTables[oldCellInfo.OvenName].GetSingleCell(oldCellInfo.Index);
+ if (oldCell.status != "hadCode")
+ {
+ throw new Exception($"绌翠綅[{e.oldPosition}]褰撳墠涓嶅厑璁告竻闄ゆ潯鐮�!");
+ }
+ // 绉婚櫎鏉$爜
+ parent.engine.Globals.SetValString(oldLookUp, 1, "");
+ parent.engine.CommitGlobalsToDisk(promptOnSaveConflicts: false);
+
+ oldCell.SetStatus("waiting");
+ oldCell.sn = "";
+ return;
+ }
+
+ /// 娓呮帀涓婁釜鏉$爜鐨勮褰�
+ var lastSn = cell.sn;
+ if (!string.IsNullOrEmpty(lastSn))
+ {
+ Scanner.RemoveSNR(lastSn);
+ }
+
+ // 鍐欏叆鏉$爜
+ parent.engine.Globals.SetValString(LookupStr, 1, snrCode);
parent.engine.CommitGlobalsToDisk(promptOnSaveConflicts: false);
- string code = parent.engine.Globals.GetValString(LookupStr, 0);
+
parent.nameTables[cellInfo.OvenName].GetSingleCell(cellInfo.Index).SetStatus("hadCode");
+ parent.nameTables[cellInfo.OvenName].GetSingleCell(cellInfo.Index).sn = snrCode;
+ Scanner.InsertNewCode(snrCode, positionCode, dutNo);
}
@@ -282,13 +418,18 @@
/// </summary>
private void StartTcpServer()
{
+ var serverConfig = new ServerConfig()
+ {
+ MaxRequestLength = 1024 * 1024,
+ Port = config.PortStart + index
+ };
try
{
if (tcpServer == null)
{
tcpServer = new TcpServer();
tcpServer.NewRequestReceived += TcpServer_NewRequestReceived;
- if (!tcpServer.Setup(config.PortStart + index))
+ if (!tcpServer.Setup(serverConfig))
{
ChangeTcpServerStatus("ERROR", this.lang("Tr.TcpServer.SettingFailed"));
return;
@@ -302,7 +443,7 @@
}
else if (tcpServer.State != SuperSocket.SocketBase.ServerState.Running)
{
- if (!tcpServer.Setup(config.PortStart + index))
+ if (!tcpServer.Setup(serverConfig))
{
ChangeTcpServerStatus("ERROR", this.lang("Tr.TcpServer.SettingFailed"));
return;
@@ -358,6 +499,7 @@
/// </summary>
public void RelaseResource()
{
+ testTimeTimer?.Stop();
StopTcpServer();
}
@@ -369,6 +511,7 @@
private void TcpServer_NewRequestReceived(TcpSession session, StringRequestInfo requestInfo)
{
string msg = requestInfo.Body;
+ ViewControl.Logger.Debug($"TCP Data From {session.RemoteEndPoint}: {msg}.");
string[] datas_10015 = msg.Split(';');
int cellIndex = int.Parse(datas_10015[1]);
@@ -381,10 +524,11 @@
{
step = values[0],
value = values[1],
- result = values[2],
- range = values[3],
- condition = values[4],
- updateTime = values[5]
+ limitUp = values[2],
+ limitDown = values[3],
+ unit = values[4],
+ result = values[5],
+ updateTime = values[6]
});
//session.Send("1");
}
@@ -510,6 +654,14 @@
}
}
+ public void ClearVData()
+ {
+ foreach (var cell in cells)
+ {
+ cell.ClearVData();
+ }
+ }
+
private void Button_Click_1(object sender, RoutedEventArgs e)
{
ScannerSetting setting = new ScannerSetting()
@@ -518,5 +670,69 @@
};
setting.Open(true, this.title);
}
+
+ private void ClearAllSnr_Click(object sender, RoutedEventArgs e)
+ {
+ var str = $"StationState.DoorClose[{index}]";
+ if (parent.engine.Globals.GetValBoolean(str, 0) == true)
+ {
+ MsgBoxHelper.Error(Window.GetWindow(this), "绋嬪簭杩愯涓紝涓嶈兘娓呯┖鏉$爜");
+ return;
+ }
+
+ if (MsgBoxHelper.WarnMessage(Window.GetWindow(this), LangUtil.Get("Tr.MakeSureClearAllSNR")) == MessageBoxResult.OK)
+ {
+ try
+ {
+ ClearAllSN();
+ ToastHelper.Success(LangUtil.Get("App.DeleteSuccess"));
+ }
+ catch (Exception ex)
+ {
+ ViewControl.Logger.Error("ClearAllSnr_Click Error.", ex);
+ MsgBoxHelper.Error(Window.GetWindow(this), ex.Message);
+ }
+ }
+ }
+
+ public void ClearAllSN()
+ {
+ for (int i = 0; i < this.cellCount; i++)
+ {
+ ClearCellSN(i);
+ }
+ }
+
+ public void TryClearCellSN(int cellIndex)
+ {
+ var str = $"StationState.DoorClose[{this.index}]";
+ if (parent.engine.Globals.GetValBoolean(str, 0) == true)
+ {
+ MsgBoxHelper.Error(Window.GetWindow(this), "绋嬪簭杩愯涓紝涓嶈兘娓呯┖鏉$爜");
+ return;
+ }
+ ClearCellSN(cellIndex);
+ }
+
+ private void ClearCellSN(int index)
+ {
+ var cell = GetSingleCell(index);
+ 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);
+ if (!string.IsNullOrEmpty(lastSN)) Scanner.RemoveSNR(lastSN);
+ }
+
+ private void Button_Click_2(object sender, RoutedEventArgs e)
+ {
+ if (MsgBoxHelper.WarnMessage(Window.GetWindow(this), "纭畾瑕佸仠姝㈣鐐変綅鐨勮�佸寲娴嬭瘯鍚楋紵") == MessageBoxResult.OK)
+ {
+ parent.SetStartFlag(this.index, false);
+ }
+ }
}
}
--
Gitblit v1.9.1