/// <summary> /// Set percentage power of motor and direction. At the end set <code>AngleDrive</code> if rotation success. /// </summary> /// <param name="angle">in degree. 0 = 3 hour. 90 = 6 hour and so on.</param> /// <param name="power">percentage from 0 to 100.</param> /// <seealso cref="Robot.AngleDrive"/> /// <returns></returns> public DriveAnswerCommand Drive(double angle, double power) { DriveAnswerCommand answer = new DriveAnswerCommand(); addRobotTask(DriveAsync(answer, angle, power)); return(answer); }
/// <summary> /// Set percentage power of motor and direction. It send this action to server asynchronously. At the end set <code>AngleDrive</code> if rotation success and fill answer data to <code>destination</code>. /// </summary> /// <param name="destination">Where to fill answer data.</param> /// <param name="angle">in degree. 0 = 3 hour. 90 = 6 hour and so on. 12 hour in up.</param> /// <param name="power">percentage from 0 to 100.</param> /// <seealso cref="Robot.AngleDrive"/> /// <returns></returns> private async Task DriveAsync(DriveAnswerCommand destination, double angle, double power) { await sendCommandAsync(new DriveCommand(power, angle)); var answerCommand = await receiveCommandAsync <DriveAnswerCommand>(); if (answerCommand.SUCCESS) { AngleDrive = AngleUtils.NormalizeDegree(angle); } destination.FillData(answerCommand); }