Browse Source

revise pause/resume bug

chenzk 4 weeks ago
parent
commit
c9fee396c0

+ 1 - 0
CyberX8_RT/Devices/EFEM/EfemBase.cs

@@ -90,6 +90,7 @@ namespace CyberX8_RT.Devices.EFEM
         public virtual bool IsResumeRDYReceived {  get;}
         public virtual bool IsPauseRDYReceived {  get;}
         public virtual bool IsActionRDYReceived {  get;}
+        public virtual bool IsInPauseStatus {  get;}
 
         public abstract bool HomeAll();
         public abstract bool Home(ModuleName mod);

+ 6 - 0
CyberX8_RT/Devices/EFEM/SunWayRobot.cs

@@ -99,9 +99,11 @@ namespace CyberX8_RT.Devices.EFEM
         private bool _isResumeRDYReceived = false;
         private bool _isPauseRDYReceived = false;
         private bool _isActionRDYReceived = false;
+        private bool _isInPauseStatus = false;
         public override bool IsResumeRDYReceived { get { return _isResumeRDYReceived; } }
         public override bool IsPauseRDYReceived { get { return _isPauseRDYReceived; } }
         public override bool IsActionRDYReceived { get { return _isActionRDYReceived; } }
+        public override bool IsInPauseStatus { get { return _isInPauseStatus; } }
 
         public SunWayRobot()
         {
@@ -1014,11 +1016,15 @@ namespace CyberX8_RT.Devices.EFEM
                 _isPauseRDYReceived = true;
                 _isResumeRDYReceived = false; //收到pause把收到resume的信号置false
 
+                _isInPauseStatus = true; //进入pause状态
+
             }
             else if(msg.Contains("RESUME _RDY"))
             {
                  _isResumeRDYReceived = true;
                 _isPauseRDYReceived =  false;  //收到Resume把收到pause的信号置false
+                
+                _isInPauseStatus = false; //取消pause状态
             }
             else
             {

+ 4 - 0
CyberX8_RT/Modules/EFEM/EfemPickRoutine.cs

@@ -255,6 +255,10 @@ namespace CyberX8_RT.Modules.EFEM
 
         private bool WaitModuleReady()
         {
+            if (_efem.IsInPauseStatus)
+            {
+                return false;
+            }
             return _efem.Status == RState.End;
         }
 

+ 4 - 0
CyberX8_RT/Modules/EFEM/EfemPlaceRoutine.cs

@@ -223,6 +223,10 @@ namespace CyberX8_RT.Modules.EFEM
 
         private bool WaitModuleReady()
         {
+            if (_efem.IsInPauseStatus)
+            {
+                return false;
+            }
             return _efem.Status == RState.End;
         }
 

+ 4 - 0
CyberX8_RT/Modules/EFEM/EfemRobotMapRoutine.cs

@@ -96,6 +96,10 @@ namespace CyberX8_RT.Modules.EFEM
 
         private bool WaitModuleReady()
         {
+            if (_efem.IsInPauseStatus)
+            {
+                return false;
+            }
             return _efem.Status == RState.End;
         }