领胜LDS 键盘AOI检测项目
patrick.xu
2021-02-20 78289c64a16dd02cc9fec595bf758a9e30a30926
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,11 @@
            MotionCardDefaultRun("Reset", ref opConfig, ref invokeDevice);
            (invokeDevice as MotionCardBase).ResetAlarm();
            _isdoing = false;
            _pausedHandle.Set();
            RaisedAlarm("");
            OnCheckHintUpload?.Invoke("", false);
            //if (MachineState != MachineState.Pause)
            //{
@@ -268,6 +273,7 @@
            }
            LogAsync(DateTime.Now, "普通复位动作完成", "");
            OnResetDone?.Invoke();
            return new ProcessResponse(true);
        }
@@ -646,39 +652,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 +697,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 +717,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)