| | |
| | | using HMI.Base; |
| | | using HMI.Core.Entity; |
| | | using HMI.Core.Manager; |
| | | using HMI.Core.Util; |
| | | using HMI.ParameterManage.Entity; |
| | | using HMI.ParameterManage.Util; |
| | | using HMI.UI; |
| | | using HMI.UI.Util; |
| | | using log4net; |
| | | using NationalInstruments.TestStand.Interop.API; |
| | |
| | | using Plugin.TestResult_WPF.Util; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.IO; |
| | | using System.Linq; |
| | | using System.Windows; |
| | | using System.Windows.Controls; |
| | |
| | | /// <summary> |
| | | /// ViewControl.xaml 的交互逻辑 |
| | | /// </summary> |
| | | public partial class ViewControl : PluginControl |
| | | public partial class ViewControl : PluginMaskControl |
| | | { |
| | | private CommonCodeParser codeParser = new CommonCodeParser(); |
| | | private double TestTemperature = 60; |
| | |
| | | Logger = logger; |
| | | } |
| | | |
| | | private bool isRunning = false; |
| | | public bool IsRunning |
| | | { |
| | | get => isRunning; |
| | | set |
| | | { |
| | | Set(ref isRunning, value); |
| | | testResultView.IsRunning = value; |
| | | this.modelSelect.IsEnabled = !value; |
| | | this.btnStart.IsEnabled = !value; |
| | | this.btnStop.IsEnabled = value; |
| | | } |
| | | } |
| | | |
| | | public ViewControl() |
| | | { |
| | | DataContext = this; |
| | |
| | | testResultView.testApp.ExitApplication += new EventHandler(this.axApplicationMgr_ExitApplication); |
| | | testResultView.testApp.UIMessageEvent += new _ApplicationMgrEvents_UIMessageEventEventHandler(this.axApplicationMgr_UIMessageEvent); |
| | | testResultView.testApp.ExecutionClosed += new _ApplicationMgrEvents_ExecutionClosedEventHandler(this.axApplicationMgr_ExecutionClosed); |
| | | } |
| | | |
| | | public TestResultView View |
| | | { |
| | | get => testResultView; |
| | | } |
| | | public static string SannerIniFile { get; private set; } |
| | | |
| | | public override void InitFinish() |
| | | { |
| | | base.InitFinish(); |
| | | string path = Path.Combine(BaseFolder, "Count.ini"); |
| | | testResultView.SetCountIniPath(path); |
| | | testResultView.InitMainGrid(); |
| | | testResultView.InitTestStandEngine(); |
| | | |
| | | path = Path.Combine(BaseFolder, "Scanner.ini"); |
| | | if (!File.Exists(path)) |
| | | { |
| | | File.Create(path).Close(); |
| | | } |
| | | SannerIniFile = path; |
| | | LoadProduct(); |
| | | } |
| | | |
| | | public override void DoClose(object sender, EventArgs e) |
| | | { |
| | | try |
| | | { |
| | | testResultView.ReleaseResource(); |
| | | } |
| | | catch |
| | | { |
| | | } |
| | | } |
| | | |
| | | private void axApplicationMgr_ExitApplication(object sender, EventArgs e) |
| | |
| | | string strData; |
| | | |
| | | if (EventCase != 10014) return; |
| | | |
| | | try |
| | | { |
| | | log.Info($"EventCase: {EventCase}, MethodCode: {MethodCode}, StrData: {e.uiMsg.StringData}"); |
| | | } |
| | | catch |
| | | { |
| | | |
| | | } |
| | | |
| | | if (MethodCode == 0) |
| | | { |
| | |
| | | { } |
| | | } |
| | | |
| | | private bool isLoaded; |
| | | private void UserControl_Loaded(object sender, RoutedEventArgs e) |
| | | { |
| | | LoadProduct(); |
| | | testResultView.InitTestStandEngine(); |
| | | Start_Click(null, null); |
| | | Loaded -= UserControl_Loaded; |
| | | new MaskWindow(Window.GetWindow(this), (win) => |
| | | { |
| | | try |
| | | { |
| | | Dispatcher.BeginInvoke(new Action(() => |
| | | { |
| | | Start_Click(null, null); |
| | | Loaded -= UserControl_Loaded; |
| | | })); |
| | | } |
| | | finally |
| | | { |
| | | Dispatcher.Invoke(() => |
| | | { |
| | | win.Close(); |
| | | }); |
| | | } |
| | | }).Info(LangUtil.Get("Ts.SequenceIsStarting"), 100); |
| | | |
| | | //ShowMask(() => |
| | | //{ |
| | | // Dispatcher.BeginInvoke(new Action(() => |
| | | // { |
| | | // System.Threading.Thread.Sleep(100); |
| | | // Start_Click(null, null); |
| | | // Loaded -= UserControl_Loaded; |
| | | // })); |
| | | //}, (ex) => |
| | | //{ |
| | | // log.Error("Loaded Error.", ex); |
| | | // Dispatcher.BeginInvoke(new Action(() => |
| | | // { |
| | | // MsgBoxHelper.Error(Window.GetWindow(this), ex.Message); |
| | | // })); |
| | | //}, "请稍后", LangUtil.Get("Ts.SequenceIsStarting")); |
| | | } |
| | | |
| | | public void LoadProduct() |
| | | { |
| | | List<ProductData> products = ParameterManager.GetProducts<List<ProductData>>(); |
| | | List<ProductData> products = ProductManager.GetProducts<List<ProductData>>() |
| | | ?? new List<ProductData>(); |
| | | this.modelSelect.Items.Clear(); |
| | | List<string> productSource = new List<string>(); |
| | | foreach (var prd in products) |
| | | { |
| | | this.modelSelect.Items.Add(prd.Name); |
| | | productSource.Add(prd.Name); |
| | | } |
| | | if (products.Count > 0) |
| | | testResultView.SetProductSource(productSource); |
| | | |
| | | string model = testResultView.engine.Globals.GetValString("ProductModel", 0); |
| | | if (!string.IsNullOrEmpty(model)) |
| | | { |
| | | this.modelSelect.SelectedItem = model; |
| | | testResultView.SetCurrentProduct(model); |
| | | } |
| | | else if (products.Count > 0) |
| | | { |
| | | this.modelSelect.SelectedIndex = 0; |
| | | testResultView.SetCurrentProduct(products[0].Name); |
| | | } |
| | | } |
| | | |
| | |
| | | { |
| | | try |
| | | { |
| | | List<ParameterData> parameters = ParameterManager.GetParametersByProductName(this.modelSelect.SelectedItem.ToString()); |
| | | string currentModel = this.modelSelect.SelectedItem.ToString(); |
| | | List<ParameterData> parameters = ProductManager.GetParametersByProductName(currentModel); |
| | | //MessageBox.Show("ParaFile:" + ParaFile + "ParaCount:" + this.parameterManager.Parameters.Count.ToString()); |
| | | //this.TestTemperature = Convert.ToDouble(this.parameterManager.Find("TestTemperature").ParmValue); |
| | | //this.TestTime = Convert.ToInt32(this.parameterManager.Find("TestTime").ParmValue); |
| | |
| | | //this.Time_Heating_Low = Convert.ToDouble(this.parameterManager.Find("Time_Heat_Low").ParmValue); |
| | | //this.Time_Heating_High = Convert.ToDouble(this.parameterManager.Find("Time_Heat_High").ParmValue); |
| | | testResultView.testSeqFile = parameters.FirstOrDefault(p => p.Name == "TestSequence")?.Value; |
| | | |
| | | testResultView.engine.Globals.SetValString("ProductModel", 0, currentModel); |
| | | testResultView.engine.CommitGlobalsToDisk(promptOnSaveConflicts: false); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | |
| | | try |
| | | { |
| | | testResultView.StartTestSequence(); |
| | | this.modelSelect.IsEnabled = false; |
| | | this.btnStart.IsEnabled = false; |
| | | this.btnStop.IsEnabled = true; |
| | | IsRunning = true; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | |
| | | try |
| | | { |
| | | testResultView.StopTest(); |
| | | this.modelSelect.IsEnabled = true; |
| | | this.btnStart.IsEnabled = true; |
| | | this.btnStop.IsEnabled = false; |
| | | IsRunning = false; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | |
| | | { |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 计数清零按钮事件 |
| | | /// </summary> |
| | | /// <param name="sender"></param> |
| | | /// <param name="e"></param> |
| | | private void BtnClear_Click(object sender, RoutedEventArgs e) |
| | | { |
| | | testResultView.ClearNumber(); |
| | | } |
| | | |
| | | private void ScannerSetting_Click(object sender, RoutedEventArgs e) |
| | | { |
| | | Plugin.TestResult.ScannerSetting setting = new Plugin.TestResult.ScannerSetting() |
| | | { |
| | | Owner = Window.GetWindow(this) |
| | | }; |
| | | setting.Open(false, "Config"); |
| | | } |
| | | } |
| | | } |