From c4a3f8db90530a727ffab77c3bb5bb7d782792bf Mon Sep 17 00:00:00 2001
From: alielie <alielie@git.com>
Date: 星期一, 25 八月 2025 15:50:27 +0800
Subject: [PATCH] 上传代码;
---
Plugin.TestResult/DataTable.xaml.cs | 323 ++++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 303 insertions(+), 20 deletions(-)
diff --git a/Plugin.TestResult/DataTable.xaml.cs b/Plugin.TestResult/DataTable.xaml.cs
index 884fc6c..84911cd 100644
--- a/Plugin.TestResult/DataTable.xaml.cs
+++ b/Plugin.TestResult/DataTable.xaml.cs
@@ -1,8 +1,14 @@
锘縰sing HMI.Core.Util;
+using HMI.UI.Util;
+using HMI.Util;
+using Plugin.TestResult;
using Plugin.TestResult_WPF.Model;
+using Plugin.TestResult_WPF.Util;
using SuperSocket.SocketBase.Protocol;
using System;
+using System.Collections.Generic;
using System.ComponentModel;
+using System.IO;
using System.Runtime.CompilerServices;
using System.Windows;
using System.Windows.Controls;
@@ -61,7 +67,7 @@
set { RaiseAndSetIfchanged(ref tcpServerInfo, value); }
}
-
+ private static CommonCodeParser codeParser = new CommonCodeParser();
private readonly int index;
private readonly int cellCount;
private readonly string chartTitle;
@@ -73,9 +79,18 @@
private SingleCell[] cells;
private TcpServer tcpServer;
+ private string CountIniPath;
- public DataTable(TestResultView parent,int index, string title, BaseConfig config)
+ // 骞冲潎娓╁害
+ public List<double> tempratures = new List<double>();
+ public Dictionary<string, List<double>> detailTempratures
+ = new Dictionary<string, List<double>>();
+
+ public DataTable(TestResultView parent, int index, string title,
+ string countIniPath,
+ BaseConfig config)
{
+ this.CountIniPath = countIniPath;
this.config = config;
this.index = index;
this.parent = parent;
@@ -85,9 +100,11 @@
this.chartTitle = config.MainChartTitle;
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) {
- BorderThickness = new Thickness(0)
+ this.multiChart = new Chart(config.DetailChartTitle, true, config.MaxSize, config.RefreshInterval)
+ {
+ BorderThickness = new Thickness(0)
};
this.grid.Children.Add(this.chart);
Grid.SetRow(this.chart, 2);
@@ -95,10 +112,11 @@
for (int i = 0; i < this.cellCount; i++)
{
- var cell = new SingleCell(title, i, config.CellListMaxSize);
+ var cell = new SingleCell(title, i, config.CellListMaxSize, countIniPath);
mainGrid.Children.Add(cell);
cells[i] = cell;
}
+ ReadCount();
}
public int GetSize()
@@ -119,11 +137,23 @@
public void SetTemperature(double t)
{
infoTable.temperature = t;
+ tempratures.Add(t);
chart.AddData(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);
}
@@ -176,6 +206,8 @@
}
}
+ private Scanner scanner;
+
private void Window_Closed(object sender, EventArgs e)
{
window = null;
@@ -187,6 +219,59 @@
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();
+ }
+ else
+ {
+ scanner = new Scanner(this.lang("Tr.ScanTitle", title))
+ {
+ Tag = title
+ };
+ scanner.FinishBarcode += Scanner_FinishBarcode;
+ scanner.Closed += Scanner_Closed;
+ scanner.Show();
+ }
+ }
+
+ private void Scanner_Closed(object sender, EventArgs e)
+ {
+ scanner = null;
+ }
+
+ 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);
+ string positionCode = e.positionCode, snrCode = e.snrCode;
+ //TODO 闇�瑕佸鍔犳潯鐮佹牎楠屽姛鑳�
+
+ //灏嗚鍒扮殑鏉$爜鍐欏叆鍒癝N涓�
+ int dutNo = Convert.ToInt16(positionCode.Split('-')[2]) - 1;
+ dutNo = this.index * this.cellCount + dutNo;
+
+ string LookupStr = $"StationState.SN[{dutNo}]";
+ ViewControl.Logger.Info($"PositionCode: [{e.positionCode}], SNR: [{e.snrCode}], LookUpStr: [{LookupStr}]");
+
+ parent.engine.Globals.SetValString(LookupStr, 0, snrCode);
+ parent.engine.CommitGlobalsToDisk(promptOnSaveConflicts: false);
+ string code = parent.engine.Globals.GetValString(LookupStr, 0);
+ parent.nameTables[cellInfo.OvenName].GetSingleCell(cellInfo.Index).SetStatus("hadCode");
+ }
+
+
/// <summary>
/// 娓呯┖涓や釜鍥捐〃鏁版嵁
/// </summary>
@@ -194,8 +279,14 @@
{
chart.Clear();
multiChart.Clear();
+
+ tempratures.Clear();
+ detailTempratures.Clear();
}
+ /// <summary>
+ /// 鍚姩Tcp鏈嶅姟鍣�
+ /// </summary>
private void StartTcpServer()
{
try
@@ -204,6 +295,20 @@
{
tcpServer = new TcpServer();
tcpServer.NewRequestReceived += TcpServer_NewRequestReceived;
+ if (!tcpServer.Setup(config.PortStart + index))
+ {
+ ChangeTcpServerStatus("ERROR", this.lang("Tr.TcpServer.SettingFailed"));
+ return;
+ }
+ if (!tcpServer.Start())
+ {
+ ChangeTcpServerStatus("ERROR", this.lang("Tr.TcpServer.StartFailed"));
+ return;
+ }
+ ChangeTcpServerStatus("RUNNING", this.lang("Tr.TcpServer.Running"));
+ }
+ else if (tcpServer.State != SuperSocket.SocketBase.ServerState.Running)
+ {
if (!tcpServer.Setup(config.PortStart + index))
{
ChangeTcpServerStatus("ERROR", this.lang("Tr.TcpServer.SettingFailed"));
@@ -225,20 +330,11 @@
}
}
- private void StopTcpServer()
- {
- if (tcpServer == null) return;
- try
- {
- tcpServer.Stop();
- tcpServer = null;
- }
- catch (Exception ex)
- {
-
- }
- }
-
+ /// <summary>
+ /// 鏇存柊Tcp鏈嶅姟鍣ㄧ姸鎬�
+ /// </summary>
+ /// <param name="status"></param>
+ /// <param name="info"></param>
private void ChangeTcpServerStatus(string status, string info)
{
Dispatcher.Invoke(() =>
@@ -248,9 +344,39 @@
});
}
+ /// <summary>
+ /// 鍋滄Tcp鏈嶅姟鍣�
+ /// </summary>
+ private void StopTcpServer()
+ {
+ try
+ {
+ tcpServer?.Stop();
+ tcpServer = null;
+ }
+ catch (Exception ex)
+ {
+
+ }
+ }
+
+ /// <summary>
+ /// 閲婃斁璧勬簮
+ /// </summary>
+ public void RelaseResource()
+ {
+ StopTcpServer();
+ }
+
+ /// <summary>
+ /// Tcp娑堟伅澶勭悊
+ /// </summary>
+ /// <param name="session"></param>
+ /// <param name="requestInfo"></param>
private void TcpServer_NewRequestReceived(TcpSession session, StringRequestInfo requestInfo)
{
string msg = requestInfo.Body;
+ //ViewControl.Logger.Info($"TCP Data From {session.RemoteEndPoint}: {msg}.");
string[] datas_10015 = msg.Split(';');
int cellIndex = int.Parse(datas_10015[1]);
@@ -268,7 +394,45 @@
condition = values[4],
updateTime = values[5]
});
- session.Send("1");
+ //session.Send("1");
+ }
+
+ 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);
+ }
+
+ /// <summary>
+ /// 璇诲彇淇濆瓨鐨勬暟鎹�
+ /// </summary>
+ public void ReadCount()
+ {
+ try
+ {
+ int ok = Convert.ToInt32(IniFileHelper.ReadIniData($"Oven_{index}", "Pass", "", CountIniPath));
+ int ng = Convert.ToInt32(IniFileHelper.ReadIniData($"Oven_{index}", "Fail", "", CountIniPath));
+ infoTable.UpdateNumber(ok, ng);
+ }
+ catch (Exception ex)
+ {
+ //do nothing
+ }
+ }
+
+ /// <summary>
+ /// 璁℃暟娓呴浂
+ /// </summary>
+ public void ClearNumber()
+ {
+ infoTable.UpdateNumber(0, 0);
+ IniFileHelper.WriteIniData($"Oven_{index}", "Pass", infoTable.okCount.ToString(),
+ this.CountIniPath);
+ IniFileHelper.WriteIniData($"Oven_{index}", "Fail", infoTable.ngCount.ToString(),
+ this.CountIniPath);
}
private void UserControl_Loaded(object sender, RoutedEventArgs e)
@@ -281,5 +445,124 @@
{
StartTcpServer();
}
+
+ public void SaveTempFile(string filePath)
+ {
+ try
+ {
+ FileInfo fi = new FileInfo(filePath);
+ if (!fi.Directory.Exists)
+ {
+ fi.Directory.Create(); //鏂囦欢涓嶅瓨鍦紝鍒涘缓鏂囦欢
+ }
+
+ 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) + ",骞冲潎鍊�";
+ sw.WriteLine(title);
+
+ for (int i = 0; i < tempratures.Count; i++)
+ {
+ string line = "";
+ foreach (string key in detailTempratures.Keys)
+ {
+ if (detailTempratures[key] == null || detailTempratures[key].Count <= i)
+ {
+ line += ",";
+ }
+ else
+ {
+ line += $"{detailTempratures[key][i]},";
+ }
+ }
+ line += tempratures[i];
+ sw.WriteLine(line);
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine(ex.ToString());
+ }
+ }
+
+ public void SetProductSource(List<string> productSource)
+ {
+ CbProduct.ItemsSource = productSource;
+ }
+
+ public void SetCurrentProduct(string currentProduct)
+ {
+ CbProduct.SelectedItem = currentProduct;
+ }
+
+ private void CbProduct_SelectionChanged(object sender, SelectionChangedEventArgs e)
+ {
+ if (e.AddedItems.Count > 0)
+ {
+ var str = e.AddedItems[0];
+ parent.SetOvenProduct(index, str.ToString());
+ }
+ else
+ {
+ parent.SetOvenProduct(index, "");
+ }
+ }
+
+ public void ClearElectricData()
+ {
+ foreach (var cell in cells)
+ {
+ cell.ClearElectricData();
+ }
+ }
+
+ private void Button_Click_1(object sender, RoutedEventArgs e)
+ {
+ ScannerSetting setting = new ScannerSetting()
+ {
+ Owner = Window.GetWindow(this)
+ };
+ setting.Open(true, this.title);
+ }
+
+ private void ClearAllSnr_Click(object sender, RoutedEventArgs e)
+ {
+ var str = $"StationState.Start_{title}";
+ 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
+ {
+ for (int i = 0; i < this.cellCount; i++)
+ {
+ int dutNo = this.index * this.cellCount + i;
+ string LookupStr = $"StationState.SN[{dutNo}]";
+ parent.engine.Globals.SetValString(LookupStr, 0, "");
+ GetSingleCell(i).SetStatus("waiting");
+ }
+ ToastHelper.Success(LangUtil.Get("App.DeleteSuccess"));
+ }
+ catch (Exception ex)
+ {
+ ViewControl.Logger.Error("ClearAllSnr_Click Error.", ex);
+ MsgBoxHelper.Error(Window.GetWindow(this), ex.Message);
+ }
+ }
+ }
+
+ 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