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