예제 #1
0
        /// <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;
        }
예제 #2
0
        /// <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;
        }
예제 #3
0
        /// <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;
        }