diff --git a/PlaneGcsSdk.Contract_Shared/Copters/ICopterActions.cs b/PlaneGcsSdk.Contract_Shared/Copters/ICopterActions.cs
index d6ec450..3fdf0c9 100644
--- a/PlaneGcsSdk.Contract_Shared/Copters/ICopterActions.cs
+++ b/PlaneGcsSdk.Contract_Shared/Copters/ICopterActions.cs
@@ -130,5 +130,9 @@ namespace Plane.Copters
///
/// 表示此命令异步发送操作的 实例。
Task StopPairingAsync();
+
+
+ Task DoCommandAsync(int actionid, float p1, float p2, float p3, float p4, float p5, float p6, float p7);
+
}
}
diff --git a/PlaneGcsSdk_Shared/CommunicationManagement/CommModuleGenerateMavLink.cs b/PlaneGcsSdk_Shared/CommunicationManagement/CommModuleGenerateMavLink.cs
index 0ea4a46..cd58d36 100644
--- a/PlaneGcsSdk_Shared/CommunicationManagement/CommModuleGenerateMavLink.cs
+++ b/PlaneGcsSdk_Shared/CommunicationManagement/CommModuleGenerateMavLink.cs
@@ -19,7 +19,7 @@ namespace Plane.CommunicationManagement
private bool starttime = false;
private bool rtcm_run = false;
//是否使用专用传输模块
- private bool UseTransModule = true;
+ public bool UseTransModule = true;
private byte[] SetChannels(ushort? ch1 = null, ushort? ch2 = null, ushort? ch3 = null, ushort? ch4 = null, ushort? ch5 = null, ushort? ch6 = null, ushort? ch7 = null, ushort? ch8 = null)
{
@@ -493,7 +493,10 @@ namespace Plane.CommunicationManagement
await WriteCommPacketAsync(copterId, MavComm.COMM_DOWNLOAD_COMM, data, batchPacket).ConfigureAwait(false);
}
else
- Windows.Messages.Message.Show($"未开发完成!!");
+ {
+ foreach (var vcopter in copters)
+ await vcopter.UnlockAsync();
+ }
}
///
@@ -516,7 +519,15 @@ namespace Plane.CommunicationManagement
});
}
else
- Windows.Messages.Message.Show($"未开发完成!!");
+ {
+ Task.Run(async () =>
+ {
+ foreach (var vcopter in copters)
+ await vcopter.LEDAsync();
+ });
+
+ }
+
}
@@ -542,7 +553,8 @@ namespace Plane.CommunicationManagement
}
else
{
- Windows.Messages.Message.Show($"未开发完成!!");
+ foreach (var vcopter in copters)
+ await vcopter.SetParamAsync(paramname, value);
return 0;
}
}
@@ -554,11 +566,11 @@ namespace Plane.CommunicationManagement
///
public async Task SetMultipleParamAsync(params string[] param)
{
+ if (param.Length % 2 == 1)
+ return 0;
if (UseTransModule)
{
- if (param.Length % 2 == 1)
- return 0;
-
+
byte[] packet = null;
int packetNum = 0;
for (int i = 0; i < param.Length; i += 2)
@@ -574,7 +586,20 @@ namespace Plane.CommunicationManagement
}
else
{
- Windows.Messages.Message.Show($"未开发完成!!");
+ byte[] packet = null;
+ int packetNum = 0;
+ for (int i = 0; i < param.Length; i += 2)
+ {
+ string paramname = param[i];
+ float value = float.Parse(param[i + 1]);
+ // foreach (var vcopter in Copters )
+ // await vcopter.SetParamAsync(paramname, value);
+
+ }
+
+
+
+
return 0;
}
}
@@ -628,7 +653,11 @@ namespace Plane.CommunicationManagement
await WriteCommPacketAsync(copterId, MavComm.COMM_DOWNLOAD_COMM, data, batchPacket).ConfigureAwait(false);
}
else
- Windows.Messages.Message.Show($"未开发完成!!");
+ {
+ foreach (var vcopter in copters)
+ await vcopter.TakeOffAsync();
+
+ }
}
///
@@ -648,11 +677,16 @@ namespace Plane.CommunicationManagement
await WriteCommPacketAsync((short)copterId, MavComm.COMM_DOWNLOAD_COMM, packet, batchPacket).ConfigureAwait(false);
}
else
- Windows.Messages.Message.Show($"未开发完成!!");
+ {
+ foreach (var vcopter in copters)
+ await vcopter.ReturnToLaunchAsync ();
+
+ }
+
}
-
+
///
/// 获取飞机版本
@@ -673,7 +707,11 @@ namespace Plane.CommunicationManagement
await WriteCommPacketAsync((short)copterId, MavComm.COMM_DOWNLOAD_COMM, packet, batchPacket).ConfigureAwait(false);
}
else
+ {
+
Windows.Messages.Message.Show($"未开发完成!!");
+ }
+
}
///
/// 降落
@@ -691,7 +729,12 @@ namespace Plane.CommunicationManagement
await WriteCommPacketAsync((short)copterId, MavComm.COMM_DOWNLOAD_COMM, packet, batchPacket).ConfigureAwait(false);
}
else
- Windows.Messages.Message.Show($"未开发完成!!");
+ {
+ foreach (var vcopter in copters)
+ await vcopter.LandAsync();
+
+ }
+
}
///
@@ -715,7 +758,12 @@ namespace Plane.CommunicationManagement
await WriteCommPacketAsync((short)copterId, MavComm.COMM_DOWNLOAD_COMM, data, batchPacket).ConfigureAwait(false);
}
else
- Windows.Messages.Message.Show($"未开发完成!!");
+ {
+ foreach (var vcopter in copters)
+ await vcopter.LockAsync();
+
+ }
+
}
///
@@ -741,7 +789,17 @@ namespace Plane.CommunicationManagement
await WriteCommPacketAsync(copterId, MavComm.COMM_DOWNLOAD_COMM, data, batchPacket);
}
else
- Windows.Messages.Message.Show($"未开发完成!!");
+ {
+ foreach (var vcopter in copters)
+ {
+ await vcopter.MotorTestAsync(1);
+ await vcopter.MotorTestAsync(2);
+ await vcopter.MotorTestAsync(3);
+ await vcopter.MotorTestAsync(4);
+ }
+
+ }
+
}
///
@@ -764,7 +822,12 @@ namespace Plane.CommunicationManagement
await WriteCommPacketAsync((short)copterId, MavComm.COMM_DOWNLOAD_COMM, data, batchPacket).ConfigureAwait(false);
}
else
- Windows.Messages.Message.Show($"未开发完成!!");
+ {
+ foreach (var vcopter in copters)
+ await vcopter.HoverAsync();
+
+ }
+
}
///
@@ -774,12 +837,21 @@ namespace Plane.CommunicationManagement
///
public async Task FloatAsync(IEnumerable copters = null)
{
- short copterId = 0;
- byte[] batchPacket = null;
- GetCopterIds(copters, out copterId, out batchPacket);
+ if (UseTransModule)
+ {
+ short copterId = 0;
+ byte[] batchPacket = null;
+ GetCopterIds(copters, out copterId, out batchPacket);
- byte[] packet = SetModeAsync(FlightMode.ALT_HOLD);
- await WriteCommPacketAsync(copterId, MavComm.COMM_DOWNLOAD_COMM, packet, batchPacket).ConfigureAwait(false);
+ byte[] packet = SetModeAsync(FlightMode.ALT_HOLD);
+ await WriteCommPacketAsync(copterId, MavComm.COMM_DOWNLOAD_COMM, packet, batchPacket).ConfigureAwait(false);
+ }
+ else
+ {
+ foreach (var vcopter in copters)
+ await vcopter.FloatAsync();
+
+ }
}
///
@@ -789,12 +861,21 @@ namespace Plane.CommunicationManagement
///
public async Task DoStartPreflightCompassAsync(IEnumerable copters = null)
{
- short copterId = 0;
- byte[] batchPacket = null;
- GetCopterIds(copters, out copterId, out batchPacket);
+ if (UseTransModule)
+ {
+ short copterId = 0;
+ byte[] batchPacket = null;
+ GetCopterIds(copters, out copterId, out batchPacket);
- byte[] packet = DoCommandAsync(MAVLink.MAV_CMD.PREFLIGHT_CALIBRATION, 0, 0, 0, 0, 1, 0, 0);
- await WriteCommPacketAsync(copterId, MavComm.COMM_DOWNLOAD_COMM, packet, batchPacket).ConfigureAwait(false);
+ byte[] packet = DoCommandAsync(MAVLink.MAV_CMD.PREFLIGHT_CALIBRATION, 0, 0, 0, 0, 1, 0, 0);
+ await WriteCommPacketAsync(copterId, MavComm.COMM_DOWNLOAD_COMM, packet, batchPacket).ConfigureAwait(false);
+ }
+ else
+ {
+ foreach (var vcopter in copters)
+ await vcopter.DoCommandAsync((int)MAVLink.MAV_CMD.PREFLIGHT_CALIBRATION, 0, 0, 0, 0, 1, 0, 0);
+
+ }
}
///
@@ -804,16 +885,24 @@ namespace Plane.CommunicationManagement
///
public async Task DoNextPreflightCompassAsync(IEnumerable copters = null)
{
- short copterId = 0;
- byte[] batchPacket = null;
- GetCopterIds(copters, out copterId, out batchPacket);
+ if (UseTransModule)
+ {
+ short copterId = 0;
+ byte[] batchPacket = null;
+ GetCopterIds(copters, out copterId, out batchPacket);
- MAVLink.mavlink_command_ack_t req = new MAVLink.mavlink_command_ack_t();
- req.command = 1;
- req.result = 1;
+ MAVLink.mavlink_command_ack_t req = new MAVLink.mavlink_command_ack_t();
+ req.command = 1;
+ req.result = 1;
- byte[] packet = GeneratePacket(MAVLink.MAVLINK_MSG_ID_COMMAND_ACK, req);
- await WriteCommPacketAsync(copterId, MavComm.COMM_DOWNLOAD_COMM, packet, batchPacket).ConfigureAwait(false);
+ byte[] packet = GeneratePacket(MAVLink.MAVLINK_MSG_ID_COMMAND_ACK, req);
+ await WriteCommPacketAsync(copterId, MavComm.COMM_DOWNLOAD_COMM, packet, batchPacket).ConfigureAwait(false);
+ }
+ else
+ {
+ Windows.Messages.Message.Show($"未开发完成!!");
+
+ }
}
///
@@ -823,12 +912,21 @@ namespace Plane.CommunicationManagement
///
public async Task DoCalibrationCompassAsync(IEnumerable copters = null)
{
- short copterId = 0;
- byte[] batchPacket = null;
- GetCopterIds(copters, out copterId, out batchPacket);
+ if (UseTransModule)
+ {
+ short copterId = 0;
+ byte[] batchPacket = null;
+ GetCopterIds(copters, out copterId, out batchPacket);
- byte[] packet = DoCommandAsync(MAVLink.MAV_CMD.DO_START_MAG_CAL, 0, 1, 1, 0, 0, 0, 0);
- await WriteCommPacketAsync(copterId, MavComm.COMM_DOWNLOAD_COMM, packet, batchPacket).ConfigureAwait(false);
+ byte[] packet = DoCommandAsync(MAVLink.MAV_CMD.DO_START_MAG_CAL, 0, 1, 1, 0, 0, 0, 0);
+ await WriteCommPacketAsync(copterId, MavComm.COMM_DOWNLOAD_COMM, packet, batchPacket).ConfigureAwait(false);
+ }
+ else
+ {
+ foreach (var vcopter in copters)
+ await vcopter.DoCommandAsync((int)MAVLink.MAV_CMD.DO_START_MAG_CAL, 0, 1, 1, 0, 0, 0, 0);
+
+ }
}
///
diff --git a/PlaneGcsSdk_Shared/Copters/EmptyCopter.Mission.cs b/PlaneGcsSdk_Shared/Copters/EmptyCopter.Mission.cs
index d3371fa..0fa5d5e 100644
--- a/PlaneGcsSdk_Shared/Copters/EmptyCopter.Mission.cs
+++ b/PlaneGcsSdk_Shared/Copters/EmptyCopter.Mission.cs
@@ -24,5 +24,14 @@ namespace Plane.Copters
{
return Task.FromResult(true);
}
+ public async Task DoCommandAsync(int actionid, float p1, float p2, float p3, float p4, float p5, float p6, float p7)
+ {
+
+ await Task.Delay(50).ConfigureAwait(false);
+
+
+ }
+
+
}
}
diff --git a/PlaneGcsSdk_Shared/Copters/FakeCopter.cs b/PlaneGcsSdk_Shared/Copters/FakeCopter.cs
index f750363..ecdb6e0 100644
--- a/PlaneGcsSdk_Shared/Copters/FakeCopter.cs
+++ b/PlaneGcsSdk_Shared/Copters/FakeCopter.cs
@@ -295,6 +295,13 @@ namespace Plane.Copters
}
+ public async Task DoCommandAsync(int actionid, float p1, float p2, float p3, float p4, float p5, float p6, float p7)
+ {
+
+ await Task.Delay(50).ConfigureAwait(false);
+
+
+ }
public Task SetParamAsync(string paramName, float value, int millisecondsTimeout = Timeout.Infinite)
{
// TODO: 林俊清, 20150807, 实现仿真的 SetParamAsync。
diff --git a/PlaneGcsSdk_Shared/Copters/PLCopter.cs b/PlaneGcsSdk_Shared/Copters/PLCopter.cs
index 904c66a..471672e 100644
--- a/PlaneGcsSdk_Shared/Copters/PLCopter.cs
+++ b/PlaneGcsSdk_Shared/Copters/PLCopter.cs
@@ -356,6 +356,12 @@ namespace Plane.Copters
}
}
+
+ public async Task DoCommandAsync(int actionid, float p1, float p2, float p3, float p4, float p5, float p6, float p7)
+ {
+ await _internalCopter.DoCommandAsync((MAVLink.MAV_CMD)actionid, p1, p2, p3, p4, p5, p6, p7).ConfigureAwait(false);
+ }
+
public async Task LEDAsync()
{