From bd676464185d6e4b5bfc04c2031acfbf497b9b52 Mon Sep 17 00:00:00 2001
From: xcd <834800634@qq.com>
Date: 星期二, 30 六月 2020 08:54:21 +0800
Subject: [PATCH] Merge branch 'master' of http://gitblit.broconcentric.com:8088/r/M071

---
 src/Bro.Device.GTSCard/GTSCardDriver.cs |  110 +++++++++++++++++++++++++------------------------------
 1 files changed, 50 insertions(+), 60 deletions(-)

diff --git a/src/Bro.Device.GTSCard/GTSCardDriver.cs b/src/Bro.Device.GTSCard/GTSCardDriver.cs
index ffe11a6..d4eea2e 100644
--- a/src/Bro.Device.GTSCard/GTSCardDriver.cs
+++ b/src/Bro.Device.GTSCard/GTSCardDriver.cs
@@ -33,29 +33,6 @@
             }
         }
 
-        static Dictionary<int, object> axisMoveLockDict = new Dictionary<int, object>();
-
-        /// <summary>
-        /// 杞磋繍鍔ㄥ紑濮嬫椂鐨勬娴嬶紝true:鏈夊啿绐� 涓嶅彲缁х画鎵ц false锛氭棤鍐茬獊,鍙户缁墽琛�
-        /// </summary>
-        public event OnAxisStartToCheckDelegate OnAxisStartToCheckConfliction;
-        /// <summary>
-        /// 鏆傚仠锛堢嚎绋嬪悓姝ヤ簨浠讹級
-        /// </summary>
-        Dictionary<int, ManualResetEvent> axisImmediatePauseHandleDict = new Dictionary<int, ManualResetEvent>();
-        Dictionary<int, CancellationTokenSource> axisMoveCancelDict = new Dictionary<int, CancellationTokenSource>();
-        /// <summary>
-        /// 杩愯杩囩▼涓殑绾跨▼绛夊緟
-        /// </summary>
-        private Dictionary<int, ManualResetEvent> runningEventDic = new Dictionary<int, ManualResetEvent>();
-        private Dictionary<int, AutoResetEvent> axisMovingHandleDict = new Dictionary<int, AutoResetEvent>();
-        private ConcurrentDictionary<int, int> axisDestination = new ConcurrentDictionary<int, int>();
-
-        private ObservableCollection<int> _commandAxisList = new ObservableCollection<int>();
-        public Action<bool> CommandAxisCountChangedAction = null;
-        private Dictionary<int, VelocityPara> velIndexDict = new Dictionary<int, VelocityPara>();
-        ManualResetEvent _pauseHandle = new ManualResetEvent(true);
-
         static object moveLock = new object();
         /// <summary>
         /// 鏄惁澶嶄綅鏍囧織
@@ -78,7 +55,6 @@
         {
             InitialMotionCard();
         }
