| | |
| | | using HMI.Core.Entity; |
| | | using HMI.Core.Manager; |
| | | using HMI.Core.Util; |
| | | using HMI.StdControl; |
| | | using HMI.UI; |
| | | using HMI.UI.Util; |
| | | using log4net; |
| | |
| | | using System.Collections.Generic; |
| | | using System.IO; |
| | | using System.Linq; |
| | | using System.Threading; |
| | | using System.Windows; |
| | | using System.Windows.Controls; |
| | | |
| | |
| | | private double TestVoltage = 12; |
| | | private double Time_Heating_Low = 300; |
| | | private double Time_Heating_High = 2400; |
| | | private string testSeqFile; |
| | | private Scanner scannerWindow1; |
| | | private Scanner scannerWindow2; |
| | | /// <summary> |
| | |
| | | set => Set(ref _produceStatus, value); |
| | | } |
| | | |
| | | private string _fileName; |
| | | |
| | | public string FileName |
| | | { |
| | | get => _fileName; |
| | | set => Set(ref _fileName, value); |
| | | } |
| | | |
| | | public override void SetLogger(ILog logger) |
| | | { |
| | | base.SetLogger(logger); |
| | |
| | | this.btnStop.IsEnabled = value; |
| | | } |
| | | } |
| | | |
| | | private bool AutoExecuteSeq = true; |
| | | |
| | | public ViewControl() |
| | | { |
| | |
| | | } |
| | | SannerIniFile = path; |
| | | LoadProduct(); |
| | | |
| | | try |
| | | { |
| | | var value = ParameterManager.GetCommonParameterByName("AutoExecuteSeq"); |
| | | AutoExecuteSeq = bool.Parse(value.Value); |
| | | } |
| | | catch |
| | | { |
| | | AutoExecuteSeq = true; |
| | | } |
| | | |
| | | try |
| | | { |
| | | var value = ParameterManager.GetCommonParameterByName("BurnInMainSeq"); |
| | | testResultView.testSeqFile = value.Value; |
| | | FileName = Path.GetFileName(value.Value); |
| | | } |
| | | catch |
| | | { |
| | | testResultView.testSeqFile = string.Empty; |
| | | FileName = string.Empty; |
| | | } |
| | | } |
| | | |
| | | public override void DoClose(object sender, EventArgs e) |
| | |
| | | int MethodCode = Convert.ToInt16(e.uiMsg.NumericData); |
| | | string strData; |
| | | |
| | | if (EventCase != 10014) return; |
| | | |
| | | try |
| | | { |
| | | log.Info($"EventCase: {EventCase}, MethodCode: {MethodCode}, StrData: {e.uiMsg.StringData}"); |
| | | log.Debug($"EventCase: {EventCase}, MethodCode: {MethodCode}, StrData: {e.uiMsg.StringData}"); |
| | | } |
| | | catch |
| | | { |
| | | |
| | | } |
| | | |
| | | if (EventCase == 8) |
| | | { |
| | | IsRunning = false; |
| | | return; |
| | | } |
| | | |
| | | if (EventCase != 10014) return; |
| | | |
| | | if (MethodCode == 0) |
| | | { |
| | |
| | | private bool isLoaded; |
| | | private void UserControl_Loaded(object sender, RoutedEventArgs e) |
| | | { |
| | | new MaskWindow(Window.GetWindow(this), (win) => |
| | | if (AutoExecuteSeq) |
| | | { |
| | | try |
| | | ShowMask(() => |
| | | { |
| | | Dispatcher.BeginInvoke(new Action(() => |
| | | { |
| | | Start_Click(null, null); |
| | | Loaded -= UserControl_Loaded; |
| | | })); |
| | | } |
| | | finally |
| | | }), System.Windows.Threading.DispatcherPriority.Background); |
| | | }, (ex) => |
| | | { |
| | | Dispatcher.Invoke(() => |
| | | { |
| | | win.Close(); |
| | | }); |
| | | } |
| | | }).Info(LangUtil.Get("Ts.SequenceIsStarting"), 100); |
| | | ToastHelper.Error("Loaded Failed."); |
| | | log.Error("Loaded Failed.", ex); |
| | | }, "请稍后", LangUtil.Get("Ts.SequenceIsStarting")); |
| | | } |
| | | else |
| | | { |
| | | IsRunning = false; |
| | | } |
| | | 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(() => |
| | | //{ |
| | |
| | | //this.SaftyTemperature = Convert.ToDouble(this.parameterManager.Find("SaftyTemperature").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.testSeqFile = parameters.FirstOrDefault(p => p.Name == "TestSequence")?.Value; |
| | | |
| | | testResultView.engine.Globals.SetValString("ProductModel", 0, currentModel); |
| | | testResultView.engine.CommitGlobalsToDisk(promptOnSaveConflicts: false); |
| | |
| | | { |
| | | try |
| | | { |
| | | if (string.IsNullOrEmpty(testResultView.testSeqFile)) |
| | | { |
| | | MsgBoxHelper2.Warn("请先设置BurnInMainSeq属性!"); |
| | | IsRunning = false; |
| | | return; |
| | | } |
| | | testResultView.StartTestSequence(); |
| | | IsRunning = true; |
| | | } |
| | |
| | | MsgBoxHelper.Error(Window.GetWindow(this), |
| | | $"{this.lang("Ts.StopTestSequenceFailed")}: {ex.Message}"); |
| | | } |
| | | } |
| | | |
| | | private void Scan_Click_1(object sender, RoutedEventArgs e) |
| | | { |
| | | if (scannerWindow1 == null) |
| | | { |
| | | scannerWindow1 = new Scanner(this.lang("Tr.Zone1Scan")) |
| | | { |
| | | Tag = "Zone1" |
| | | }; |
| | | scannerWindow1.FinishBarcode += ScannerWindow_FinishBarcode; |
| | | //scannerWindow1.Owner = Window.GetWindow(this); |
| | | scannerWindow1.Closed += ScannerWindow1_Closed; |
| | | scannerWindow1.Show(); |
| | | } |
| | | else |
| | | { |
| | | scannerWindow1.Activate(); |
| | | } |
| | | } |
| | | |
| | | private void Scan_Click_2(object sender, RoutedEventArgs e) |
| | | { |
| | | if (scannerWindow2 == null) |
| | | { |
| | | scannerWindow2 = new Scanner(this.lang("Tr.Zone2Scan")) |
| | | { |
| | | Tag = "Zone2" |
| | | }; |
| | | scannerWindow2.FinishBarcode += ScannerWindow_FinishBarcode; |
| | | scannerWindow2.Owner = Window.GetWindow(this); |
| | | scannerWindow2.Closed += ScannerWindow2_Closed; |
| | | scannerWindow2.Show(); |
| | | } |
| | | else |
| | | { |
| | | scannerWindow2.Activate(); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 扫码完成逻辑 |
| | | /// </summary> |
| | | /// <param name="sender"></param> |
| | | /// <param name="e"></param> |
| | | private void ScannerWindow_FinishBarcode(object sender, BarcodeEventArg e) |
| | | { |
| | | if (this.SequenceContext == null) return; |
| | | CellInfo cellInfo = codeParser.GetCellInfoByCode(e.positionCode); |
| | | |
| | | string paramName = e.name == "Zone1" ? "StationState.StartScanner_A" : "StationState.StartScanner_B"; |
| | | testResultView.engine.Globals.SetValBoolean(paramName, 0, true); |
| | | string positionCode = e.positionCode, snrCode = e.snrCode; |
| | | //需要增加条码校验功能 |
| | | |
| | | //将读到的条码写入到SN中 |
| | | int dutNo = Convert.ToInt16(positionCode.Split('-')[2]) - 1; |
| | | string LookupStr = e.name == "Zone1" ? $"StationState.SN[{dutNo}]" : $"StationState.SN[{(dutNo + 54)}]"; |
| | | //this.SequenceContext.StationGlobals.SetValString(LookupStr, 0, snrCode); |
| | | //string code = this.SequenceContext.StationGlobals.GetValString(LookupStr, 0); |
| | | |
| | | testResultView.engine.Globals.SetValString(LookupStr, 0, snrCode); |
| | | string code = testResultView.engine.Globals.GetValString(LookupStr, 0); |
| | | testResultView.nameTables[cellInfo.OvenName].GetSingleCell(cellInfo.Index).SetStatus("hadCode"); |
| | | } |
| | | |
| | | private void ScannerWindow1_Closed(object sender, EventArgs e) |
| | |
| | | }; |
| | | setting.Open(false, "Config"); |
| | | } |
| | | |
| | | private void StdEnableMes_ValueChanged(object sender, StdUIEventArg e) |
| | | { |
| | | testResultView.SequenceContext?.StationGlobals.SetValBoolean($"SystemSetting.{e.StringValue}", 1, e.BoolValue); |
| | | } |
| | | } |
| | | } |