From 3f6e94d7de9694378114773ab48d8a61bcc3a01e Mon Sep 17 00:00:00 2001 From: patrick.xu <patrick.xu@broconcentric.com> Date: 星期一, 01 二月 2021 09:22:20 +0800 Subject: [PATCH] 1. 报警生成前后端异步调用 2. 安全光栅方法单线程调用 3. 复位完成时修改界面显示 4. 机台状态拆分执行状态 --- src/Bro.M071.Process/M071Process.cs | 80 +++++++++++++++++++++++++++++---------- 1 files changed, 59 insertions(+), 21 deletions(-) diff --git a/src/Bro.M071.Process/M071Process.cs b/src/Bro.M071.Process/M071Process.cs index 4a24029..7666577 100644 --- a/src/Bro.M071.Process/M071Process.cs +++ b/src/Bro.M071.Process/M071Process.cs @@ -19,6 +19,7 @@ using System.Drawing.Imaging; using System.IO; using System.Linq; +using System.Runtime.CompilerServices; using System.Text; using System.Threading; using System.Threading.Tasks; @@ -47,6 +48,7 @@ public event Action<IShapeElement> OnElementUpdated; public event Action<MachineState> OnMachineStateChanged; public event Action OnFullResetDone; + public event Action OnResetDone; #endregion string _precision = "f3"; @@ -193,9 +195,13 @@ } #endregion + object productionLock = new object(); List<ProductionMeasurement> productionList = new List<ProductionMeasurement>(); + bool _isdoing = false; + [ProcessMethod("", "StartJob", "寮�濮嬫壂鎻�", InvokeType.TestInvoke)] + [MethodImpl(MethodImplOptions.Synchronized)] public ProcessResponse StartJob(IOperationConfig opConfig, IDevice invokeDevice, IDevice sourceDevice) { if (!IsAllowedWork) @@ -204,12 +210,13 @@ } string hint = ""; - if (MachineState != MachineState.Ready) - { - hint = "鏈哄彴鏈氨缁紝璇峰嬁寮�濮嬫祴閲�"; - OnCheckHintUpload?.Invoke(hint, true); - throw new ProcessException(hint, null, ExceptionLevel.Warning); - } + + //if (MachineState != MachineState.Ready) + //{ + // hint = "鏈哄彴鏈氨缁紝璇峰嬁寮�濮嬫祴閲�"; + // OnCheckHintUpload?.Invoke(hint, true); + // throw new ProcessException(hint, null, ExceptionLevel.Warning); + //} if (string.IsNullOrWhiteSpace(BarCode)) { @@ -218,6 +225,8 @@ OnCheckHintUpload?.Invoke(hint, true); throw new ProcessException(hint); } + + _isdoing = true; MachineState = MachineState.Running; @@ -247,15 +256,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; @@ -311,6 +323,7 @@ }); LogAsync(DateTime.Now, $"{pMeasure.Barcode}娴嬮噺鍔ㄤ綔瀹屾垚", ""); + _isdoing = false; GC.Collect(0, GCCollectionMode.Optimized); @@ -324,8 +337,11 @@ get => isLeftStart; set { - isLeftStart = value; - StartCheck(); + if (IsLeftStart != value) + { + isLeftStart = value; + StartCheck(); + } } } @@ -335,8 +351,11 @@ get => isRightStart; set { - isRightStart = value; - StartCheck(); + if (isRightStart != value) + { + isRightStart = value; + StartCheck(); + } } } @@ -344,6 +363,11 @@ { if (isRightStart && isLeftStart) { + if (_isdoing) + { + OnCheckHintUpload?.Invoke("璁惧杩愯涓�", false); + return; + } StartJob(null, null, null); } } @@ -444,9 +468,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) { @@ -585,7 +613,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)); } @@ -1195,6 +1226,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