/// <summary> /// Move Azm axis with fixed or variable rate /// </summary> /// <param name="rate">Rate (deg/sec) or fixed rate * 10</param> /// <param name="isFixed"></param> public void MoveAxis(SlewAxes axis, double rate, bool isFixed = false) { if (!rate.Equals(0)) { if (!isFixed) { this.ti.SlewHighRate(axis, rate); } else { this.ti.SlewFixedRate(axis, (int)rate); } } }
public override void SlewVariableRate(SlewAxes axis, double rate) { var r = (int)Math.Abs(rate*4*3600); var devId = this.GetDeviceId(axis); //var com = new byte[] { (byte)'P', 3, devId, (byte)dir, (byte) (r/256), (byte) (r%256), 0, 0 }; //SendBytes(com); var command = rate < 0 ? DeviceCommands.MC_SET_NEG_VARIABLE_GUIDERATE : DeviceCommands.MC_SET_POS_VARIABLE_GUIDERATE; this.SendCommandToDevice(devId, command, 0, (byte) (r/256), (byte) (r%256)); }
public override void SlewHighRate(SlewAxes axis, double rate) { var r = Math.Abs((long)(rate*3600*1024)); var h = (byte) ((r/0x10000) & 0xff); var m = (byte) ((r/0x100) & 0xff); var l = (byte) (r & 0xff); var devId = this.GetDeviceId(axis); var command = rate < 0 ? DeviceCommands.MC_SET_NEG_VARIABLE_GUIDERATE : DeviceCommands.MC_SET_POS_VARIABLE_GUIDERATE; this.SendCommandToDevice(devId, command, 0, h, m, l); }
public override void SlewFixedRate(SlewAxes axis, int rate) { var r = (byte)Math.Abs(rate); if (r > 9) throw new Exception("Wrong parameter"); var devId = this.GetDeviceId(axis); var command = rate < 0 ? DeviceCommands.MC_SET_NEG_FIXED_GUIDERATE : DeviceCommands.MC_SET_POS_FIXED_GUIDERATE; //var com = new byte[] { (byte)'P', 2, DevId, (byte)dir, (byte)rate, 0, 0, 0 }; this.SendCommandToDevice(devId, command, 0, r); }
private void moveAxis(SlewAxes axis, double rate, bool isFixed = false) { this.CheckPark(); if (this.telescopeMode != TelescopeMode.Normal && this.telescopeMode != TelescopeMode.MovingAxis) return; this.tp.IsAtHome = false; if (axis == SlewAxes.DecAlt) this.tp.MovingAltAxes = !rate.Equals(0); if (axis == SlewAxes.RaAzm) this.tp.MovingAzmAxes = !rate.Equals(0); if (!rate.Equals(0)) { if (axis == SlewAxes.RaAzm) { if (this.telescopeMode != TelescopeMode.MovingAxis) this.moveAxisTrackingMode = this.tp.TrackingMode; this.checkRateTrackingState(); //SetTracking(TrackingMode.Off); //tp.TrackingMode = TrackingMode.Off; } this.two.MoveAxis(axis, rate, isFixed); this.telescopeMode = TelescopeMode.MovingAxis; } else // rate == 0 { if (axis == SlewAxes.RaAzm) { this.setTrackingRate(this.tp.TrackingRate, this.moveAxisTrackingMode); this.tp.TrackingMode = this.moveAxisTrackingMode; } else { this.setTrackingDec(); } if (!this.tp.MovingAltAxes && !this.tp.MovingAzmAxes) { this.telescopeMode = TelescopeMode.Normal; } } }
/// <summary> /// MoveAxis with fixed or variable rate /// </summary> /// <param name="axis">SlewAxes</param> /// <param name="rate">Rate (deg/sec) or fixed rate * 10</param> /// <param name="isFixed"></param> public void MoveAxis(SlewAxes axis, double rate, bool isFixed = false) { lock (_sync) { moveAxis(axis, rate, isFixed); } }