alielie
2025-03-17 c401a2f2fd1a509cdeb33e850bb5c2827074af48
Plugin.TestResult/DataTable.xaml.cs
@@ -1,4 +1,5 @@
using HMI.Core.Util;
using HMI.Util;
using Plugin.TestResult_WPF.Model;
using SuperSocket.SocketBase.Protocol;
using System;
@@ -73,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;
@@ -86,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);
@@ -99,6 +105,7 @@
                mainGrid.Children.Add(cell);
                cells[i] = cell;
            }
            ReadCount();
        }
        public int GetSize()
@@ -196,6 +203,9 @@
            multiChart.Clear();
        }
        /// <summary>
        /// 启动Tcp服务器
        /// </summary>
        private void StartTcpServer()
        {
            try
@@ -204,6 +214,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 +249,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,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;
@@ -268,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)