flyto任务加入ShowLED控制,在飞行过程中开灯或关灯

This commit is contained in:
pxzleo 2017-03-11 15:48:56 +08:00
parent 64b4412ff4
commit a3c00572c2
5 changed files with 21 additions and 15 deletions

View File

@ -184,7 +184,7 @@ namespace Plane.FormationCreator.Formation
var lastSingleCopterInfo = lastTask.SingleCopterInfos.Find(info => info.Copter == copter); var lastSingleCopterInfo = lastTask.SingleCopterInfos.Find(info => info.Copter == copter);
var direction = GeographyUtils.CalcDirection2D(center.Lat, center.Lng, lastSingleCopterInfo.TargetLat, lastSingleCopterInfo.TargetLng); var direction = GeographyUtils.CalcDirection2D(center.Lat, center.Lng, lastSingleCopterInfo.TargetLat, lastSingleCopterInfo.TargetLng);
var targetLatLng = GeographyUtils.CalcLatLngSomeMetersAway2D(lastSingleCopterInfo.TargetLat, lastSingleCopterInfo.TargetLng, (float)GeographyUtils.RadToDeg(direction), 5); var targetLatLng = GeographyUtils.CalcLatLngSomeMetersAway2D(lastSingleCopterInfo.TargetLat, lastSingleCopterInfo.TargetLng, (float)GeographyUtils.RadToDeg(direction), 5);
var newSingleCopterInfo = FlightTaskSingleCopterInfo.CreateForFlyToTask(copter, targetLatLng.Item1, targetLatLng.Item2, lastSingleCopterInfo.TargetAlt); var newSingleCopterInfo = FlightTaskSingleCopterInfo.CreateForFlyToTask(copter, targetLatLng.Item1, targetLatLng.Item2, lastSingleCopterInfo.TargetAlt,true);
newSingleCopterInfo.TargetHeading = lastSingleCopterInfo.TargetHeading; newSingleCopterInfo.TargetHeading = lastSingleCopterInfo.TargetHeading;
newSingleCopterInfo.CenterDirectionDeg = lastSingleCopterInfo.TargetHeading; newSingleCopterInfo.CenterDirectionDeg = lastSingleCopterInfo.TargetHeading;
newTask.SingleCopterInfos.Add(newSingleCopterInfo); newTask.SingleCopterInfos.Add(newSingleCopterInfo);
@ -265,7 +265,7 @@ namespace Plane.FormationCreator.Formation
{ {
var copter = copters[i]; var copter = copters[i];
var singleCopterInfoObj = singleCopterInfos[i]; var singleCopterInfoObj = singleCopterInfos[i];
var newSingleCopterInfo = FlightTaskSingleCopterInfo.CreateForFlyToTask(copter, new LatLng((double)singleCopterInfoObj.latOffset, (double)singleCopterInfoObj.lngOffset), (float)singleCopterInfoObj.targetAlt); var newSingleCopterInfo = FlightTaskSingleCopterInfo.CreateForFlyToTask(copter, new LatLng((double)singleCopterInfoObj.latOffset, (double)singleCopterInfoObj.lngOffset), (float)singleCopterInfoObj.targetAlt,(bool)singleCopterInfoObj.showLED);
newTask.SingleCopterInfos.Add(newSingleCopterInfo); newTask.SingleCopterInfos.Add(newSingleCopterInfo);
} }
Tasks.Add(newTask); Tasks.Add(newTask);
@ -506,7 +506,8 @@ namespace Plane.FormationCreator.Formation
{ {
latOffset = offset.Lat, latOffset = offset.Lat,
lngOffset = offset.Lng, lngOffset = offset.Lng,
targetAlt = info.TargetAlt targetAlt = info.TargetAlt,
showLED = info.FlytoShowLED
}; };
}) })
}; };

View File

@ -9,25 +9,35 @@ namespace Plane.FormationCreator.Formation
{ {
public partial class FlightTaskSingleCopterInfo public partial class FlightTaskSingleCopterInfo
{ {
public static FlightTaskSingleCopterInfo CreateForFlyToTask(ICopter copter, double targetLat, double targetLng, float targetAlt) public static FlightTaskSingleCopterInfo CreateForFlyToTask(ICopter copter, double targetLat, double targetLng, float targetAlt,bool showLED)
{ {
var info = new FlightTaskSingleCopterInfo(copter) var info = new FlightTaskSingleCopterInfo(copter)
{ {
TargetLat = targetLat, TargetLat = targetLat,
TargetLng = targetLng, TargetLng = targetLng,
TargetAlt = targetAlt TargetAlt = targetAlt,
FlytoShowLED= showLED
}; };
return info; return info;
} }
public static FlightTaskSingleCopterInfo CreateForFlyToTask(ICopter copter, LatLng latLngOffset, float targetAlt) public static FlightTaskSingleCopterInfo CreateForFlyToTask(ICopter copter, LatLng latLngOffset, float targetAlt, bool showLED)
{ {
var info = new FlightTaskSingleCopterInfo(copter) var info = new FlightTaskSingleCopterInfo(copter)
{ {
LatLngOffset = latLngOffset, LatLngOffset = latLngOffset,
TargetAlt = targetAlt TargetAlt = targetAlt,
FlytoShowLED = showLED
}; };
return info; return info;
} }
private bool _FlytoShowLED = true;
public bool FlytoShowLED
{
get { return _FlytoShowLED; }
set { Set(nameof(FlytoShowLED), ref _FlytoShowLED, value); }
}
} }
} }

View File

@ -19,12 +19,6 @@ namespace Plane.FormationCreator.Formation
} }
private bool _FlytoShowLED = true;
public bool FlytoShowLED
{
get { return _FlytoShowLED; }
set { Set(nameof(FlytoShowLED), ref _FlytoShowLED, value); }
}
private bool _VerticalLift = false; private bool _VerticalLift = false;
@ -531,7 +525,7 @@ namespace Plane.FormationCreator.Formation
tasks[i] = await Task.Factory.StartNew(async () => tasks[i] = await Task.Factory.StartNew(async () =>
{ {
var internalInfo = info; var internalInfo = info;
await info.Copter.SetShowLEDAsync(FlytoShowLED); await info.Copter.SetShowLEDAsync(info.FlytoShowLED);
//if (i1 > 0) //if (i1 > 0)
//{ //{
// var prevCopter = infos[i1 - 1].Copter; // var prevCopter = infos[i1 - 1].Copter;

View File

@ -225,7 +225,7 @@ namespace Plane.FormationCreator.Formation
if (info.takeOffStage == 1) if (info.takeOffStage == 1)
{ {
await info.Copter.GuidAsync(); await info.Copter.GuidAsync();
await info.Copter.SetShowLEDAsync(false); await info.Copter.SetShowLEDAsync(copterNextTask.FlytoShowLED );
for (int j = 0; j < 3; j++) for (int j = 0; j < 3; j++)
{ {
await info.Copter.FlyToAsync(copterNextTask.TargetLat, copterNextTask.TargetLng, takeOffAlt); await info.Copter.FlyToAsync(copterNextTask.TargetLat, copterNextTask.TargetLng, takeOffAlt);

View File

@ -108,6 +108,7 @@
<TextBlock Grid.Row="2" Text="开灯: " /> <TextBlock Grid.Row="2" Text="开灯: " />
<CheckBox Grid.Row="2" Grid.Column="1" <CheckBox Grid.Row="2" Grid.Column="1"
DataContext="{Binding ModifyingSingleCopterInfo}"
IsChecked="{Binding FlytoShowLED}" /> IsChecked="{Binding FlytoShowLED}" />
</Grid> </Grid>