From 6f92829951f3ec228b18df8c157239573edd9cb4 Mon Sep 17 00:00:00 2001
From: xcd <834800634@qq.com>
Date: 星期三, 09 九月 2020 15:20:53 +0800
Subject: [PATCH] 1. 取消ImageSet中的HImage释放动作,转移到业务流程中 2. 拆分板卡的IO监听和轴状态,轴位置监听

---
 src/Bro.M071.Process/M071Process_MotionCard.cs |  193 +++++++++++++++++++++++-------------------------
 1 files changed, 92 insertions(+), 101 deletions(-)

diff --git a/src/Bro.M071.Process/M071Process_MotionCard.cs b/src/Bro.M071.Process/M071Process_MotionCard.cs
index fbc4314..c85443d 100644
--- a/src/Bro.M071.Process/M071Process_MotionCard.cs
+++ b/src/Bro.M071.Process/M071Process_MotionCard.cs
@@ -30,112 +30,102 @@
                 if (machineState == value)
                     return;
 
-                //_machineStatePre = machineState;
-
                 machineState = value;
 
-                switch (machineState)
+                Task.Run(() =>
                 {
-                    case MachineState.Ready:
-                        lock (machineStateLock)
-                        {
-                            SwitchBeep(false);
-                            SwitchLightRed(false);
-                            SwitchLightYellow(false);
-                        }
-
-                        Task.Run(() =>
-                        {
-
-                            while (MachineState == MachineState.Ready)
+                    switch (machineState)
+                    {
+                        case MachineState.Ready:
+                            lock (machineStateLock)
                             {
-                                lock (machineStateLock)
-                                {
-                                    SwitchLightGreen(true);
-                                    Thread.Sleep(1000);
-                                    SwitchLightGreen(false);
-                                    Thread.Sleep(1000);
-                                }
+                                SwitchBeep(false);
+                                SwitchLightRed(false);
+                                SwitchLightYellow(false);
                             }
-                        });
 
-                        break;
-                    case MachineState.Running:
-                        lock (machineStateLock)
-                        {
-                            SwitchBeep(false);
-                            SwitchLightRed(false);
-                            SwitchLightYellow(false);
-                            SwitchLightGreen(true);
-                        }
-                        break;
-                    case MachineState.Alarm:
-                        lock (machineStateLock)
-                        {
-                            SwitchBeep(true);
-                            SwitchLightRed(true);
-                            SwitchLightYellow(false);
-                            SwitchLightGreen(false);
-                        }
-                        break;
-                    case MachineState.Pause:
-                        lock (machineStateLock)
-                        {
-                            SwitchBeep(false);
-                            SwitchLightRed(false);
-                        }
-                        Task.Run(() =>
-                        {
-                            while (MachineState == MachineState.Pause)
+                            Task.Run(() =>
                             {
-                                lock (machineStateLock)
+                                while (MachineState == MachineState.Ready)
                                 {
-                                    SwitchLightYellow(true);
-                                    SwitchLightGreen(true);
-                                    Thread.Sleep(1000);
-                                    SwitchLightYellow(false);
-                                    SwitchLightGreen(false);
-                                    Thread.Sleep(1000);
+                                    lock (machineStateLock)
+                                    {
+                                        SwitchLightGreen(true);
+                                        Thread.Sleep(1000);
+                                        SwitchLightGreen(false);
+                                        Thread.Sleep(1000);
+                                    }
                                 }
-                            }
-                        });
-                        break;
-                    case MachineState.Resetting:
-                        lock (machineStateLock)
-                        {
-                            SwitchBeep(false);
-                            SwitchLightRed(false);
-                            SwitchLightGreen(false);
-                        }
-                        Task.Run(() =>
-                        {
-                            while (MachineState == MachineState.Resetting)
-                            {
-                                lock (machineStateLock)
-                                {
+                            });
 
-                                    SwitchLightYellow(true);
-                                    Thread.Sleep(1000);
-                                    SwitchLightYellow(false);
-                                    Thread.Sleep(1000);
-                                }
+                            break;
+                        case MachineState.Running:
+                            lock (machineStateLock)
+                            {
+                                SwitchBeep(false);
+                                SwitchLightRed(false);
+                                SwitchLightYellow(false);
+                                SwitchLightGreen(true);
                             }
-                        });
-                        break;
-                    default:
-                        break;
-                }
+                            break;
+                        case MachineState.Alarm:
+                            lock (machineStateLock)
+                            {
+                                SwitchBeep(true);
+                                SwitchLightRed(true);
+                                SwitchLightYellow(false);
+                                SwitchLightGreen(false);
+                            }
+                            break;
+                        case MachineState.Pause:
+                            lock (machineStateLock)
+                            {
+                                SwitchBeep(false);
+                                SwitchLightRed(false);
+                            }
+                            Task.Run(() =>
+                            {
+                                while (MachineState == MachineState.Pause)
+                                {
+                                    lock (machineStateLock)
+                                    {
+                                        SwitchLightYellow(true);
+                                        SwitchLightGreen(true);
+                                        Thread.Sleep(1000);
+                                        SwitchLightYellow(false);
+                                        SwitchLightGreen(false);
+                                        Thread.Sleep(1000);
+                                    }
+                                }
+                            });
+                            break;
+                        case MachineState.Resetting:
+                            lock (machineStateLock)
+                            {
+                                SwitchBeep(false);
+                                SwitchLightRed(false);
+                                SwitchLightGreen(false);
+                            }
+                            Task.Run(() =>
+                            {
+                                while (MachineState == MachineState.Resetting)
+                                {
+                                    lock (machineStateLock)
+                                    {
+                                        SwitchLightYellow(true);
+                                        Thread.Sleep(1000);
+                                        SwitchLightYellow(false);
+                                        Thread.Sleep(1000);
+                                    }
+                                }
+                            });
+                            break;
+                        default:
+                            break;
+                    }
+                });
 
                 OnMachineStateChanged?.Invoke(machineState);
