From ff7cab72419729ce2c5adc46350ef45d89a5d1e5 Mon Sep 17 00:00:00 2001
From: patrick.xu <patrick.xu@broconcentric.com>
Date: 星期六, 24 七月 2021 10:31:41 +0800
Subject: [PATCH] MES动作添加异常捕捉和重试机制

---
 src/Bro.UI.Config/MenuForms/FrmStatistic.cs     |   19 +++++++++
 src/Bro.M071.Process/M071Process.cs             |    7 ++-
 src/Bro.M071.Process/M071Process_MotionCard.cs  |   12 +++++
 src/Bro.M071.Process/M071Process_MES.cs         |   42 ++++++++++++++++++++-
 src/Bro.M071.Process/Properties/AssemblyInfo.cs |    4 +-
 5 files changed, 76 insertions(+), 8 deletions(-)

diff --git a/src/Bro.M071.Process/M071Process.cs b/src/Bro.M071.Process/M071Process.cs
index b3c0725..a281648 100644
--- a/src/Bro.M071.Process/M071Process.cs
+++ b/src/Bro.M071.Process/M071Process.cs
@@ -274,7 +274,7 @@
                 _isdoing = true;
             }
 
-            MachineState = MachineState.Running;
+            MeasureState = MachineState = MachineState.Running;
 
             OnCheckHintUpload?.Invoke(hint, true);
             OnMeasureStart?.Invoke();
@@ -654,6 +654,7 @@
                 //if (MachineState == MachineState.Running)
                 //    MachineState = MachineState.Ready;
 
+                MeasureState = MachineState.Ready;
                 if (MachineState != MachineState.Alarm)
                 {
                     if (MachineState == MachineState.Pause)
@@ -1450,8 +1451,8 @@
                                     kb.FillKeyValues(resultDict);
                                 }
                                 else
-                                { 
-                                
+                                {
+
                                 }
                             });
                         });
diff --git a/src/Bro.M071.Process/M071Process_MES.cs b/src/Bro.M071.Process/M071Process_MES.cs
index 43ff973..28e399e 100644
--- a/src/Bro.M071.Process/M071Process_MES.cs
+++ b/src/Bro.M071.Process/M071Process_MES.cs
@@ -7,6 +7,7 @@
 using System.Linq;
 using System.Reflection;
 using System.Text;
+using System.Threading;
 using System.Threading.Tasks;
 
 namespace Bro.M071.Process
@@ -151,7 +152,25 @@
                 LogAsync(DateTime.Now, $"MES鍏ユ枡妫�娴�", JsonConvert.SerializeObject(paras));
             }
 
-            var result = IncomingCheckMethod?.Invoke(IncomingCheckObj, paras).ToString();
+            string result = "-3";
+
+            int repeatTime = 3;
+
+            do
+            {
+                try
+                {
+                    result = IncomingCheckMethod?.Invoke(IncomingCheckObj, paras).ToString();
+                }
+                catch (Exception ex)
+                {
+                    LogAsync(DateTime.Now, $"{barcode}浜у搧鏉$爜妫�娴嬪紓甯�", ex.GetExceptionMessage());
+                    repeatTime--;
+
+                    Thread.Sleep(100);
+                    result = "-3";
+                }
+            } while (repeatTime > 0);
             var mesReturn = (MESIncomingCheckReturn)int.Parse(result);
             sw.Stop();
             LogAsync(DateTime.Now, $"{barcode}浜у搧鏉$爜妫�娴嬶紝{result}|{mesReturn.ToString()}", $"鑰楁椂锛歿sw.ElapsedMilliseconds}ms");
@@ -210,7 +229,26 @@
                 LogAsync(DateTime.Now, $"{pMeasure.Barcode}浜у搧妫�娴嬫暟鎹笂浼�", JsonConvert.SerializeObject(paras));
             }
 
