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