From f83caa46dbaa42467fa92a050f9d1fa268833b2d Mon Sep 17 00:00:00 2001
From: wells.liu <wells.liu@broconcentric.com>
Date: 星期一, 29 六月 2020 19:22:41 +0800
Subject: [PATCH] 点位到点位运动 修改

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

diff --git a/src/Bro.Device.GTSCard/GTSCardDriver.cs b/src/Bro.Device.GTSCard/GTSCardDriver.cs
index c055b66..d4eea2e 100644
--- a/src/Bro.Device.GTSCard/GTSCardDriver.cs
+++ b/src/Bro.Device.GTSCard/GTSCardDriver.cs
@@ -104,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;
         }
 
@@ -141,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