-            var result = DataUploadMethod?.Invoke(DataUploadObj, paras).ToString();
+            string result = "-3";
+
+            int repeatTime = 3;
+            do
+            {
+                try
+                {
+                    result = DataUploadMethod?.Invoke(DataUploadObj, paras).ToString();
+                    repeatTime = -1;
+                }
+                catch (Exception ex)
+                {
+                    LogAsync(DateTime.Now, $"{barcode}浜у搧妫�娴嬫暟鎹笂浼犲紓甯�", ex.GetExceptionMessage());
+                    repeatTime--;
+
+                    Thread.Sleep(100); 
+                    result = "-3";
+                }
+            } while (repeatTime > 0);
+
             var mesReturn = (MESUploadReturn)int.Parse(result);
             sw.Stop();
             LogAsync(DateTime.Now, $"{barcode}浜у搧妫�娴嬫暟鎹笂浼狅紝{result}|{mesReturn.ToString()}", $"鑰楁椂锛歿sw.ElapsedMilliseconds}ms");
diff --git a/src/Bro.M071.Process/M071Process_MotionCard.cs b/src/Bro.M071.Process/M071Process_MotionCard.cs
index baf87f7..7d5994c 100644
--- a/src/Bro.M071.Process/M071Process_MotionCard.cs
+++ b/src/Bro.M071.Process/M071Process_MotionCard.cs
@@ -19,6 +19,8 @@
     {
         public Timer ResetTimer = null;
 
+        MachineState MeasureState = MachineState.Unknown;
+
         object machineStateLock = new object();
         //MachineState _machineStatePre = MachineState.Unknown;
         MachineState machineState = MachineState.Unknown;
@@ -683,7 +685,15 @@
                             }
                             _pausedHandle.Set();
                             RaisedAlarm("");
-                            MachineState = _machineStateBeforePause;
+
+                            if (_machineStateBeforePause == MachineState.Running && MeasureState == MachineState.Ready)
+                            {
+                                MachineState = MachineState.Ready;
+                            }
+                            else
+                            {
+                                MachineState = _machineStateBeforePause;
+                            }
                         }
                     }
                 }
diff --git a/src/Bro.M071.Process/Properties/AssemblyInfo.cs b/src/Bro.M071.Process/Properties/AssemblyInfo.cs
index 900ca23..b702623 100644
--- a/src/Bro.M071.Process/Properties/AssemblyInfo.cs
+++ b/src/Bro.M071.Process/Properties/AssemblyInfo.cs
@@ -32,5 +32,5 @@
 //鍙互鎸囧畾鎵�鏈夎繖浜涘�硷紝涔熷彲浠ヤ娇鐢ㄢ�滅敓鎴愬彿鈥濆拰鈥滀慨璁㈠彿鈥濈殑榛樿鍊�
 //閫氳繃浣跨敤 "*"锛屽涓嬫墍绀�:
 // [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.5.0")]
-[assembly: AssemblyFileVersion("1.0.5.0")]
+[assembly: AssemblyVersion("1.0.6.0")]
+[assembly: AssemblyFileVersion("1.0.6.0")]
diff --git a/src/Bro.UI.Config/MenuForms/FrmStatistic.cs b/src/Bro.UI.Config/MenuForms/FrmStatistic.cs
index d587aca..0b63795 100644
--- a/src/Bro.UI.Config/MenuForms/FrmStatistic.cs
+++ b/src/Bro.UI.Config/MenuForms/FrmStatistic.cs
@@ -352,6 +352,25 @@
             {
                 _idleThreshold = 30;
             }
+
+            this.FormClosing += (s, e) =>
+            {
+                _checkIdleTimer?.Change(-1, -1);
+                _checkIdleTimer?.Dispose();
+                _checkIdleTimer = null;
+
+                _idleTimer?.Change(-1, -1);
+                _idleTimer?.Dispose();
+                _idleTimer = null;
+
+                _downTimer?.Change(-1, -1);
+                _downTimer?.Dispose();
+                _downTimer = null;
+
+                _availableTimer?.Change(-1, -1);
+                _availableTimer?.Dispose();
+                _availableTimer = null;
+            };
         }
 
         public override void OnProcessUpdated()

--
Gitblit v1.8.0