/// <summary> /// Запускает перемещение плеча робота в ручном режиме управления. /// </summary> /// <param name="stepLever">Тип перемещаемого плеча и количество импульсов</param> public void ManulControlRun(StepLever stepLever) { if (leverMovement.IsRunning) { return; } if (stepLever.StepsCount == 0) { stepLever.StepsCount = Calculation.CalculateStepsToLeverZero(stepLever.Lever); } else { stepLever.StepsCount = Calculation.CalculateStepsByDirection(stepLever.Lever, stepLever.StepsCount == 1); } leverMovement.Move(stepLever); }
private void Worker_OnStop(object sender, EventArgs e) { var stepLever = new StepLever(movingLever.Type, movingLever.Stepper.CurrentStepsCount); movingLever = null; OnMovingEnd(this, new LeverMovingEndEventArgs(stepLever, worker.StopReason)); if (IsQueueMoving) { if (worker.StopReason != StepperStopReason.WorkDone) { steppersQueue.Clear(); } else { new Task(Continue).Start(); } } }
/// <summary> /// Предоставляет класс, содержащий данные о событии окончания движения плеча робота /// </summary> /// <param name="stepLever">Экземпляр класса, содержащий данные о количестве шагов шагового двигателя, который управляет плечом.</param> /// <param name="stopReason">Причина окончания движения плеча робота</param> public LeverMovingEndEventArgs(StepLever stepLever, StepperStopReason stopReason) : this(stepLever.Lever, stepLever.StepsCount, stopReason) { }
private void LeverMovement_OnMovingStart(object sender, StepLever e) { OnMovingStart(this, e); }
private void LeverMovement_OnStepsIntervalElapsed(object sender, StepLever e) { Location = Calculation.GetLocation(Location, e); }