领胜LDS 键盘AOI检测项目
1. gocator驱动将system.stop移到system.ReceiveData之后
2. 修改测量完成后状态切换逻辑,避免安全光线等干扰
3. 添加设备异常输出日志记录
4. 产品结果输出时做硬盘文件记录
7个文件已修改
113 ■■■■ 已修改文件
src/Bro.Common.Device/DeviceBase/CameraBase.cs 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/Bro.Device.Gocator/GocatorDriver.cs 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/Bro.Device.Gocator/Properties/AssemblyInfo.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/Bro.M071.Process/M071Process.cs 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/Bro.Process/ProcessControl.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/Bro.UI.Config/MainFrm.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/Bro.UI.Config/MenuForms/FrmStatistic.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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
    }
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)
                    {
                        system.Start();
                    }
                    else
                    {
                        system.Stop();
                    }
                    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;
        }
    }
}
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")]
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)
                //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);
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
src/Bro.UI.Config/MainFrm.cs
@@ -371,6 +371,11 @@
        private void MainFrm_FormClosing(object sender, FormClosingEventArgs e)
        {
            try
            {
                _process?.Close();
            }
            catch { }
            CloseAllDocuments();
        }
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)