alielie
2026-04-23 ef52fd6fd07508883dce4eb002acda59f0169e59
HMI.UnitTest/MainWindow.xaml.cs
@@ -1,31 +1,253 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ConnectionUtil;
using HMI.Core.Api;
using HMI.Core.Util;
using HMI.Simple.Util;
using log4net;
using Panuon.WPF.UI;
using Plugin.DataBoard;
using Plugin.TestResult_WPF;
using Plugin.TsExecution;
using Plugin.UICollection;
using System;
using System.IO;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using HMI.SettingControl;
using Util.ManualDebug;
namespace UnitTest
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    public partial class MainWindow : WindowX
    {
        private ILog log = LogManager.GetLogger("UnitTest");
        public MainWindow()
        {
            ProductModelHelper.GetModelBySNR("cc123", out string model, out string msg);
            LangUtil.Load();
            InitializeComponent();
            page.Children.Clear();
            page.Children.Add(new SettingControl());
            //RebuildDb();
            border2.Child = new TcpDebugger();
            //page.Children.Add(new UserControl1());
        }
        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++)
            //    {
            //        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.UpdatePositionProcessValue(0, 12);
            //tsExecution.PausePosition(0);
            //tsExecution.SetPositionBarcode(0, "123456789");
            //tsExecution.SavePositionCSV(0);
            //tsExecution.UpdatePositionStatus(1, "Failed");
            //tsExecution.UpdatePositionStatus(2, "Ready");
            //tsExecution.UpdatePositionStatus(3, "Testing");
            //tsExecution.UpdatePositionProcessValue(1, 50);
            //tsExecution.UpdatePositionProcessValue(2, 100);
            //tsExecution.UpdatePositionProcessValue(3, 99);
            //client = new PipeClient2("DAService");
            ////client.OnData += Client_OnData1;
            //client.Connect();
            //tcpClient = new TcpClientWrapper("127.0.0.1", 5555);
            //tcpClient.Connect();
            //viewControl.View.GetDataTable(0).GetSingleCell(0).SetStatus("testing");
            //new Thread(new ThreadStart(PipeServerMessage)).Start();
            //new Thread(new ThreadStart(PipeClientMessage)).Start();
        }
        private void Client_OnData1(object sender, PipeDataEventArgs e)
        {
            Console.WriteLine($"{e.Data}");
        }
        private void HandlePlugin(object obj)
        {
            if (obj is IPlugin plugin)
            {
                plugin.SetBaseFolder("C:\\Workspace\\VisualStudio\\WPFProject\\WPFProject\\bin\\x64\\Debug\\Config\\TsExecution");
                plugin.SetLogger(log);
                plugin.InitFinish();
            }
        }
        private ViewControl viewControl;
        private TsExecution tsExecution;
        private DataBoard dataBoard;
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            //var plugin = new TsExecution();
            //HandlePlugin(plugin);
            //border.Child = plugin;
            //tsExecution = plugin;
            this.Loaded -= Window_Loaded;
        }
    }
}