/// <summary> /// Останавливает шаговый двигатель, перемещающий плечо <paramref name="type"/>, с заданным торможением. /// </summary> public void Stop(LeverType type) { if (movingLever != null && movingLever.Type == type) { worker.Stop(); } }
/// <summary> /// Устанавливает в конструктивные параметры <see cref="DesignParameters"/> новое положения плеча <paramref name="leverType"/> исходя из /// текущего положения и количества импульсов <paramref name="stepsCount"/>. /// </summary> /// <param name="leverType"></param> /// <param name="stepsCount"></param> public void SetNewLeverPosition(LeverType leverType, long stepsCount) { var lever = GetRobotLeverByType(leverType); var newABvalue = PulseCalculation.GetNewAB(lever, stepsCount); lever.AB = newABvalue; }
public Lever(Game game, int xPos, int yPos, int screenWidth, int screenHeight, LeverType leverType, List<Gate> gates, Texture2D texture) { position = new Rectangle(xPos, yPos, spriteWidth/2, spriteHeight/2); type = leverType; status = Status.off; leverTexture = texture; gatesControlled = gates; }
public StepperSettingsPanel() { InitializeComponent(); var leverTypes = Enum.GetValues(typeof(LeverType)); LeverType[] levers = new LeverType[leverTypes.Length]; leverTypes.CopyTo(levers, 0); cmbLeverType.DataSource = levers.Select(lever => lever.ToRuString()).ToList(); }
public void SetCurrentEditWorkspaceModeLeverPosition(LeverType leverType, double currentValue) { if (GetEditWorkspaceModeActiveLever() != leverType) { return; } this.Invoke(new Action(() => { lblWorkspaceAB.Text = currentValue.ToString(); })); }
/// <summary> /// Возвращает значение координат X (<paramref name="x"/>) и Y(<paramref name="y"/>) при перемещении плеча <paramref name="type"/> /// от его текущего положения на заданное количестве импульсов <paramref name="stepsCount"/>. /// </summary> public void GetXY(LeverType type, long stepsCount, out double x, out double y) { if (type == LeverType.Horizontal) { throw new ArgumentException(); } var newABvalue = PulseCalculation.GetNewAB(GetRobotLeverByType(type), stepsCount); var lever1Ab = type == LeverType.Lever1 ? newABvalue : DesignParameters.Lever1.AB; var lever2Ab = type == LeverType.Lever2 ? newABvalue : DesignParameters.Lever2.AB; GetXYByABValues(lever1Ab, lever2Ab, out x, out y); }
public double GetCurrentPosition(LeverType leverType) { if (leverType == LeverType.Horizontal) { return(Properties.Settings.Default.HorizontalLeverAB); } if (leverType == LeverType.Lever1) { return(Properties.Settings.Default.Lever1AB); } if (leverType == LeverType.Lever2) { return(Properties.Settings.Default.Lever2AB); } throw new NotImplementedException("Получение текущего положения для данного плеча не реализовано"); }
public ManualControlItem(LeverType type, Keys keyPos, Keys keyNeg, Keys keyNull, Button btnPos, Button btnNeg, Button btnNull) { Type = type; PositiveDirection = new ManualUserControls(btnPos, keyPos, true); NegativeDirection = new ManualUserControls(btnNeg, keyNeg, false); NullDirection = new ManualUserControls(btnNull, keyNull, null); foreach (var btn in ControlButtons) { btn.Paint += Button_Paint; btn.MouseDown += Button_MouseDown; btn.MouseUp += Button_MouseUp; btn.MouseLeave += Button_MouseLeave; } timer.Tick += Timer_Tick; }
/// <summary> /// Возвращает экземпляр класса рабочей зоны плеча на основе его типа <paramref name="type"/>. /// </summary> /// <returns>Экземпляр класса рабочей зоны плеча</returns> public IWorkspace GetLeverByType(LeverType type) { switch (type) { case LeverType.Horizontal: return(HorizontalLever); case LeverType.Lever1: return(Lever1); case LeverType.Lever2: return(Lever2); default: throw new NotImplementedException(); } }
/// <summary> /// Возвращает наименование подвижного звена робота на русском языке. /// </summary> /// <param name="leverType">Тип звена</param> /// <returns>Наименование подвижного звена робота на русском языке</returns> public static string ToRuString(this LeverType leverType) { if (leverType == LeverType.Horizontal) { return("Каретка робота"); } if (leverType == LeverType.Lever1) { return("Плечо"); } if (leverType == LeverType.Lever2) { return("Предплечье"); } return(""); }
/// <summary> /// Возвращает экземляр класса, реализующего интерфейс <see cref="IRobotLever"/> по заданному /// типу плеча <paramref name="leverType"/>. /// </summary> public IRobotLever GetRobotLeverByType(LeverType leverType) { if (leverType == LeverType.Horizontal) { return(DesignParameters.HorizontalLever); } if (leverType == LeverType.Lever1) { return(DesignParameters.Lever1); } if (leverType == LeverType.Lever2) { return(DesignParameters.Lever2); } throw new NotImplementedException("Нет реализации для заданного плеча робота"); }
/// <summary> /// Устанавливает новое значение для рабочей зоны плеча. /// </summary> /// <param name="type">Тип плеча</param> /// <param name="valueType">Тип значения</param> /// <param name="ab">Новое значение</param> public void SetValue(LeverType type, MovableValueTypes valueType, double ab) { var lever = GetLeverByType(type); switch (valueType) { case MovableValueTypes.Max: lever.ABmax = ab; break; case MovableValueTypes.Min: lever.ABmin = ab; break; case MovableValueTypes.Zero: lever.ABzero = ab; break; default: throw new NotImplementedException(); } }
public void SaveCurrentPosition(LeverType leverType, double currentPosition) { switch (leverType) { case LeverType.Horizontal: Properties.Settings.Default.HorizontalLeverAB = currentPosition; break; case LeverType.Lever1: Properties.Settings.Default.Lever1AB = currentPosition; break; case LeverType.Lever2: Properties.Settings.Default.Lever2AB = currentPosition; break; default: throw new NotImplementedException("Cохранение текущего положения для данного плеча не реализовано"); } Properties.Settings.Default.Save(); }
private void ChangeLeverPosition(LeverType type, long stepsCount) { var lever = Calculation.GetRobotLeverByType(type); var oldValue = lever.AB; Calculation.SetNewLeverPosition(type, stepsCount); UpdateLocation(); var newValue = lever.AB; LeverPositionChanged(this, new LeverPosition(type, newValue)); if (lever.Workspace.ABzero == null) { return; } if (oldValue == lever.Workspace.ABzero || newValue == lever.Workspace.ABzero) { OnZeroPositionChanged(this, new LeverZeroPositionEventArgs(type, newValue == lever.Workspace.ABzero)); } }
/// <summary> /// Возвращает истину если плечо робота типа <paramref name="type"/> /// находится в нулевой точке рабочей зоны плеча. /// </summary> /// <param name="type">Тип плеча</param> /// <returns>Истина, если плечо в нулевой точке</returns> public bool IsOnZeroPosition(LeverType type) { var lever = Calculation.GetRobotLeverByType(type); return(lever.Workspace.ABzero == lever.AB); }
/// <summary> /// Предоставляет класс содержащий данные об одном шаге в сценарии. /// </summary> /// <param name="leverType">Тип плеча робота</param> public LeverScriptPosition(LeverType leverType) { LeverType = leverType; }
/// <summary> /// Возвращает строку, представляющую текущий объект. /// </summary> /// <returns>Строка, представляющая текущий объект.</returns> public override string ToString() { return(string.Format("{0}: {1} ---> {2}", LeverType.ToRuString(), From, To)); }
/// <summary> /// Служит хэш-функцией по умолчанию /// </summary> /// <returns>Хэш-код для текущего объекта</returns> public override int GetHashCode() { return(From.GetHashCode() ^ To.GetHashCode() ^ LeverType.GetHashCode()); }
/// <summary> /// Возвращает количество импульсов для достижения положения нулевой точки /// плеча <paramref name="leverType"/>. /// </summary> public long CalculateStepsToLeverZero(LeverType leverType) { return(PulseCalculation.GetPulsesCountToZeroValue(GetRobotLeverByType(leverType))); }
/// <summary> /// Предоставляет класс, содержащий данные о событии окончания движения плеча робота. /// </summary> /// <param name="leverType">Тип плеча</param> /// <param name="stepsCount">Количество шагов</param> /// <param name="stopReason">Причина окончания движения плеча робота</param> public LeverMovingEndEventArgs(LeverType leverType, long stepsCount, StepperStopReason stopReason) : base(leverType, stepsCount) { StopReason = stopReason; }
/// <summary> /// Предоставляет класс, содержащий данные о количестве шагов шагового двигателя, который управляет плечом. /// </summary> /// <param name="lever">Тип плеча</param> /// <param name="stepsCount">Количество шагов</param> public StepLever(LeverType lever, long stepsCount) { Lever = lever; StepsCount = stepsCount; }
/// <summary> /// Предоставляет класс, содержащий данные о событии изменения нулевого положения плеча робота-манипулятора. /// </summary> /// <param name="leverType">Тип плеча робота-манипулятора</param> /// <param name="isOnZeroPosition">Флаг, который указывает находится ли плечо робота в нулевом положении</param> public LeverZeroPositionEventArgs(LeverType leverType, bool isOnZeroPosition) { LeverType = leverType; IsOnZeroPosition = isOnZeroPosition; }
/// <summary> /// Возвращает количество импульсов для достижения конечного положения плеча <paramref name="leverType"/> /// в зависимости от движения ротора шагового двигателя. /// </summary> public long CalculateStepsByDirection(LeverType leverType, bool isCWDirection) { return(PulseCalculation.GetPulsesCountByDirection(GetRobotLeverByType(leverType), isCWDirection)); }
/// <summary> /// Предоставляет класс содержащий информацию о шаговом двигателе, который приводит в движение плечо /// </summary> /// <param name="type">Тип плеча робота-манипулятора</param> /// <param name="stepper">Экземпляр класса для управления шаговым двигателем</param> public LeverStepper(LeverType type, StepperMotor stepper) { Type = type; Stepper = stepper; }
/// <summary> /// Служит хэш-функцией по умолчанию. /// </summary> /// <returns>Хэш-код указанного объекта</returns> public override int GetHashCode() { return(Position.GetHashCode() ^ LeverType.GetHashCode()); }
/// <summary> /// Предоставляет класс содержащий данные о положении плеча робота-манипулятора. /// </summary> /// <param name="leverType">Тип плеча робота</param> /// <param name="position">Положение плеча робота.</param> public LeverPosition(LeverType leverType, double position) { LeverType = leverType; Position = position; }
/// <summary> /// Возвращает количество импульсов для достижения положения <paramref name="to"/> из положения <paramref name="from"/> /// плеча <paramref name="leverType"/>. /// </summary> public long CalculateSteps(LeverType leverType, double from, double to) { return(PulseCalculation.GetPulsesCount(GetRobotLeverByType(leverType), from, to)); }
/// <summary> /// Предоставляет данные собитий по изменению параметров рабочей зоны плеча. /// </summary> /// <param name="leverType">Тип плеча</param> /// <param name="valueType">Тип изменяемого значения</param> public EditWorkspaceEventArgs(LeverType leverType, MovableValueTypes valueType) { LeverType = leverType; ValueType = valueType; }
/// <summary> /// Возвращает новое положения плеча <paramref name="leverType"/> исходя из текущего положения и /// количества импульсов <paramref name="stepsCount"/>. /// </summary> public double GetNewLeverPosition(LeverType leverType, long stepsCount) { return(PulseCalculation.GetNewAB(GetRobotLeverByType(leverType), stepsCount)); }
/// <summary> /// Предоставляет класс, связывающий тип плеча с шаговым двигателем, которое его /// перемещает и номерами выводов порта для управления ШД. /// </summary> /// <param name="type">Тип плеча</param> /// <param name="pinType">Тип вывода на драйвере</param> /// <param name="stepper">Объект шагового двигателя</param> public LeverStepperSettings(LeverType type, StepDirPinType pinType, LptStepperMotorControl.Stepper.StepperMotor stepper) { LeverType = type; PinType = pinType; Stepper = stepper; }
/// <summary> /// Возвращает количество импульсов необходимых для достижения положения <paramref name="position"/> /// плеча <paramref name="leverType"/>. /// </summary> public long CalculateStepsToLeverPosition(LeverType leverType, double position) { return(PulseCalculation.GetPulsesCountToAB(GetRobotLeverByType(leverType), position)); }