alielie
2026-03-02 12e606635c42ea20f4b7c2bdda5204237a4b4c96
HMI.UnitTest/MainWindow.xaml.cs
@@ -3,15 +3,16 @@
using HMI.Core.Util;
using HMI.Simple.Util;
using log4net;
using ModBusTcp;
using Panuon.WPF.UI;
using Plugin.DataBoard;
using Plugin.TestResult_WPF;
using Plugin.TsExecution;
using System;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
namespace UnitTest
{
    /// <summary>
@@ -25,6 +26,25 @@
            ProductModelHelper.GetModelBySNR("cc123", out string model, out string msg);
            LangUtil.Load();
            InitializeComponent();
            //RebuildDb();
            ModBusTcpController controller = new ModBusTcpController("127.0.0.1", 502);
            if (controller.Start(out msg)) {
                bool res;
                int? target;
                controller.WriteBool("1", true, out msg);
                controller.ReadDOBool("1", out res, out msg);
                Console.WriteLine(res);
                controller.ReadDOInt("1", out target, out msg);
                Console.WriteLine(target);
                controller.WriteInt("1", 1, out msg);
                controller.ReadDOInt("1", out target, out msg);
                Console.WriteLine(target);
                Console.WriteLine(target);
            }
            //page.Children.Add(new UserControl1());
        }
@@ -32,40 +52,128 @@
        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)
        {
            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(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(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(2, $"ConnectivityCANRec,2,3,4,{d},6,{status}");
            //        Thread.Sleep(5);
            //    }
            //});
            //Task.Run(() =>
            //{