public YAxis(IDriveSettingRepository driveSettingRepository, IEmergencyStop emergencyStop, IGpioControllerFacade gpioControllerFacade) : base(driveSettingRepository, emergencyStop) { var drivePins = new DrivePins { EnablePin = 22, DirectionPin = 5, StepPin = 6, ReferenceSwitchPin = 21 }; _stepperDriveControl = new StepperDriveControl(drivePins, gpioControllerFacade); _defaultDriveSetting = new DriveSetting { DriveName = Name, MaxSpeed = new Speed(80, SpeedUnit.MillimeterPerSecond), Acceleration = new Acceleration(80, AccelerationUnit.MillimeterPerSecondSquared), SpindlePitch = new Length(8, LengthUnit.Millimeter), StepsPerRevolution = 400, SoftwareLimitMinus = new Length(0.1, LengthUnit.Millimeter), SoftwareLimitPlus = new Length(141.1, LengthUnit.Millimeter), ReverseDirection = false, ReferenceDrivingDirection = DrivingDirection.Negative, ReferencePosition = new Length(0, LengthUnit.Millimeter), ReferenceDrivingSpeed = new Speed(3.5, SpeedUnit.MillimeterPerSecond) }; }
public AutomaticMode(IShotGlassPositionSettingRepository shotGlassPositionSettingRepository, IXAxis xAxis, IYAxis yAxis, ISpiritDispenserControl spiritDispenserControl, IEmergencyStop emergencyStop) { _currentStatus = new BehaviorSubject <Status>(Status.NotReady); _shotGlassPositionSettingRepository = shotGlassPositionSettingRepository; _X_Axis = xAxis; _Y_Axis = yAxis; _spiritDispenserControl = spiritDispenserControl; _emergencyStop = emergencyStop; _emergencyStop.EmergencyStopPressedChanged += (estop) => CalculateStatuts(); var components = new List <IObservable <Status> >(); components.Add(_X_Axis.GetStatusObservable()); components.Add(_Y_Axis.GetStatusObservable()); components.Add(_spiritDispenserControl.GetStatusObservable()); components.CombineLatest(lastStates => lastStates.All(state => state == Status.Ready)) .Subscribe(areComponentsReady => { _areComponentsReady = areComponentsReady; CalculateStatuts(); }); }
protected AbstractAxis(IDriveSettingRepository driveSettingRepository, IEmergencyStop emergencyStop) { (_driveSettingRepository, _emergencyStop) = (driveSettingRepository, emergencyStop); _stopDrivingTokenSource = new CancellationTokenSource(); _currentStatus = new BehaviorSubject <Status>(emergencyStop.EmergencyStopPressed ? Status.Error : Status.NotReady); _drivingTask = Task.Run(() => { // just to intialize the member, so no exception is thrown when emergency stop is pressed }); _emergencyStop.EmergencyStopPressedChanged += EmergencyStopPressedChanged; }
public SpiritDispenserControl(ISpiritDispenserSettingRepository dispenserSettingRepository, IEmergencyStop emergencyStop, IGpioControllerFacade gpioControllerFacade) { _name = "SpiritDispenser"; (_spiritDispenserSettingRepository, _emergencyStop) = (dispenserSettingRepository, emergencyStop); _spiritSpenderMotor = new LinearMotor(forwardGpioPin: 18, backwardGpioPin: 23, gpioControllerFacade: gpioControllerFacade); _currentStatus = new BehaviorSubject <Status>(emergencyStop.EmergencyStopPressed ? Status.Error : Status.NotReady); CurrentPosition = SpiritDispenserPosition.Undefined; _cancelMovementTokensource = new CancellationTokenSource(); emergencyStop.EmergencyStopPressedChanged += EmergencyStopPressedChanged; }
public TestingController(IDriveSettingRepository driveSettingRepository, IEmergencyStop emergencyStop) { _driveSettingsRepo = driveSettingRepository; _emergencyStop = emergencyStop; }