Files
ParkingRobot/MultiWheelC/Old/DriverMovements.cs
T

124 lines
3.9 KiB
C#
Raw Normal View History

// using System;
// using System.Collections.Generic;
// using System.Threading;
// using ClumsyCore.Pilot;
// namespace MultiWheelC
// {
// public class Sleep : MovementDefinition
// {
// public float Second = 2f;
// public override IEnumerable<bool> Get()
// {
// if (Second <= 0)
// {
// yield return false;
// yield break;
// }
// var endTime = DateTime.UtcNow.AddSeconds(Second);
// while (DateTime.UtcNow < endTime)
// {
// Thread.Sleep(50);
// yield return true;
// }
// yield return false;
// }
// }
// public class DriverAble : MovementDefinition
// {
// public int WaitTimeoutMs = 2000;
// public int PollIntervalMs = 50;
// // C层单车硬件:请求全部驱动轮复位并恢复使能。
// public override IEnumerable<bool> Get()
// {
// PilotDefinition.Self.ResetFromC = true;
// try
// {
// var start = DateTime.Now;
// var timeoutMs = Math.Max(0, WaitTimeoutMs);
// var pollMs = Math.Max(1, PollIntervalMs);
// // 至少保留一个调度周期,确保M层能收到复位请求。
// yield return true;
// while (!PilotDefinition.Self.WheelAbleState &&
// (DateTime.Now - start).TotalMilliseconds < timeoutMs)
// {
// Thread.Sleep(pollMs);
// yield return true;
// }
// }
// finally
// {
// PilotDefinition.Self.ResetFromC = false;
// }
// }
// }
// public class DriverDisable : MovementDefinition
// {
// public int WaitTimeoutMs = 3000;
// public int PollIntervalMs = 20;
// // C层单车硬件:请求驱动轮退出使能,并等待M层状态反馈。
// public override IEnumerable<bool> Get()
// {
// var timeoutMs = Math.Max(0, WaitTimeoutMs);
// var pollMs = Math.Max(1, PollIntervalMs);
// var startTime = DateTime.UtcNow;
// var success = false;
// PilotDefinition.Self.DisableFromC = true;
// try
// {
// // 至少保持一个C层调度周期,确保M层能收到下使能请求。
// yield return true;
// success = !PilotDefinition.Self.WheelAbleState;
// while (!success &&
// (DateTime.UtcNow - startTime).TotalMilliseconds <
// timeoutMs)
// {
// Thread.Sleep(pollMs);
// success =
// !PilotDefinition.Self.WheelAbleState;
// if (!success)
// {
// yield return true;
// }
// }
// }
// finally
// {
// // 无论正常完成、超时、异常还是任务被停止,都撤销请求。
// PilotDefinition.Self.DisableFromC = false;
// }
// if (success)
// {
// Console.WriteLine(
// $"驱动器下使能完成," +
// $"WheelAbleState=" +
// $"{PilotDefinition.Self.WheelAbleState}");
// }
// else
// {
// Console.WriteLine(
// $"驱动器下使能超时," +
// $"WheelAbleState=" +
// $"{PilotDefinition.Self.WheelAbleState}" +
// $"等待{timeoutMs}ms");
// }
// yield return false;
// }
// }
// }