初步支持wifi通讯

This commit is contained in:
xu 2020-03-03 11:21:56 +08:00
parent 21d9c121f5
commit 0d1f38f27a
5 changed files with 162 additions and 38 deletions

View File

@ -130,5 +130,9 @@ namespace Plane.Copters
/// </summary>
/// <returns>表示此命令异步发送操作的 <see cref="Task"/> 实例。</returns>
Task StopPairingAsync();
Task DoCommandAsync(int actionid, float p1, float p2, float p3, float p4, float p5, float p6, float p7);
}
}

View File

@ -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();
}
}
/// <summary>
@ -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
/// <returns></returns>
public async Task<int> 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();
}
}
/// <summary>
@ -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 ();
}
}
/// <summary>
/// 获取飞机版本
@ -673,7 +707,11 @@ namespace Plane.CommunicationManagement
await WriteCommPacketAsync((short)copterId, MavComm.COMM_DOWNLOAD_COMM, packet, batchPacket).ConfigureAwait(false);
}
else
{
Windows.Messages.Message.Show($"未开发完成!!");
}
}
/// <summary>
/// 降落
@ -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();
}
}
/// <summary>
@ -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();
}
}
/// <summary>
@ -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);
}
}
}
/// <summary>
@ -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();
}
}
/// <summary>
@ -774,12 +837,21 @@ namespace Plane.CommunicationManagement
/// <returns></returns>
public async Task FloatAsync(IEnumerable<ICopter> 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();
}
}
/// <summary>
@ -789,12 +861,21 @@ namespace Plane.CommunicationManagement
/// <returns></returns>
public async Task DoStartPreflightCompassAsync(IEnumerable<ICopter> 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);
}
}
/// <summary>
@ -804,16 +885,24 @@ namespace Plane.CommunicationManagement
/// <returns></returns>
public async Task DoNextPreflightCompassAsync(IEnumerable<ICopter> 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($"未开发完成!!");
}
}
/// <summary>
@ -823,12 +912,21 @@ namespace Plane.CommunicationManagement
/// <returns></returns>
public async Task DoCalibrationCompassAsync(IEnumerable<ICopter> 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);
}
}
/// <summary>

View File

@ -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);
}
}
}

View File

@ -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。

View File

@ -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()
{