From c401a2f2fd1a509cdeb33e850bb5c2827074af48 Mon Sep 17 00:00:00 2001
From: alielie <alielie@git.com>
Date: 星期一, 17 三月 2025 08:44:51 +0800
Subject: [PATCH] 完善框架,新增两个close方法;

---
 Plugin.TestResult/DataTable.xaml.cs |  134 +++++++++++++++++++++++++++++++++++---------
 1 files changed, 107 insertions(+), 27 deletions(-)

diff --git a/Plugin.TestResult/DataTable.xaml.cs b/Plugin.TestResult/DataTable.xaml.cs
index d0bb6a6..aa7f621 100644
--- a/Plugin.TestResult/DataTable.xaml.cs
+++ b/Plugin.TestResult/DataTable.xaml.cs
@@ -1,11 +1,10 @@
-锘縰sing Plugin.TestResult_WPF.Model;
+锘縰sing HMI.Core.Util;
+using HMI.Util;
+using Plugin.TestResult_WPF.Model;
 using SuperSocket.SocketBase.Protocol;
 using System;
 using System.ComponentModel;
-using System.Net;
-using System.Net.Sockets;
 using System.Runtime.CompilerServices;
-using System.Threading;
 using System.Windows;
 using System.Windows.Controls;
 
@@ -55,7 +54,7 @@
             set { RaiseAndSetIfchanged(ref tcpServerStatus, value); }
         }
 
-        private string tcpServerInfo = "鏈惎鍔�";
+        private string tcpServerInfo = LangUtil.Get("App.NotStarted");
 
         public string TcpServerInfo
         {
@@ -75,9 +74,13 @@
         private SingleCell[] cells;
 
         private TcpServer tcpServer;
+        private string CountIniPath;
 
-        public DataTable(TestResultView parent,int index, string title, BaseConfig config)
+        public DataTable(TestResultView parent, int index, string title,
+            string countIniPath,
+            BaseConfig config)
         {
+            this.CountIniPath = countIniPath;
             this.config = config;
             this.index = index;
             this.parent = parent;
@@ -88,8 +91,9 @@
             DataContext = this;
             InitializeComponent();
             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);
@@ -101,6 +105,7 @@
                 mainGrid.Children.Add(cell);
                 cells[i] = cell;
             }
+            ReadCount();
         }
 
         public int GetSize()
@@ -198,6 +203,9 @@
             multiChart.Clear();
         }
 
+        /// <summary>
+        /// 鍚姩Tcp鏈嶅姟鍣�
+        /// </summary>
         private void StartTcpServer()
         {
             try
@@ -208,39 +216,44 @@
                     tcpServer.NewRequestReceived += TcpServer_NewRequestReceived;
                     if (!tcpServer.Setup(config.PortStart + index))
                     {
-                        ChangeTcpServerStatus("ERROR", "鏈嶅姟璁剧疆寮傚父");
+                        ChangeTcpServerStatus("ERROR", this.lang("Tr.TcpServer.SettingFailed"));
                         return;
                     }
                     if (!tcpServer.Start())
                     {
-                        ChangeTcpServerStatus("ERROR", "鏈嶅姟鍚姩寮傚父");
+                        ChangeTcpServerStatus("ERROR", this.lang("Tr.TcpServer.StartFailed"));
                         return;
                     }
-                    ChangeTcpServerStatus("RUNNING", "鏈嶅姟杩愯涓�");
+                    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"));
+                        return;
+                    }
+                    if (!tcpServer.Start())
+                    {
+                        ChangeTcpServerStatus("ERROR", this.lang("Tr.TcpServer.StartFailed"));
+                        return;
+                    }
+                    ChangeTcpServerStatus("RUNNING", this.lang("Tr.TcpServer.Running"));
                 }
             }
             catch (Exception ex)
             {
-                ChangeTcpServerStatus("ERROR", $"鏈嶅姟寮傚父锛歿ex.Message}");
+                ChangeTcpServerStatus("ERROR", $"{ex.Message}");
                 tcpServer?.Stop();
                 tcpServer = null;
             }
         }
 
-        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(() =>
@@ -250,6 +263,35 @@
             });
         }
 
+        /// <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;
@@ -270,7 +312,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)

--
Gitblit v1.9.1