From b5e7fa2db4ac36fdb7bf9fd330d12a72ade9d483 Mon Sep 17 00:00:00 2001 From: patrick.xu <patrick.xu@broconcentric.com> Date: 星期日, 24 一月 2021 15:07:26 +0800 Subject: [PATCH] 0124 --- src/Bro.M071.Process/M071Process.cs | 70 +++++++++++++++++++++++++---------- 1 files changed, 50 insertions(+), 20 deletions(-) diff --git a/src/Bro.M071.Process/M071Process.cs b/src/Bro.M071.Process/M071Process.cs index cc95119..f4108cd 100644 --- a/src/Bro.M071.Process/M071Process.cs +++ b/src/Bro.M071.Process/M071Process.cs @@ -193,6 +193,7 @@ } #endregion + object productionLock = new object(); List<ProductionMeasurement> productionList = new List<ProductionMeasurement>(); [ProcessMethod("", "StartJob", "寮�濮嬫壂鎻�", InvokeType.TestInvoke)] @@ -204,12 +205,12 @@ } string hint = ""; - if (MachineState != MachineState.Ready) - { - hint = "鏈哄彴鏈氨缁紝璇峰嬁寮�濮嬫祴閲�"; - OnCheckHintUpload?.Invoke(hint, true); - throw new ProcessException(hint, null, ExceptionLevel.Fatal); - } + //if (MachineState != MachineState.Ready) + //{ + // hint = "鏈哄彴鏈氨缁紝璇峰嬁寮�濮嬫祴閲�"; + // OnCheckHintUpload?.Invoke(hint, true); + // throw new ProcessException(hint, null, ExceptionLevel.Warning); + //} if (string.IsNullOrWhiteSpace(BarCode)) { @@ -247,15 +248,18 @@ BarCode = ""; - var existedProduction = productionList.FirstOrDefault(u => u.Barcode == pMeasure.Barcode); - if (existedProduction != null) + lock (productionLock) { - productionList.Remove(existedProduction); - existedProduction.Dispose(); - existedProduction = null; - } + var existedProduction = productionList.FirstOrDefault(u => u.Barcode == pMeasure.Barcode); + if (existedProduction != null) + { + productionList.Remove(existedProduction); + existedProduction.Dispose(); + existedProduction = null; + } - productionList.Add(pMeasure); + productionList.Add(pMeasure); + } pMeasure.InitialMeasurementsPropertyChanged(); pMeasure.PropertyChanged += MeasureProduction_PropertyChanged; @@ -444,9 +448,13 @@ { if (sender is ProductionMeasurement pMeasure) { - var production = productionList.FirstOrDefault(u => u.Barcode == pMeasure.Barcode); - if (production == null) - return; + ProductionMeasurement production = null; + lock (productionLock) + { + production = productionList.FirstOrDefault(u => u.Barcode == pMeasure.Barcode); + if (production == null) + return; + } lock (production) { @@ -553,8 +561,20 @@ LogAsync(DateTime.Now, $"{pMeasure.Barcode} 妫�娴嬪畬鎴愶紝缁撴灉 {pMeasure.PResult}", ""); - if (MachineState == MachineState.Running) - MachineState = MachineState.Ready; + //if (MachineState == MachineState.Running) + // MachineState = MachineState.Ready; + + if (MachineState != MachineState.Alarm) + { + if (MachineState == MachineState.Pause) + { + _machineStateBeforePause = MachineState.Ready; + } + else + { + MachineState = MachineState.Ready; + } + } var measurementUnitResultAndKeyUnitDataSet = GetMeasurementUnitResultAndKeyUnitData(pMeasure); @@ -573,7 +593,10 @@ SaveWholeImage(pMeasure); - productionList.RemoveAll(p => p.Barcode == pMeasure.Barcode); + lock (productionLock) + { + productionList.RemoveAll(p => p.Barcode == pMeasure.Barcode); + } pMeasure.Dispose(); //LogAsync(DateTime.Now, $"{pMeasure.Barcode}浜у搧淇℃伅閲婃斁瀹屾垚", JsonConvert.SerializeObject(pMeasure)); } @@ -661,7 +684,7 @@ } measurementUnitResult.MeasurementType = measurementUnit.MeasureType; measurementUnitResult.MeasurementValue = measurementUnit.Spec.ActualValue == null ? "NA" : measurementUnit.Spec.ActualValue.Value.ToString(_precision); - measurementUnitResult.MeasurementResult = measurementUnit.Spec.MeasureResult.Value ? "OK" : "NG"; + measurementUnitResult.MeasurementResult = measurementUnit.Spec.MeasureResult == null ? "NA" : measurementUnit.Spec.MeasureResult.Value ? "OK" : "NG"; measurementUnitResults.Add(measurementUnitResult); @@ -1183,6 +1206,13 @@ var keys = Config.KeyUnitCollection.Where(u => u.IsEnabled && u.SnapshotPointId == snapshotId); var keyBindCollection = measureList.SelectMany(u => u.KeyUnitCollection).Where(u => keys.Any(k => k.Key == u.Key)).ToList(); + if (imgSet.HImage == null) + { + LogAsync(DateTime.Now, $"{snapshotName}鏈幏鍙栨壂鎻忓浘鍍�", ""); + keyBindCollection.ForEach(k => k.FillKeyValues(null)); + return; + } + string toolKey = (opConfig as CameraOprerationConfigBase).AlgorithemPath; HObject images = new HObject(); -- Gitblit v1.8.0