From 2edc3c54ba7a42d5e9bb9120b9881d418e6bd408 Mon Sep 17 00:00:00 2001
From: patrick.xu <patrick.xu@broconcentric.com>
Date: 星期五, 13 八月 2021 09:38:29 +0800
Subject: [PATCH] 1. GTS回原点修改,避免来回 2. 添加单键测量结果补偿 3. 部分条件限制,日志修改 4. 来料检debug,添加退出条件判断

---
 src/Bro.M071.Process/M071Process_MotionCard.cs |   72 +++++++++++++++++++++++------------
 1 files changed, 47 insertions(+), 25 deletions(-)

diff --git a/src/Bro.M071.Process/M071Process_MotionCard.cs b/src/Bro.M071.Process/M071Process_MotionCard.cs
index 8806106..7d5994c 100644
--- a/src/Bro.M071.Process/M071Process_MotionCard.cs
+++ b/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;
@@ -17,6 +18,8 @@
     public partial class M071Process
     {
         public Timer ResetTimer = null;
+
+        MachineState MeasureState = MachineState.Unknown;
 
         object machineStateLock = new object();
         //MachineState _machineStatePre = MachineState.Unknown;
@@ -34,6 +37,8 @@
 
                 Task.Run(() =>
                 {
+                    OnMachineStateChanged?.Invoke(machineState);
+
                     switch (machineState)
                     {
                         case MachineState.Ready:
@@ -123,9 +128,7 @@
                         default:
                             break;
                     }
-                });
-
-                OnMachineStateChanged?.Invoke(machineState);
+                });                
             }
         }
 
@@ -248,7 +251,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 +275,7 @@
             }
 
             LogAsync(DateTime.Now, "鏅�氬浣嶅姩浣滃畬鎴�", "");
+            OnResetDone?.Invoke();
 
             return new ProcessResponse(true);
         }
@@ -646,39 +654,51 @@
 
         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("");
+
+                            if (_machineStateBeforePause == MachineState.Running && MeasureState == MachineState.Ready)
+                            {
+                                MachineState = MachineState.Ready;
+                            }
+                            else
+                            {
+                                MachineState = _machineStateBeforePause;
+                            }
+                        }
                     }
                 }
             }
-            //);
+            );
         }
 
         public bool IsMachinePaused
@@ -687,6 +707,7 @@
         }
 
         [ProcessMethod("", "SafetyDoorSignal", "瀹夊叏闂ㄤ俊鍙风洃鎺э紝姝e父ON锛孫FF鏃舵姤璀�", InvokeType.TestInvoke)]
+        [MethodImpl(MethodImplOptions.Synchronized)]
         public ProcessResponse SafetyDoorSignal(IOperationConfig opConfig, IDevice invokeDevice, IDevice sourceDevice)
         {
             //if (MachineState != MachineState.Running && MachineState != MachineState.Pause)
@@ -706,6 +727,7 @@
         }
 
         [ProcessMethod("", "SafetyBeamSignal", "瀹夊叏鍏夊箷淇″彿鐩戞帶锛屾甯窸N锛孫FF鏃舵姤璀�", InvokeType.TestInvoke)]
+        [MethodImpl(MethodImplOptions.Synchronized)]
         public ProcessResponse SafetyBeamSignal(IOperationConfig opConfig, IDevice invokeDevice, IDevice sourceDevice)
         {
             if (opConfig.InputPara == null || opConfig.InputPara.Count == 0)

--
Gitblit v1.8.0