-
-                //if (_machineStatePre == MachineState.Running && machineState == MachineState.Pause)
-                //{
-                //    Pause();
-                //}
-                //else if (_machineStatePre == MachineState.Pause && (machineState == MachineState.Running || machineState == MachineState.Ready))
-                //{
-                //    Resume();
-                //}
             }
         }
 
@@ -653,13 +643,16 @@
 
         ManualResetEventSlim _pausedHandle = new ManualResetEventSlim(true);
         MachineState _machineStateBeforePause = MachineState.Unknown;
-        private async void CheckMachinePauseState()
+        private void CheckMachinePauseState()
         {
-            await Task.Run(() =>
+            //await Task.Run(() =>
             {
                 if (IsMachinePaused)
                 {
-                    _machineStateBeforePause = MachineState;
+                    if (MachineState == MachineState.Ready || MachineState == MachineState.Running)
+                    {
+                        _machineStateBeforePause = MachineState;
+                    }
                     MachineState = MachineState.Pause;
                     _pausedHandle.Reset();
 
@@ -681,7 +674,8 @@
                         MachineState = _machineStateBeforePause;
                     }
                 }
-            });
+            }
+            //);
         }
 
         public bool IsMachinePaused
@@ -711,9 +705,6 @@
         [ProcessMethod("", "SafetyBeamSignal", "瀹夊叏鍏夊箷淇″彿鐩戞帶锛屾甯窸N锛孫FF鏃舵姤璀�", InvokeType.TestInvoke)]
         public ProcessResponse SafetyBeamSignal(IOperationConfig opConfig, IDevice invokeDevice, IDevice sourceDevice)
         {
-            //if (MachineState != MachineState.Running && MachineState != MachineState.Pause)
-            //    return new ProcessResponse(true);
-
             if (opConfig.InputPara == null || opConfig.InputPara.Count == 0)
                 throw new ProcessException("瀹夊叏鍏夊箷鐩戞帶鏈厤缃緭鍏ヤ俊鍙�");
 
@@ -756,7 +747,7 @@
 
             IsEmergencyStopped = opConfig.InputPara[0] == 0;
 
-            if (IsEmergencyStopped)
+            if (isEmergencyStopped)
             {
                 RaisedAlarm("鎬ュ仠鎸夐挳琚媿涓�");
                 MachineState = MachineState.Alarm;

--
Gitblit v1.8.0