/// <summary> /// Предоставляет класс, отвечающий за перемещение плеч робота-манипулятора. /// </summary> /// <param name="port">Экземпляр класса дляработы с портом</param> /// <param name="levers">Коллекция экземпляров класса <see cref="LeverStepper"/>, содержащий тип плеча и ШД, отвечающий за его перемещение</param> public LeverMovement(LPTPort port, LeverStepper[] levers) { this.port = port; this.levers = levers; this.worker.OnStart += Worker_OnStart; this.worker.OnStop += Worker_OnStop; this.worker.Elapsed += Worker_Elapsed; }
/// <summary> /// Предоставляет класс для управления шаговым двигателем. /// </summary> /// <param name="port">Порт</param> /// <param name="pins">Управляющие пины</param> /// <param name="cwDirectionIsLogicalZero">Флаг, указывающий на направление движения ротора /// шагового двигателя в зависимости от поданного сигнала на пин DIR. /// Движение ротора по часовой стрелке при логической единице (False) или нуле (True).</param> public StepperMotor(LPTPort port, StepDirPin pins, bool cwDirectionIsLogicalZero = true) { CWDirectionIsLogicalZero = cwDirectionIsLogicalZero; Port = port; Pins = pins; this.stopwatch = new MicroStopwatch(); Acceleration = 1; }
/// <summary> /// Предоставляет класс, содержащий информацию об управляющих PIN для протокола STEP/DIR/ENABLE. /// </summary> /// <param name="step">Номер управляющего PIN для сигнала STEP</param> /// <param name="dir">Номер управляющего PIN для сигнала DIR</param> /// <param name="enable">Номер управляющего PIN для сигнала ENABLE</param> public StepDirPin(int step, int dir, int enable) { if (step == dir || step == enable || dir == enable) { throw new Exception("Управляющие PIN не могут повторяться"); } // Проверяет, являются ли заданные PIN управляющими. foreach (var pin in new[] { step, dir, enable }) { if (!LPTPort.IsOutputPin(pin)) { throw new Exception("PIN с номером " + pin + " не является PIN вывода"); } } this.Step = step; this.Dir = dir; this.Enable = enable; }