From 9211ec11c112e18cd99e77f889a01110a70031ce Mon Sep 17 00:00:00 2001
From: alielie <alielie@git.com>
Date: 星期一, 24 十一月 2025 17:47:15 +0800
Subject: [PATCH] 优化项目结构
---
Plugin.TsExecution/TsExecution.xaml.cs | 226 +++++++++++++++++++++++++++-----------------------------
1 files changed, 108 insertions(+), 118 deletions(-)
diff --git a/Plugin.TsExecution/TsExecution.xaml.cs b/Plugin.TsExecution/TsExecution.xaml.cs
index 83c45f0..2b498b2 100644
--- a/Plugin.TsExecution/TsExecution.xaml.cs
+++ b/Plugin.TsExecution/TsExecution.xaml.cs
@@ -6,7 +6,6 @@
using HMI.Core.Util;
using HMI.MQUtil;
using HMI.UI;
-using HMI.UI.Controls;
using HMI.UI.Util;
using HMI.Util;
using log4net;
@@ -26,7 +25,6 @@
using System.Windows;
using System.Windows.Controls;
using System.Windows.Forms.DataVisualization.Charting;
-using System.Windows.Media;
namespace Plugin.TsExecution
{
@@ -263,10 +261,12 @@
}
}
+ private string tsModelPath;
private string dataLogPath;
private SqliteHelper sqliteHelper;
private MQConnector mqConnector;
+ private int probeWarn;
public TsExecution()
{
@@ -278,29 +278,32 @@
//鍒濆鍖朤estStand寮曟搸
this.InitTestStandEngine();
}
+
public override void SetBaseFolder(string folder)
{
CountIniPath = Path.Combine(folder, "Count.ini");
base.SetBaseFolder(folder);
}
- public override void InitFinish()
+ private void CheckSqlHelper()
{
- this.ReadCount(out int pass, out int fail);
- this.DisplayCount(pass, fail);
- InitProducts();
- ReadConfig();
- if (!File.Exists(dataLogPath))
+ string today = DateTime.Now.ToString("yyyyMMdd");
+ string dbPath = Path.Combine(dataLogPath, $"Data_{today}.db");
+ if (!File.Exists(dbPath))
{
- SqliteHelper.CreateDatabase(dataLogPath);
+ SqliteHelper.CreateDatabase(dbPath);
}
- sqliteHelper = new SqliteHelper(dataLogPath);
- sqliteHelper.ExecuteSql(@"CREATE TABLE IF NOT EXISTS serialData (
+ if (sqliteHelper == null || sqliteHelper.DataBaseFile != dbPath)
+ {
+ sqliteHelper?.Dispose();
+ sqliteHelper = new SqliteHelper(dbPath);
+ sqliteHelper.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,
@@ -311,48 +314,25 @@
consumeTime TEXT,
totalConsumeTime TEXT,
time DATETIME NOT NULL);");
- sqliteHelper.ExecuteSql(@"CREATE TABLE IF NOT EXISTS testResult (
+ sqliteHelper.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);");
- try
- {
- sqliteHelper.ExecuteSql("alter table serialData add column 'model' TEXT default NULL;");
}
- catch
- {
+ }
- }
-
- try
- {
- sqliteHelper.ExecuteSql("alter table serialData add column 'position' TEXT default NULL;");
- }
- catch
- {
-
- }
- try
- {
- sqliteHelper.ExecuteSql("alter table testResult add column 'position' TEXT default NULL;");
- }
- catch
- {
-
- }
-
- try
- {
- sqliteHelper.ExecuteSql("alter table testResult add column 'status' TEXT default NULL;");
- }
- catch
- {
-
- }
-
+ public override void InitFinish()
+ {
+ this.ReadCount(out int pass, out int fail);
+ this.DisplayCount(pass, fail);
+ ReadConfig();
+ InitProducts();
+ CheckSqlHelper();
base.InitFinish();
}
@@ -372,30 +352,6 @@
{
HandleUIMessage(eventCode, index, strData);
}));
- }
-
- void createChildInNewThread(int index, string configFile, int probeWarn)
- {
- HostVisual hostVisual = new HostVisual();
-
- UIElement content = new VisualHost(hostVisual);
-
- System.Threading.Thread thread = new System.Threading.Thread(new System.Threading.ThreadStart(() =>
- {
- VisualTarget visualTarget = new VisualTarget(hostVisual);
-
- var control = new SingleControl(index, configFile, probeWarn);
- control.Arrange(new Rect(new Point(), content.RenderSize));
-
- visualTarget.RootVisual = control;
- tsSockets.Add(control);
- System.Windows.Threading.Dispatcher.Run();
- }));
- //panel.Children.Add(content);
-
- thread.SetApartmentState(System.Threading.ApartmentState.STA);
- thread.IsBackground = true;
- thread.Start();
}
/// <summary>
@@ -441,28 +397,19 @@
Products = ProductManager.GetProducts<ObservableCollection<ProductData>>();
if (Products != null && Products.Count > 0)
{
- List<ParameterData> parameters =
- ParameterManager.GetCommonParameter<List<ParameterData>>();
- string tmpNum = parameters?.FirstOrDefault(p => p.Name == "SocketNum")?.Value?.ToString();
- if (!string.IsNullOrEmpty(tmpNum))
- {
- this.socketNum = Convert.ToInt32(tmpNum);
- }
string lastModel = engine?.Globals.GetValString("StationState.ProductModel", 1);
-
+ var tempProduct = Products[0];
if (!string.IsNullOrEmpty(lastModel))
{
var product = Products.FirstOrDefault(p => p.Name == lastModel);
if (product != null)
{
- SelectedProduct = product;
- RefershUI();
- return;
+ tempProduct = product;
}
}
- SelectedProduct = Products[0];
- RefershUI();
+ SelectedProduct = tempProduct;
}
+ RefershUI();
SampleStatus = false;
}
@@ -572,25 +519,11 @@
private void RefershUI()
{
- ParameterData p = ParameterManager.GetCommonParameterByName("ProbeWarn");
- int ProbeWarn = 0;
- if (p != null)
- {
- try
- {
- ProbeWarn = Convert.ToInt32(p.Value);
- }
- catch
- {
- ProbeWarn = 0;
- }
- }
-
panel.Children.Clear();
//閲嶆柊鐢熸垚瀛愰潰鏉�
for (int i = 0; i < this.socketNum; i++)
{
- SingleControl control = new SingleControl(i, CountIniPath, ProbeWarn);
+ SingleControl control = new SingleControl(i, CountIniPath, this.probeWarn);
panel.Children.Add(control);
tsSockets.Add(control);
@@ -599,6 +532,10 @@
if (tsSockets.Count == 1)
{
panel.Columns = 1;
+ }
+ else if (tsSockets.Count > 0 && (tsSockets.Count % 3) == 0)
+ {
+ panel.Columns = 3;
}
else
{
@@ -661,6 +598,19 @@
catch
{
flag = false;
+ }
+
+ try
+ {
+ value = ParameterManager.GetCommonParameterByName("SocketNum");
+ if (value != null)
+ {
+ this.socketNum = int.Parse(value.Value);
+ }
+ }
+ catch
+ {
+ this.socketNum = 2;
}
if (flag)
@@ -865,28 +815,38 @@
}
catch
{
- dataLogPath = Path.Combine(PathHelper.ConfigFolder, "DataBoard", "DataLog.db");
+ dataLogPath = Path.Combine(PathHelper.ConfigFolder, "DataBoard");
}
+ try
+ {
+
+ value = ParameterManager.GetCommonParameterByName("TsModelPath");
+ tsModelPath = value.Value;
+ }
+ catch
+ {
+ //@"C:\Program Files\National Instruments\TestStand 2020\Components\Models\TestStandModels\ParallelModel.seq"
+ tsModelPath = @"C:\Users\Public\Documents\National Instruments\TestStand 2020 (64-bit)\Components\Models\ParallelModel.seq";
+ }
+
+ try
+ {
+
+ value = ParameterManager.GetCommonParameterByName("ProbeWarn");
+ probeWarn = int.Parse(value?.Value);
+ }
+ catch
+ {
+ probeWarn = 0;
+ }
//Convert.ToBoolean(IniFileHelper.ReadIniData("Config", "EnableMes", "true", CountIniPath));
//EnableCanLog = Convert.ToBoolean(IniFileHelper.ReadIniData("Config", "EnableCanLog", "true", CountIniPath));
//EnableDebugMode = Convert.ToBoolean(IniFileHelper.ReadIniData("Config", "EnableDebugMode", "true", CountIniPath));
}
- //private void WriteToTsWhenInit()
- //{
- // foreach (var ts in tsSockets)
- // {
- // ts?.SequenceFileContext?.StationGlobals.SetValBoolean($"SystemSetting.EnableMes", 1, EnableMes);
- // ts?.SequenceFileContext?.StationGlobals.SetValBoolean($"SystemSetting.EnableNGPause", 1, EnableNGPause);
- // ts?.SequenceFileContext?.StationGlobals.SetValBoolean($"SystemSetting.EnableCanLog", 1, EnableCanLog);
- // ts?.SequenceFileContext?.StationGlobals.SetValBoolean($"SystemSetting.EnableDebugMode", 1, EnableDebugMode);
- // }
- //}
-
private bool WriteConfig(string name, bool value)
{
- //IniFileHelper.WriteIniData("Config", name, value.ToString(), CountIniPath);
try
{
if (ParameterManager.UpdateCommonParameter(name, value, out string errMsg))
@@ -1001,8 +961,7 @@
{
engine?.Globals.SetValString("StationState.ProductModel", 1, SelectedProduct?.Name);
engine?.CommitGlobalsToDisk(promptOnSaveConflicts: false);
- //this.modeSeq = this.engine.GetSequenceFileEx(@"C:\Program Files\National Instruments\TestStand 2020\Components\Models\TestStandModels\ParallelModel.seq");
- this.modeSeq = this.engine.GetSequenceFileEx(@"C:\Users\Public\Documents\National Instruments\TestStand 2020 (64-bit)\Components\Models\ParallelModel.seq");
+ this.modeSeq = this.engine.GetSequenceFileEx(tsModelPath);
this.testSeq = this.engine.GetSequenceFileEx(this.testSeqFile, 2, TypeConflictHandlerTypes.ConflictHandler_UseGlobalType);
this.execution = this.engine.NewExecution(this.testSeq, "Test UUTs", this.modeSeq, false, 0, null, null, null);
IsTesting = true;
@@ -1178,20 +1137,30 @@
this.tsSockets[index].WriteToCSV(csvPath);
}
+ public void SaveTemplateCSV(int index)
+ {
+ var time = DateTime.Now;
+ string status = this.tsSockets[index].Status == "Passed" ? "PASS" : "FAIL";
+ string csvPath = Path.Combine(csvDir, SelectedProduct?.Name ?? "鏈煡浜у搧", time.ToString("yyyyMMdd"), status, $"{this.tsSockets[index].Barcode}-{time.ToString("HHmmss")}.csv");
+ this.tsSockets[index].WriteToCSV(csvPath);
+ }
+
public void SavePositionDB(int index, string status)
{
+ CheckSqlHelper();
var socket = this.tsSockets[index];
var time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
string snr = socket.Barcode;
+ string model = SelectedProduct?.Name;
List<string> sqls = new List<string>();
foreach (var data in socket.Datasource)
{
- sqls.Add($@"INSERT INTO serialData (sn,model,station,step,limitDown,limitUp,unit,value,status,finalStatus,consumeTime,totalConsumeTime,time) VALUES
-('{snr}','{socket.Model}','','{data.Name}','{data.LimitDown}','{data.LimitUp}','{data.Unit}','{data.Value}','{data.Result}','{socket.Status}','{data.ConsumeTime}','{socket.ElapseTime}','{time}')");
+ sqls.Add($@"INSERT INTO serialData (sn,model,station,step,position,limitDown,limitUp,unit,value,status,finalStatus,consumeTime,totalConsumeTime,time) VALUES
+('{snr}','{model}','','{data.Name}','{index}','{data.LimitDown}','{data.LimitUp}','{data.Unit}','{data.Value}','{data.Result}','{socket.Status}','{data.ConsumeTime}','{socket.ElapseTime}','{time}')");
}
sqls.Add($@"INSERT INTO testResult (sn,model,station,result,time,position,status) VALUES
-('{snr}','{socket.Model}','','{socket.Status}','{time}','{index}','{status}')");
+('{snr}','{model}','','{socket.Status}','{time}','{index}','{status}')");
sqliteHelper.ExecuteBatchSql(sqls);
}
@@ -1279,9 +1248,30 @@
this.tsSockets[index].SetTestProcess(ProcessVal);
break;
case 10031://瀵煎嚭CSV
- string[] datas = strData.Split(';');
- SavePositionCSV(index, datas[0]);
- SavePositionDB(index, datas[1]);
+ if (string.IsNullOrEmpty(strData))
+ {
+ SaveTemplateCSV(index);
+ return;
+ }
+ try
+ {
+ string[] datas = strData.Split(';');
+ SavePositionCSV(index, datas[0]);
+ if (datas.Length >= 2)
+ {
+ SavePositionDB(index, datas[1]);
+ }
+ else
+ {
+ var sss = this.tsSockets[index].Status;
+ SavePositionDB(index, sss);
+ }
+ }
+ catch (Exception ex)
+ {
+ log.Warn("10031 Error.", ex);
+ SaveTemplateCSV(index);
+ }
break;
case 10032://鎸変笅鏍囨殏鍋滄祴璇�
this.tsSockets[index].ShowPausePanel();
--
Gitblit v1.9.1