From 1f2fa3f54d4a7b5a2f601c4c947a06476342e3bd Mon Sep 17 00:00:00 2001 From: patrick.xu <patrick.xu@broconcentric.com> Date: 星期五, 22 一月 2021 09:23:06 +0800 Subject: [PATCH] 1. gocator驱动将system.stop移到system.ReceiveData之后 2. 修改测量完成后状态切换逻辑,避免安全光线等干扰 3. 添加设备异常输出日志记录 4. 产品结果输出时做硬盘文件记录 --- src/Bro.UI.Config/MenuForms/FrmStatistic.cs | 6 ++ src/Bro.M071.Process/M071Process.cs | 20 +++++- src/Bro.Device.Gocator/GocatorDriver.cs | 60 ++++++++++++------- src/Bro.Process/ProcessControl.cs | 7 ++ src/Bro.Common.Device/DeviceBase/CameraBase.cs | 25 +++++--- src/Bro.Device.Gocator/Properties/AssemblyInfo.cs | 4 src/Bro.UI.Config/MainFrm.cs | 5 + 7 files changed, 89 insertions(+), 38 deletions(-) diff --git a/src/Bro.Common.Device/DeviceBase/CameraBase.cs b/src/Bro.Common.Device/DeviceBase/CameraBase.cs index 85b5458..ca7afb3 100644 --- a/src/Bro.Common.Device/DeviceBase/CameraBase.cs +++ b/src/Bro.Common.Device/DeviceBase/CameraBase.cs @@ -153,7 +153,7 @@ set.IsOriginSaved = !set.ImageSaveOption.IsSaveOriginImage; set.IsFitSaved = !set.ImageSaveOption.IsSaveFitImage; set.IsAddtionalSaved = string.IsNullOrWhiteSpace(set.ImageSaveOption.AddtionalSaveType); - set.OnImageSetTimeout += ImageSet_OnImageSetTimeout; + //set.OnImageSetTimeout += ImageSet_OnImageSetTimeout; _imageSetList[set.Id] = set; } @@ -183,7 +183,7 @@ set.IsOriginSaved = !set.ImageSaveOption.IsSaveOriginImage; set.IsFitSaved = !set.ImageSaveOption.IsSaveFitImage; set.IsAddtionalSaved = string.IsNullOrWhiteSpace(set.ImageSaveOption.AddtionalSaveType); - set.OnImageSetTimeout += ImageSet_OnImageSetTimeout; + //set.OnImageSetTimeout += ImageSet_OnImageSetTimeout; _imageSetList[set.Id] = set; } @@ -376,6 +376,8 @@ // && (!set.ImageSaveOption.IsSaveNGImage || set.IsNGSaved)) if (set.IsOriginSaved && set.IsFitSaved && set.IsAddtionalSaved) { + set.Dispose(); + _imageSetList.Remove(set.Id); LogAsync(DateTime.Now, $"绉婚櫎鍥剧墖淇℃伅锛屽綋鍓嶇紦瀛樻暟閲忥細{_imageSetList.Count}", ""); } @@ -543,7 +545,7 @@ { await Task.Run(() => { - Thread.Sleep(1000); + //Thread.Sleep(1000); int widthIn4 = (int)Math.Ceiling(width / 4.0) * 4; Bitmap bmp = new Bitmap(widthIn4, height, PixelFormat.Format48bppRgb); @@ -847,7 +849,7 @@ bool IsFitSaved { get; set; } bool IsAddtionalSaved { get; set; } - event Action<ImageSet> OnImageSetTimeout; + //event Action<ImageSet> OnImageSetTimeout; /// <summary> /// 搴忓垪鍖栨搷浣滅殑鍥惧儚淇℃伅 @@ -894,15 +896,18 @@ public virtual string ImageData { get; set; } - public event Action<ImageSet> OnImageSetTimeout; - private Timer autoDisposeTimer = null; + //public event Action<ImageSet> OnImageSetTimeout; + //private Timer autoDisposeTimer = null; public void Dispose(object state) { - OnImageSetTimeout?.Invoke(this); + //OnImageSetTimeout?.Invoke(this); - autoDisposeTimer.Change(-1, -1); - autoDisposeTimer.Dispose(); + //autoDisposeTimer.Change(-1, -1); + //autoDisposeTimer.Dispose(); + + Image?.Dispose(); + Image = null; } public virtual void Dispose() @@ -912,7 +917,7 @@ public ImageSet() { - autoDisposeTimer = new Timer(Dispose, null, 10 * 1000, -1); + //autoDisposeTimer = new Timer(Dispose, null, 10 * 1000, -1); } #endregion } diff --git a/src/Bro.Device.Gocator/GocatorDriver.cs b/src/Bro.Device.Gocator/GocatorDriver.cs index a45de96..ba3546f 100644 --- a/src/Bro.Device.Gocator/GocatorDriver.cs +++ b/src/Bro.Device.Gocator/GocatorDriver.cs @@ -218,23 +218,17 @@ public override IImageSet Snapshot(IOperationConfig config) { + GocatorOperationConfig opConfig = config as GocatorOperationConfig; if (!IIConfig.IsAsyncMode) { - if (config is GocatorOperationConfig opConfig) + if (opConfig.IsOpenConnection) { - if (opConfig.IsOpenConnection) - { - system.Start(); - } - else - { - system.Stop(); - } + system.Start(); + } - if (!opConfig.IsSnapshotAction) - { - return null; - } + if (!opConfig.IsSnapshotAction) + { + return null; } } @@ -258,6 +252,11 @@ } else { + if (!opConfig.IsSnapshotAction) + { + return null; + } + try { dataSet = system.ReceiveData(IIConfig.SnapshotTimeout); @@ -266,6 +265,15 @@ { LogAsync(DateTime.Now, $"{Name}鑾峰彇鍥惧儚寮傚父", ex.GetExceptionMessage()); return null; + } + } + + if (!IIConfig.IsAsyncMode) + { + if (!opConfig.IsOpenConnection) + { + system.Stop(); + sensor.Flush(); } } @@ -535,21 +543,29 @@ }); } - public override void ClearImageSet(IImageSet set) - { - if (set.IsOriginSaved && set.IsFitSaved && set.IsAddtionalSaved) - { - (set as GoImageSet).HImage_2?.Dispose(); - (set as GoImageSet).HImage_2 = null; - } + //public override void ClearImageSet(IImageSet set) + //{ + // if (set.IsOriginSaved && set.IsFitSaved && set.IsAddtionalSaved) + // { + // (set as GoImageSet).HImage_2?.Dispose(); + // (set as GoImageSet).HImage_2 = null; + // } - base.ClearImageSet(set); - } + // base.ClearImageSet(set); + //} #endregion } public class GoImageSet : ImageSet { public HImage HImage_2 { get; set; } + + public override void Dispose() + { + base.Dispose(); + + HImage_2?.Dispose(); + HImage_2 = null; + } } } diff --git a/src/Bro.Device.Gocator/Properties/AssemblyInfo.cs b/src/Bro.Device.Gocator/Properties/AssemblyInfo.cs index 08d604e..43f4501 100644 --- a/src/Bro.Device.Gocator/Properties/AssemblyInfo.cs +++ b/src/Bro.Device.Gocator/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ //鍙互鎸囧畾鎵�鏈夎繖浜涘�硷紝涔熷彲浠ヤ娇鐢ㄢ�滅敓鎴愬彿鈥濆拰鈥滀慨璁㈠彿鈥濈殑榛樿鍊� //閫氳繃浣跨敤 "*"锛屽涓嬫墍绀�: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] +[assembly: AssemblyVersion("1.0.1.0")] +[assembly: AssemblyFileVersion("1.0.1.0")] diff --git a/src/Bro.M071.Process/M071Process.cs b/src/Bro.M071.Process/M071Process.cs index cc95119..4a24029 100644 --- a/src/Bro.M071.Process/M071Process.cs +++ b/src/Bro.M071.Process/M071Process.cs @@ -208,7 +208,7 @@ { hint = "鏈哄彴鏈氨缁紝璇峰嬁寮�濮嬫祴閲�"; OnCheckHintUpload?.Invoke(hint, true); - throw new ProcessException(hint, null, ExceptionLevel.Fatal); + throw new ProcessException(hint, null, ExceptionLevel.Warning); } if (string.IsNullOrWhiteSpace(BarCode)) @@ -553,8 +553,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); @@ -661,7 +673,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); diff --git a/src/Bro.Process/ProcessControl.cs b/src/Bro.Process/ProcessControl.cs index 2f31a10..9519754 100644 --- a/src/Bro.Process/ProcessControl.cs +++ b/src/Bro.Process/ProcessControl.cs @@ -208,11 +208,18 @@ d.OnLog -= OnDeviceLog; d.OnLog += OnDeviceLog; + d.OnExceptionOccured = OnDeviceExceptionRaised; + d.StateChange(DeviceState.DSInit); d.StateChange(DeviceState.DSOpen); } }); } + + private void OnDeviceExceptionRaised(DateTime dt, Exception ex) + { + LogAsync(dt, "璁惧寮傚父", ex.GetExceptionMessage()); + } #endregion #region Close diff --git a/src/Bro.UI.Config/MainFrm.cs b/src/Bro.UI.Config/MainFrm.cs index c734c03..1d27f20 100644 --- a/src/Bro.UI.Config/MainFrm.cs +++ b/src/Bro.UI.Config/MainFrm.cs @@ -371,6 +371,11 @@ private void MainFrm_FormClosing(object sender, FormClosingEventArgs e) { + try + { + _process?.Close(); + } + catch { } CloseAllDocuments(); } diff --git a/src/Bro.UI.Config/MenuForms/FrmStatistic.cs b/src/Bro.UI.Config/MenuForms/FrmStatistic.cs index 080514a..30b5409 100644 --- a/src/Bro.UI.Config/MenuForms/FrmStatistic.cs +++ b/src/Bro.UI.Config/MenuForms/FrmStatistic.cs @@ -5,6 +5,7 @@ using System; using System.Configuration; using System.IO; +using System.Threading.Tasks; using WeifenLuo.WinFormsUI.Docking; using static Bro.Common.Helper.EnumHelper; @@ -432,6 +433,11 @@ } Qty_OEE++; + + Task.Run(() => + { + SaveNumRecord(); + }); } private void UpdateCT(float ctTime) -- Gitblit v1.8.0