| | |
| | | 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.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> |
| | |
| | | private ILog log = LogManager.GetLogger("UnitTest"); |
| | | public MainWindow() |
| | | { |
| | | ProductModelHelper.GetModelBySNR("cc123", out string model, out string msg); |
| | | 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) |
| | | { |
| | | 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); |
| | | } |
| | | }); |
| | | //var win = new ManualDebug() |
| | | //{ |
| | | // seqPath = "C:\\Users\\chrry\\Desktop\\手动调试示例.seq" |
| | | //}; |
| | | |
| | | 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); |
| | | } |
| | | }); |
| | | //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(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(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(() => |
| | | //{ |
| | |
| | | //}); |
| | | |
| | | //tsExecution.UpdatePositionStatus(0, "Passed"); |
| | | tsExecution.UpdatePositionStatus(0, "Failed"); |
| | | //tsExecution.UpdatePositionStatus(0, "Failed"); |
| | | //tsExecution.UpdatePositionProcessValue(0, 12); |
| | | //tsExecution.PausePosition(0); |
| | | //tsExecution.SetPositionBarcode(0, "123456789"); |
| | |
| | | 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) |
| | | { |
| | |
| | | |
| | | 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; |
| | | } |
| | | } |