2017-02-27 02:02:19 +08:00
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
|
|
|
|
|
namespace Plane.Copters
|
|
|
|
|
{
|
|
|
|
|
public interface ICopterActionsSharedByCopterManager
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 断开与飞行器之间的连接。
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns>表示此异步操作的 <see cref="Task"/> 实例。</returns>
|
|
|
|
|
Task DisconnectAsync();
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 切换到 <see cref="CopterState.FloatMode"/> 并向各个控制通道发中间值。飞行器可能受风等外力影响而在水平方向上飘动。
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns>表示此命令异步发送操作的 <see cref="Task"/> 实例。</returns>
|
|
|
|
|
Task FloatAsync();
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 使飞行器飞往水平面上指定的点。
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="lat">纬度。</param>
|
|
|
|
|
/// <param name="lng">经度。</param>
|
|
|
|
|
/// <returns>表示此命令异步发送操作的 <see cref="Task"/> 实例。</returns>
|
|
|
|
|
Task FlyToAsync(double lat, double lng);
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 使飞行器飞往指定的点。
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="lat">纬度。</param>
|
|
|
|
|
/// <param name="lng">经度。</param>
|
|
|
|
|
/// <param name="alt">相对于解锁点的高度。</param>
|
|
|
|
|
/// <returns>表示此命令异步发送操作的 <see cref="Task"/> 实例。</returns>
|
|
|
|
|
Task FlyToAsync(double lat, double lng, float alt);
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 切换到 <see cref="CopterState.HoverMode"/> 并悬停。此操作需要使用 GPS 定位,卫星数不足导致定位不准时非常危险。
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns>表示此命令异步发送操作的 <see cref="Task"/> 实例。</returns>
|
|
|
|
|
Task HoverAsync();
|
|
|
|
|
|
|
|
|
|
Task GuidAsync();
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 降落。此操作需要使用 GPS 定位,卫星数不足导致定位不准时非常危险。
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns>表示此命令异步发送操作的 <see cref="Task"/> 实例。</returns>
|
|
|
|
|
Task LandAsync();
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 锁定飞行器(停止电机转动)。在调用之前务必判断高度及让软件使用者确认!
|
|
|
|
|
/// </summary>
|
|
|
|
|
Task LockAsync();
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 返航。此操作需要使用 GPS 定位,卫星数不足导致定位不准时非常危险。
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns>表示此命令异步发送操作的 <see cref="Task"/> 实例。</returns>
|
|
|
|
|
Task ReturnToLaunchAsync();
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 用指定的值设置通道。
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="ch1">通道 1 的目标值。</param>
|
|
|
|
|
/// <param name="ch2">通道 2 的目标值。</param>
|
|
|
|
|
/// <param name="ch3">通道 3 的目标值。</param>
|
|
|
|
|
/// <param name="ch4">通道 4 的目标值。</param>
|
|
|
|
|
/// <param name="ch5">通道 5 的目标值。</param>
|
|
|
|
|
/// <param name="ch6">通道 6 的目标值。</param>
|
|
|
|
|
/// <param name="ch7">通道 7 的目标值。</param>
|
|
|
|
|
/// <param name="ch8">通道 8 的目标值。</param>
|
|
|
|
|
/// <returns>表示此命令异步发送操作的 <see cref="Task"/> 实例。</returns>
|
|
|
|
|
Task SetChannelsAsync(ushort? ch1 = null, ushort? ch2 = null, ushort? ch3 = null, ushort? ch4 = null, ushort? ch5 = null, ushort? ch6 = null, ushort? ch7 = null, ushort? ch8 = null);
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 用指定的值设置通道和偏航。
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="ch1">通道 1 的目标值。</param>
|
|
|
|
|
/// <param name="ch2">通道 2 的目标值。</param>
|
|
|
|
|
/// <param name="ch3">通道 3 的目标值。</param>
|
|
|
|
|
/// <param name="ch4">通道 4 的目标值。目前此参数无效(20160119)。</param>
|
|
|
|
|
/// <param name="ch5">通道 5 的目标值。</param>
|
|
|
|
|
/// <param name="ch6">通道 6 的目标值。</param>
|
|
|
|
|
/// <param name="ch7">通道 7 的目标值。</param>
|
|
|
|
|
/// <param name="ch8">通道 8 的目标值。</param>
|
|
|
|
|
/// <param name="yaw">偏航的目标值</param>
|
|
|
|
|
/// <returns>表示此命令异步发送操作的 <see cref="Task"/> 实例。</returns>
|
|
|
|
|
Task SetMobileControlAsync(ushort? ch1 = null, ushort? ch2 = null, ushort? ch3 = null, ushort? ch4 = null, ushort? ch5 = null, ushort? ch6 = null, ushort? ch7 = null, ushort? ch8 = null, float? yaw = null);
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 进入紧急悬停状态。此状态需要使用 GPS 定位,卫星数不足导致定位不准时非常危险。
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns>表示此命令异步发送操作的 <see cref="Task"/> 实例。</returns>
|
|
|
|
|
Task StartEmergencyHoverAsync();
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 开始根据各个目标属性(如 <see cref="DesiredChannel1"/>)控制飞行器。
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="millisecondsInterval">发送控制命令的时间间距,若为 null,将由 SDK 决定。</param>
|
|
|
|
|
void StartMobileControl(int? millisecondsInterval = null);
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 停止紧急悬停。
|
|
|
|
|
/// </summary>
|
|
|
|
|
void StopEmergencyHover();
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 停止根据各个目标属性(如 <see cref="DesiredChannel1"/>)控制飞行器。
|
|
|
|
|
/// </summary>
|
|
|
|
|
void StopMobileControl();
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 自动起飞到预定高度。此操作需要使用 GPS 定位,卫星数不足导致定位不准时非常危险。
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns>表示此命令异步发送操作的 <see cref="Task"/> 实例。</returns>
|
|
|
|
|
Task TakeOffAsync();
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 自动解锁并起飞到指定高度。此操作需要使用 GPS 定位,卫星数不足导致定位不准时非常危险。
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="alt">目标高度。</param>
|
|
|
|
|
/// <returns>表示此命令异步发送操作的 <see cref="Task"/> 实例。</returns>
|
|
|
|
|
Task TakeOffAsync(float alt);
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 解锁飞行器。螺旋桨将开始转动,但飞行器不会起飞。
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns>表示此命令异步发送操作的 <see cref="Task"/> 实例。</returns>
|
|
|
|
|
Task UnlockAsync();
|
2017-07-31 01:09:32 +08:00
|
|
|
|
|
|
|
|
|
Task InjectGpsDataAsync(byte[] data, ushort length);
|
|
|
|
|
|
2018-04-30 17:56:45 +08:00
|
|
|
|
Task MissionStartAsync(int hour_utc, int minute_utc, int second_utc, double Missionlng, double Missionlat);
|
2017-07-31 01:09:32 +08:00
|
|
|
|
|
|
|
|
|
|
2017-02-27 02:02:19 +08:00
|
|
|
|
}
|
|
|
|
|
}
|