wenxiangchao
4 天以前 2e889843b4c171f2d6ad8e0d53084040703d11f6
HMI.UnitTest/MainWindow.xaml.cs
@@ -1,17 +1,20 @@
using ConnectionUtil;
using HMI.Core.Api;
using HMI.Core.Util;
using HMI.Simple.Util;
using HslCommunication.Core.Pipe;
using HslCommunication.Profinet.Siemens;
using log4net;
using Panuon.WPF.UI;
using PLCHelper;
using Plugin.DataBoard;
using Plugin.TestBuilder;
using Plugin.TestResult_WPF;
using Plugin.TsExecution;
using Plugin.UICollection;
using System;
using System.Threading;
using System.Threading.Tasks;
using System.IO;
using System.Windows;
using System.Xml.Linq;
namespace UnitTest
{
    /// <summary>
@@ -22,17 +25,135 @@
        private ILog log = LogManager.GetLogger("UnitTest");
        public MainWindow()
        {
            LangUtil.Load();
            InitializeComponent();
            //ProductModelHelper.GetModelBySNR("cc123", out string model, out string msg);
            //LangUtil.Load();
            //InitializeComponent();
            ////RebuildDb();
            //border2.Child = new TcpDebugger();
            var client = new SiemensS7Net(SiemensPLCS.S1500);
            PipeTcpNet pipeTcpNet = new PipeTcpNet("127.0.0.1", 102);
            pipeTcpNet.ConnectTimeOut = 200;
            pipeTcpNet.ReceiveTimeOut = 200;
            client.CommunicationPipe = pipeTcpNet;
            client.ConnectServer();
            var ss = new IntReader(client, "DB10.DBW100", 0);
            ss.DataChanged += Ss_DataChanged;
            ss.Run();
            //page.Children.Add(new UserControl1());
        }
        private void Ss_DataChanged(object sender, DataChangedArg<int> e)
        {
            MessageBox.Show($"{e.oldValue} => {e.newValue}");
        }
        TcpClientWrapper tcpClient;
        PipeClient2 client;
        public string Conv(object obj)
        {
            if (obj == null || obj is DBNull)
            {
                return "NULL";
            }
            if (obj is DateTime dt)
            {
                return $"'{dt.ToString("yyyy-MM-dd HH:mm:ss")}'";
            }
            return $"'{obj.ToString()}'";
        }
        public void RebuildDb()
        {
            string folder = "C:\\Workspace\\VisualStudio\\WPFProject\\WPFProject\\bin\\x64\\Debug\\Config\\DataBoard";
            var startDate = DateTime.Parse("2025-10-01");
            var endDate = startDate.AddDays(1);
            SqliteHelper sourceHelper = new SqliteHelper("C:\\Workspace\\VisualStudio\\WPFProject\\WPFProject\\bin\\x64\\Debug\\Config\\DataBoard\\DataLog.db");
            while (endDate < DateTime.Parse("2025-10-12"))
            {
                string targetFile = Path.Combine(folder, $"Data_{startDate.ToString("yyyyMMdd")}.db");
                SqliteHelper targetHelper = null;
                if (!File.Exists(targetFile))
                {
                    SqliteHelper.CreateDatabase(targetFile);
                    targetHelper = new SqliteHelper(targetFile);
                    targetHelper.ExecuteSql(@"CREATE TABLE IF NOT EXISTS serialData (
                    id INTEGER PRIMARY KEY AUTOINCREMENT,
                    sn TEXT NOT NULL,
                    model TEXT,
                    station TEXT NOT NULL,
                    step TEXT NOT NULL,
                    position TEXT,
                    limitDown TEXT,
                    limitUp TEXT,
                    unit TEXT,
                    offset TEXT,
                    value TEXT,
                    status TEXT,
                    finalStatus TEXT,
                    consumeTime TEXT,
                    totalConsumeTime TEXT,
                    time DATETIME NOT NULL);");
                    targetHelper.ExecuteSql(@"CREATE TABLE IF NOT EXISTS testResult (
                    id INTEGER PRIMARY KEY AUTOINCREMENT,
                    sn TEXT NOT NULL,
                    model TEXT,
                    station TEXT NOT NULL,
                    position TEXT,
                    status TEXT,
                    result TEXT NOT NULL,
                    time DATETIME NOT NULL);");
                    string sql = $@"SELECT sn,model,station,step,position,limitDown,limitUp,unit,offset,value,status,
finalStatus,consumeTime,totalConsumeTime,time
FROM serialData WHERE time>='{startDate.ToString("yyyy-MM-dd")}' AND time < '{endDate.ToString("yyyy-MM-dd")}';";
                    var dt = sourceHelper.GetDataTable(sql);
                    foreach (System.Data.DataRow dr in dt.Rows)
                    {
                        targetHelper.ExecuteSql($@"INSERT INTO serialData
(sn,model,station,step,position,limitDown,limitUp,unit,offset,value,status,finalStatus,consumeTime,totalConsumeTime,time) VALUES
({Conv(dr["sn"])}, {Conv(dr["model"])}, {Conv(dr["station"])}, {Conv(dr["step"])}, {Conv(dr["position"])}, {Conv(dr["limitDown"])}, {Conv(dr["limitUP"])},
{Conv(dr["unit"])}, {Conv(dr["offset"])}, {Conv(dr["value"])}, {Conv(dr["status"])}, {Conv(dr["finalStatus"])}, {Conv(dr["consumeTime"])},
{Conv(dr["totalConsumeTime"])}, {Conv(dr["time"])})");
                    }
                    sql = $@"SELECT sn,model,station,position,status,result,time FROM testResult WHERE time>='{startDate.ToString("yyyy-MM-dd")}'
AND time < '{endDate.ToString("yyyy-MM-dd")}';";
                    dt = sourceHelper.GetDataTable(sql);
                    foreach (System.Data.DataRow dr in dt.Rows)
                    {
                        targetHelper.ExecuteSql($@"INSERT INTO testResult
(sn,model,station,position,status,result,time) VALUES
({Conv(dr["sn"])}, {Conv(dr["model"])}, {Conv(dr["station"])}, {Conv(dr["position"])}, {Conv(dr["status"])}, {Conv(dr["result"])}, {Conv(dr["time"])})");
                    }
                    targetHelper.Dispose();
                    startDate = startDate.AddDays(1);
                    endDate = endDate.AddDays(1);
                }
            }
            sourceHelper.Dispose();
        }
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            //var win = new ManualDebug()
            //{
            //    seqPath = "C:\\Users\\chrry\\Desktop\\手动调试示例.seq"
            //};
            //win.Show();
            //Task.Run(() =>
            //{
            //    for (int j = 0; j < 1000; j++)
@@ -40,11 +161,56 @@
            //        string status = (j % 2 == 0) ? "Passed" : "Failed";
            //        string d = (j % 2 == 0) ? "9" : "9999999999999999999999999999999999999999999999999999999999999999995";
            //        tsExecution.AddTestData(0, $"ConnectivityCANRec,2,3,4,{d},6,{status}");
            //        Thread.Sleep(5);
            //    }
            //});
            //Task.Run(() =>
            //{
            //    for (int j = 0; j < 1000; j++)
            //    {
            //        string status = (j % 2 == 0) ? "Passed" : "Failed";
            //        string d = (j % 2 == 0) ? "9" : "9999999999999999999999999999999999999999999999999999999999999999995";
            //        tsExecution.AddTestData(1, $"ConnectivityCANRec,2,3,4,{d},6,{status}");
            //        Thread.Sleep(5);
            //    }
            //});
            //Task.Run(() =>
            //{
            //    for (int j = 0; j < 1000; j++)
            //    {
            //        string status = (j % 2 == 0) ? "Passed" : "Failed";
            //        string d = (j % 2 == 0) ? "9" : "9999999999999999999999999999999999999999999999999999999999999999995";
            //        tsExecution.AddTestData(2, $"ConnectivityCANRec,2,3,4,{d},6,{status}");
            //        Thread.Sleep(5);
            //    }
            //});
            //Task.Run(() =>
            //{
            //    for (int j = 0; j < 1000; j++)
            //    {
            //        string status = (j % 2 == 0) ? "Passed" : "Failed";
            //        string d = (j % 2 == 0) ? "9" : "9999999999999999999999999999999999999999999999999999999999999999995";
            //        tsExecution.AddTestData(3, $"ConnectivityCANRec,2,3,4,{d},6,{status}");
            //        Thread.Sleep(5);
            //    }
            //});
            //Task.Run(() =>
            //{
            //    for (int j = 0; j < 1000; j++)
            //    {
            //        string status = (j % 2 == 0) ? "Passed" : "Failed";
            //        string d = (j % 2 == 0) ? "9" : "9999999999999999999999999999999999999999999999999999999999999999995";
            //        tsExecution.AddTestData(1, $"ConnectivityCANRec,2,3,4,{d},6,{status}");
            //        Thread.Sleep(5);
            //    }
            //});
            //tsExecution.UpdatePositionStatus(0, "Passed");
            tsExecution.UpdatePositionStatus(0, "Failed");
            //tsExecution.UpdatePositionStatus(0, "Failed");
            //tsExecution.UpdatePositionProcessValue(0, 12);
            //tsExecution.PausePosition(0);
            //tsExecution.SetPositionBarcode(0, "123456789");
@@ -77,73 +243,6 @@
            Console.WriteLine($"{e.Data}");
        }
        private void Client_OnData(object sender, PipeDataEventArgs e)
        {
            Dispatcher.Invoke(() =>
            {
                console.Text += e.Data;
            });
        }
        private void Button_Click2(object sender, RoutedEventArgs e)
        {
            var allStart = DateTime.Now;
            for (int i = 0; i < 100; i++)
            {
                var start = DateTime.Now;
                if (client.SendMessage("ping", out string res))
                {
                    var interval = (DateTime.Now - start).TotalMilliseconds;
                    Console.WriteLine($"{interval}: {res}");
                }
            }
            Console.WriteLine($"Total: {(DateTime.Now - allStart).TotalMilliseconds}");
        }
        private void Button_Click3(object sender, RoutedEventArgs e)
        {
            try
            {
                var allStart = DateTime.Now;
                for (int i = 0; i < 500; i++)
                {
                    var start = DateTime.Now;
                    string data = input.Text;
                    string str = $"{{\"command\":5,\"value\":{data},\"id\":\"DITag0\"}}\r\n";
                    string res = tcpClient.SendMessage(str);
                    var interval = (DateTime.Now - start).TotalMilliseconds;
                    Console.WriteLine($"{interval}: {res}");
                }
                Console.WriteLine($"Total: {(DateTime.Now - allStart).TotalMilliseconds}");
            }
            catch (Exception ex)
            {
            }
        }
        private void Button_Click4(object sender, RoutedEventArgs e)
        {
            try
            {
                var allStart = DateTime.Now;
                for (int i = 0; i < 500; i++)
                {
                    var start = DateTime.Now;
                    string data = input.Text;
                    string str = $"{{\"command\":5,\"value\":{data},\"id\":\"DITag0\"}}";
                    client.SendMessage(str, out string res);
                    var interval = (DateTime.Now - start).TotalMilliseconds;
                    Console.WriteLine($"{interval}: {res}");
                }
                Console.WriteLine($"Total: {(DateTime.Now - allStart).TotalMilliseconds}");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.StackTrace);
            }
        }
        private void HandlePlugin(object obj)
        {
@@ -160,15 +259,14 @@
        private TsExecution tsExecution;
        private TestBuilder testBuilder;
        private DataBoard dataBoard;
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            var plugin = new TsExecution();
            HandlePlugin(plugin);
            border.Child = plugin;
            tsExecution = plugin;
            //var plugin = new TsExecution();
            //HandlePlugin(plugin);
            //border.Child = plugin;
            //tsExecution = plugin;
            this.Loaded -= Window_Loaded;
        }
    }