-
 
         protected override void Pause()
         {
@@ -128,10 +104,21 @@
         {
             bool resultOK = false;
             var gtsOperationConfig = opConfig as GTSCardOperationConfig;
+            List<Task<bool>> taskList = new List<Task<bool>>();
+            //TaskFactory factory = new TaskFactory(TaskCreationOptions.LongRunning, TaskContinuationOptions.None);
+            // 濡傛灉鏄涓酱鐨勮繍鍔� 绛夋瘡涓酱杩愬姩缁撴潫
             foreach (var movingOp in gtsOperationConfig.MovingOps)
             {
-                resultOK = SingleAxisMoving(movingOp);
+                //var task = factory.StartNew<bool>((op) =>
+                //{
+                //    return SingleAxisMoving(op as MovingOption);
+                //}, movingOp);
+                var task = SingleAxisMoving(movingOp);
+                taskList.Add(task);
             }
+            Task.WaitAll(taskList.ToArray());
+            resultOK = taskList.All(u => u.GetAwaiter().GetResult());
+
             return resultOK;
         }
 
@@ -165,51 +152,54 @@
         /// 鍗曚釜杞� 鐐逛綅鍒扮偣浣嶈繍鍔�
         /// </summary>
         /// <param name="optionPara">杩愬姩鍙傛暟瀵硅薄</param>
-        public bool SingleAxisMoving(MovingOption optionPara)
+        public async Task<bool> SingleAxisMoving(MovingOption optionPara)
         {
-            bool isSuccessAndStop = false;
-            if (IConfig.AxisSettings.FirstOrDefault(a => a.AxisIndex == optionPara.AxisIndex)?.IsAxisEnabled ?? false)
+            return await Task.Run(() =>
             {
-                string _position = "";
-                string motionType = optionPara.MoveMode == EnumHelper.MotorMoveMode.Normal ? (optionPara.IsAbsolute ? "Abs" : "Rel") : optionPara.MoveMode.ToString();
-
-                _position = $"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")},{optionPara.AxisIndex},{motionType},{GetPosition(optionPara.AxisIndex).ToString()},{GetPrfPosition(optionPara.AxisIndex).ToString()},{optionPara.Destination},";
-
-                switch (optionPara.MoveMode)
+                bool isSuccessAndStop = false;
+                if (IConfig.AxisSettings.FirstOrDefault(a => a.AxisIndex == optionPara.AxisIndex)?.IsAxisEnabled ?? false)
                 {
-                    case MotorMoveMode.Normal:
-                        {
-                            if (_isResetting)
+                    string _position = "";
+                    string motionType = optionPara.MoveMode == EnumHelper.MotorMoveMode.Normal ? (optionPara.IsAbsolute ? "Abs" : "Rel") : optionPara.MoveMode.ToString();
+
+                    _position = $"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")},{optionPara.AxisIndex},{motionType},{GetPosition(optionPara.AxisIndex).ToString()},{GetPrfPosition(optionPara.AxisIndex).ToString()},{optionPara.Destination},";
+
+                    switch (optionPara.MoveMode)
+                    {
+                        case MotorMoveMode.Normal:
                             {
-                                LogAsync(DateTime.Now, "澶嶄綅涓惎鍔ㄨ繍鍔ㄥ紓甯�", optionPara.AxisIndex + "鍚姩杩愬姩寮傚父");
-                                return false;
-                            }
-                            //璁剧疆 杩愬姩鍙傛暟
-                            var isSuccess = SetAxisParam(optionPara);
-                            if (isSuccess)
-                            {
-                                if (optionPara.IsAbsolute)
+                                if (_isResetting)
                                 {
-                                    isSuccessAndStop = MoveAbs(optionPara);
+                                    LogAsync(DateTime.Now, "澶嶄綅涓惎鍔ㄨ繍鍔ㄥ紓甯�", optionPara.AxisIndex + "鍚姩杩愬姩寮傚父");
+                                    return false;
                                 }
-                                else
+                                //璁剧疆 杩愬姩鍙傛暟
+                                var isSuccess = SetAxisParam(optionPara);
+                                if (isSuccess)
                                 {
-                                    isSuccessAndStop = MoveRel(optionPara);
+                                    if (optionPara.IsAbsolute)
+                                    {
+                                        isSuccessAndStop = MoveAbs(optionPara);
+                                    }
+                                    else
+                                    {
+                                        isSuccessAndStop = MoveRel(optionPara);
+                                    }
                                 }
                             }
-                        }
-                        break;
-                    case MotorMoveMode.FindOri:
-                        {
-                            isSuccessAndStop = GoHome(optionPara);
-                        }
-                        break;
+                            break;
+                        case MotorMoveMode.FindOri:
+                            {
+                                isSuccessAndStop = GoHome(optionPara);
+                            }
+                            break;
+                    }
+                    _position += $"{GetPosition(optionPara.AxisIndex)},";
+                    _position += $"{DateTime.Now:yyyy-MM-dd HH:mm:ss.fff}";
+                    LogAsync(DateTime.Now, "", _position);
                 }
-                _position += $"{GetPosition(optionPara.AxisIndex)},";
-                _position += $"{DateTime.Now:yyyy-MM-dd HH:mm:ss.fff}";
-                LogAsync(DateTime.Now, "", _position);
-            }
-            return isSuccessAndStop;
+                return isSuccessAndStop;
+            });
         }
 
         /// <summary>

--
Gitblit v1.8.0