领胜LDS 键盘AOI检测项目
1. 报警生成前后端异步调用
2. 安全光栅方法单线程调用
3. 复位完成时修改界面显示
4. 机台状态拆分执行状态
5个文件已修改
108 ■■■■■ 已修改文件
src/Bro.M071.Process/M071Process.cs 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/Bro.M071.Process/M071Process_MotionCard.cs 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/Bro.M071.Process/Properties/AssemblyInfo.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/Bro.M071.Process/UI/M071_MainForm.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/Bro.Process/ProcessControl.cs 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/Bro.M071.Process/M071Process.cs
@@ -48,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";
@@ -197,6 +198,8 @@
        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)
@@ -207,6 +210,7 @@
            }
            string hint = "";
            //if (MachineState != MachineState.Ready)
            //{
            //    hint = "机台未就绪,请勿开始测量";
@@ -221,6 +225,8 @@
                OnCheckHintUpload?.Invoke(hint, true);
                throw new ProcessException(hint);
            }
            _isdoing = true;
            MachineState = MachineState.Running;
@@ -317,6 +323,7 @@
                  });
            LogAsync(DateTime.Now, $"{pMeasure.Barcode}测量动作完成", "");
            _isdoing = false;
            GC.Collect(0, GCCollectionMode.Optimized);
@@ -330,8 +337,11 @@
            get => isLeftStart;
            set
            {
                isLeftStart = value;
                StartCheck();
                if (IsLeftStart != value)
                {
                    isLeftStart = value;
                    StartCheck();
                }
            }
        }
@@ -341,8 +351,11 @@
            get => isRightStart;
            set
            {
                isRightStart = value;
                StartCheck();
                if (isRightStart != value)
                {
                    isRightStart = value;
                    StartCheck();
                }
            }
        }
@@ -350,6 +363,11 @@
        {
            if (isRightStart && isLeftStart)
            {
                if (_isdoing)
                {
                    OnCheckHintUpload?.Invoke("设备运行中", false);
                    return;
                }
                StartJob(null, null, null);
            }
        }
src/Bro.M071.Process/M071Process_MotionCard.cs
@@ -7,6 +7,7 @@
using System.ComponentModel;
using System.Drawing.Design;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
@@ -34,6 +35,8 @@
                Task.Run(() =>
                {
                    OnMachineStateChanged?.Invoke(machineState);
                    switch (machineState)
                    {
                        case MachineState.Ready:
@@ -123,9 +126,7 @@
                        default:
                            break;
                    }
                });
                OnMachineStateChanged?.Invoke(machineState);
                });
            }
        }
@@ -248,7 +249,9 @@
            MotionCardDefaultRun("Reset", ref opConfig, ref invokeDevice);
            (invokeDevice as MotionCardBase).ResetAlarm();
            _isdoing = false;
            RaisedAlarm("");
            OnCheckHintUpload?.Invoke("", false);
            //if (MachineState != MachineState.Pause)
            //{
@@ -268,6 +271,7 @@
            }
            LogAsync(DateTime.Now, "普通复位动作完成", "");
            OnResetDone?.Invoke();
            return new ProcessResponse(true);
        }
@@ -646,39 +650,43 @@
        ManualResetEventSlim _pausedHandle = new ManualResetEventSlim(true);
        MachineState _machineStateBeforePause = MachineState.Unknown;
        private void CheckMachinePauseState()
        object _pauseLock = new object();
        private async void CheckMachinePauseState()
        {
            //await Task.Run(() =>
            await Task.Run(() =>
            {
                if (IsMachinePaused)
                lock (_pauseLock)
                {
                    if (MachineState == MachineState.Ready || MachineState == MachineState.Running)
                    if (IsMachinePaused)
                    {
                        _machineStateBeforePause = MachineState;
                    }
                    MachineState = MachineState.Pause;
                    _pausedHandle.Reset();
                        if (MachineState == MachineState.Ready || MachineState == MachineState.Running)
                        {
                            _machineStateBeforePause = MachineState;
                        }
                        MachineState = MachineState.Pause;
                        _pausedHandle.Reset();
                    if (_machineStateBeforePause == MachineState.Running)
                    {
                        Pause();
                    }
                }
                else
                {
                    if (MachineState == MachineState.Pause)
                    {
                        if (_machineStateBeforePause == MachineState.Running)
                        {
                            Resume(true);
                            Pause();
                        }
                        _pausedHandle.Set();
                        RaisedAlarm("");
                        MachineState = _machineStateBeforePause;
                    }
                    else
                    {
                        if (MachineState == MachineState.Pause)
                        {
                            if (_machineStateBeforePause == MachineState.Running || _machineStateBeforePause == MachineState.Ready)
                            {
                                Resume(true);
                            }
                            _pausedHandle.Set();
                            RaisedAlarm("");
                            MachineState = _machineStateBeforePause;
                        }
                    }
                }
            }
            //);
            );
        }
        public bool IsMachinePaused
@@ -687,6 +695,7 @@
        }
        [ProcessMethod("", "SafetyDoorSignal", "安全门信号监控,正常ON,OFF时报警", InvokeType.TestInvoke)]
        [MethodImpl(MethodImplOptions.Synchronized)]
        public ProcessResponse SafetyDoorSignal(IOperationConfig opConfig, IDevice invokeDevice, IDevice sourceDevice)
        {
            //if (MachineState != MachineState.Running && MachineState != MachineState.Pause)
@@ -706,6 +715,7 @@
        }
        [ProcessMethod("", "SafetyBeamSignal", "安全光幕信号监控,正常ON,OFF时报警", InvokeType.TestInvoke)]
        [MethodImpl(MethodImplOptions.Synchronized)]
        public ProcessResponse SafetyBeamSignal(IOperationConfig opConfig, IDevice invokeDevice, IDevice sourceDevice)
        {
            if (opConfig.InputPara == null || opConfig.InputPara.Count == 0)
src/Bro.M071.Process/Properties/AssemblyInfo.cs
@@ -32,5 +32,5 @@
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
//通过使用 "*",如下所示:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.3.0")]
[assembly: AssemblyFileVersion("1.0.3.0")]
[assembly: AssemblyVersion("1.0.4.1")]
[assembly: AssemblyFileVersion("1.0.4.1")]
src/Bro.M071.Process/UI/M071_MainForm.cs
@@ -119,6 +119,9 @@
            Process_M071.OnFullResetDone -= Process_M071_FullResetDone;
            Process_M071.OnFullResetDone += Process_M071_FullResetDone;
            Process_M071.OnResetDone -= Process_M071_ResetDone;
            Process_M071.OnResetDone += Process_M071_ResetDone;
            Config.PropertyChanged -= Config_PropertyChanged;
            Config.PropertyChanged += Config_PropertyChanged;
@@ -129,6 +132,14 @@
            Process_M071.OnOperatorLogin = OnOperatorLogin;
        }
        private void Process_M071_ResetDone()
        {
            lblCT.BeginInvoke(new Action(() =>
            {
                lblCT.Text = "";
            }));
        }
        private void Config_PropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            txtBarcode.Enabled = !Config.IsBarcodeManualInputBlocked;
src/Bro.Process/ProcessControl.cs
@@ -732,9 +732,12 @@
            OnAlarmUpdate?.BeginInvoke(alarmMsg, null, null);
        }
        public virtual void RaisedAlarm(string alarmMsg)
        public async virtual void RaisedAlarm(string alarmMsg)
        {
            OnAlarmUpdate?.Invoke(alarmMsg);
            await Task.Run(() =>
            {
                OnAlarmUpdate?.Invoke(alarmMsg);
            });
        }
        #endregion